1

While browsing traces generated by parity I encountered an interesting case:

Contract 0xfec94608dea1f3609e4a93e56e01477d8a86de46 has been created twice.

First time, in the transaction: 0xc0d8d11c5da64e025ac0bb0cc286ede65c2a0b7afeeb455f04d6479cc98edb7a. The transaction failed with Out of gas but the contract was successfuly created.

Second time, the same contract with the same code has been created in transaction: 0x9c3ef34611bd24e254b2b6f339e2f196a57042e8261c069af944248d982c67b4.

From what I understand the contract got the same address because it was created within another contract. The contract address is generated from the creator contract address and its nonce. Since the previous creator contract transaction ended up with Out of gas the nonce was not increased and thus the same contract address.

What really happened? Was the contract really created in the first transaction? Shouldn't it be reverted? Does Etherscan show it correctly? What would happen if in the second transaction the contract is generated with a different code?

EDIT: I reported the issue to the Parity GitHub issues

1

I think you are correct about the nonce and Etherscan is incorrectly stating that B was created twice, only the second one is valid.

In the first transaction (block 4930939) contract A creates a new contract B. But the transaction run out of gas and revert is called, undoing the creation of B and the increment of A's nonce.

The second transaction (block 4932566) contract A again creates B, the transaction completes. And from this block contract B exists.

  • Thanks. I contacted Etherscan and asked for clarification. – Kuba Jan 21 '18 at 20:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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