6

see some weird txs calling self addresses, for example, the last 2(the first and second tx in this block) transactions, at https://etherscan.io/txs?block=6475251&p=2

also, see a lot of self call txs at this address: https://etherscan.io/txs?a=0xc9d81352fbdb0294b091e51d774a0652ef776d99, the gas price of these self calls are pretty high(~100Gwei), any special reason to make these txs?

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), sure thing that it's not a newbie.

Rob Hitchens
  • 55,151
  • 11
  • 89
  • 145
DiveInto
  • 470
  • 5
  • 16
  • Not sure but I think those might have been made by mistake by someone who is new to this. Probably they were testing some contract on remix and didn't realize that they were deploying it on the main net instead of a test net or ropsten – R.D Oct 08 '18 at 09:14
  • @R.D thanks for your reply, check out my added notes to see why I don't think it's a newbie mistake. – DiveInto Oct 08 '18 at 09:24
  • You're right. And this is where my knowledge ends, sorry XD. It does seem weird that they are just spending gas for nothing and no ethers are being transferred either. – R.D Oct 08 '18 at 09:41

2 Answers2

9

It's about canceling a transaction. More precisely, it's a replacement transaction for something else that was in the pending transaction pool.

Consider a case where a transaction is sent with gasPrice set too low for a miner to include it a block. Given that Ethereum ensures that transactions from the same wallet will be mined in nonce order, everything sent from that account will stall behind the transaction that is priced too low.

There are other reasons for a burning desire to cancel a pending transaction. So, how to do that?

Send another transaction with the same nonce as the underpriced transaction, from the same wallet, and this time price it high enough to be mined into a block quickly.

What would a replacement transaction look like?

You could repeat the original payload with a higher gasPrice, but if you would prefer a simple general-purpose cancelation ... send nothing to yourself and wait for confirmation. In other words, from: me, to: me, value: 0.

In case it isn't clear, this method will not undo mined transactions.

Hope it helps.

Rob Hitchens
  • 55,151
  • 11
  • 89
  • 145
  • if I instead used the same nonce as the underpriced transaction, from: me, value: 0 but had to: them, is there functionally any difference? It's still a cancellation right? – No_name Jan 25 '22 at 17:07
  • 1
    Yes. It's the replacement txn stomping on the original that cancels the original. The replacement does execute. It can be a repeat of the first ("speed up this transaction") or a "do nothing" txn. – Rob Hitchens Jan 27 '22 at 01:45
1

I am not sure but it seems like someone try to double spend attack. To see it I checked these two transactions

Why I thought it's a double spend attack

  • Same nonce for both transactions
  • Gas price is doubled for the second transaction

You may check https://medium.com/@jgm.orinoco/releasing-stuck-ethereum-transactions-1390149f297d to have better understanding of gasPrice and nonce.

Mehmet Doğan
  • 327
  • 1
  • 9
  • thanks, can you explain more on why it may cuz double spend? I see no value(ether) send in these two transactions. – DiveInto Oct 08 '18 at 09:30
  • It does not matter whether msg.value is 0 or not. If the attacker manages to submit it with 0 value it's also possible to submit it via n ETH. It's just my assumption that it is double spend attack. But I am 99.9% sure it is experimental. – Mehmet Doğan Oct 08 '18 at 09:55
  • in my understanding, double spending is only possible if ethereum's implementation has bug, right? – DiveInto Oct 08 '18 at 10:02