странная транзакция, отправляющая самому себе

увидеть некоторые странные транзакции, вызывающие собственные адреса, например, последние 2 транзакции (первая и вторая транзакция в этом блоке) на https://etherscan.io/txs?block=6475251&p=2.

Кроме того, вы можете увидеть много транзакций с самостоятельными вызовами по этому адресу: https://etherscan.io/txs?a=0xc9d81352fbdb0294b091e51d774a0652ef776d99 , цена на газ для этих самовызовов довольно высока (~ 100Gwei), какая-то особая причина для отправки этих транзакций?

Note: I don't think it's txs made by some newbie mistakes cuz I see this address (0xc533a4e3350deecaa0bf0fcba92d4a6138013b18) made a lot of self call txs too, this address arbitrage using smart contract( https://etherscan.io/tx/0x3be6f56a9a74b003c170fa7cc0736e7ae92df271e40a2f3100aeb4ee3705d8ca ) , уверен, что это не новичок.

Не уверен, но я думаю, что это могло быть сделано по ошибке кем-то, кто плохо знаком с этим. Вероятно, они тестировали какой-то контракт на ремиксе и не поняли, что развертывают его в основной сети, а не в тестовой сети или ропстене.
@RD спасибо за ваш ответ, посмотрите мои добавленные заметки, чтобы понять, почему я не думаю, что это ошибка новичка.
Ты прав. На этом мои познания заканчиваются, простите XD. Кажется странным, что они просто тратят газ впустую, и эфиры тоже не передаются.

Ответы (2)

Речь идет об отмене транзакции. Точнее, это замещающая транзакция чего-то другого, что находилось в пуле отложенных транзакций.

Рассмотрим случай, когда транзакция отправляется со gasPriceслишком низким значением, чтобы майнер мог включить ее в блок. Учитывая, что Ethereum гарантирует, что транзакции из одного и того же кошелька будут добыты по nonceпорядку, все , что будет отправлено с этой учетной записи, будет отставать от транзакции со слишком низкой ценой.

Есть и другие причины жгучего желания отменить незавершенную транзакцию. Итак, как это сделать?

Отправьте еще одну транзакцию с той же nonceтранзакцией, что и транзакция с заниженной ценой, из того же кошелька, и на этот раз оцените ее достаточно высоко, чтобы ее можно было быстро добыть в блок.

Как будет выглядеть замещающая транзакция?

Вы можете повторить исходную полезную нагрузку с более высоким значением gasPrice, но если вы предпочитаете простую универсальную отмену... ничего не отправляйте себе и ждите подтверждения. Другими словами, from: me, to: me, value: 0.

Если это неясно, этот метод не отменит транзакцию.

Надеюсь, поможет.

если бы вместо этого я использовал то же самое nonce, что и транзакция с заниженной ценой, from: me, value: 0но имел бы to: themфункциональную разницу? Это все еще отмена, верно?
Да. Это замена txn, наступающая на оригинал, который отменяет оригинал. Замена выполняется . Это может быть повторение первого ("ускорить эту транзакцию") или "ничего не делать" txn.

Я не уверен, но кажется, что кто-то пытается удвоить атаку. Чтобы увидеть это, я проверил эти две транзакции

Почему я подумал, что это атака двойной траты

  • Один и тот же одноразовый номер для обеих транзакций
  • Цена газа удваивается для второй сделки

Вы можете проверить https://medium.com/@jgm.orinoco/releasing-stuck-ethereum-transactions-1390149f297d , чтобы лучше понять gasPrice и nonce.

спасибо, не могли бы вы подробнее объяснить, почему это может привести к двойным расходам? Я не вижу никакого значения (эфира), отправленного в этих двух транзакциях.
Не имеет значения, равно ли msg.value 0 или нет. Если злоумышленнику удастся отправить его со значением 0, его также можно отправить через n ETH. Это просто мое предположение, что это атака с двойной тратой. Но я на 99,9% уверен, что это экспериментально.
в моем понимании, двойная трата возможна только в том случае, если в реализации эфириума есть ошибка, верно?