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.

3
  • 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
    Commented Oct 8, 2018 at 9: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
    Commented Oct 8, 2018 at 9: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
    Commented Oct 8, 2018 at 9:41

2 Answers 2

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.

2
  • 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
    Commented Jan 25, 2022 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. Commented Jan 27, 2022 at 1: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.

3
  • thanks, can you explain more on why it may cuz double spend? I see no value(ether) send in these two transactions.
    – DiveInto
    Commented Oct 8, 2018 at 9: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. Commented Oct 8, 2018 at 9:55
  • in my understanding, double spending is only possible if ethereum's implementation has bug, right?
    – DiveInto
    Commented Oct 8, 2018 at 10:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.