The address a contract lives at is calculated based on constructor arguments (plus some other stuff) and keys can be generated randomly. Has there ever been a collusion? How does the protocol handle value stored at address controlled by both?

1 Answer 1


I had the same question not that long ago and the answer is in EIP-3607.

Ethereum addresses are currently only 160 bits long. This means it is possible to create a collision between a contract account and an Externally Owned Account (EOA) using an estimated 2**80 computing operations, which is feasible now given a large budget (ca. 10 billion USD). The fix in this EIP prevents the worst possible attack, where a safe looking contract (e.g. a token wrapper or an AMM-type contract) is deployed to attract user funds, which can then be spent using the EOA key for the same address.

I am not aware of any precedent on that matter, but maybe someone else may know of one. So yes, it's theoretically possible.. but EIP-3607 evicts tx from accounts that do have deployed code, so, technically, no EOA is allowed to act on behalf of a CA even if that EOA have all the keys to prove its identity, CA has precedence.

This EIP is already implemented, the check can be found here in go-ethereum.

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.