As far as I know, we can deploy a contract with the same address in different chains by using the same private key to create an account in different chains, and using that account to deploy the contract. If that account has made no transactions in any chain, the nonce will be the same and therefore the address of the created account will also be the same.

But this means handling the private key, and that may be considered insecure.

In this EIP (in the "Deployment method" section) a method (called Nick's method, I don't know why) is proposed that allows to create a contract with the same address but guaranteeing that no one know the private key. And while I think I get the heart of the idea, I don't really know how to execute it.

So I'd like to know: How does that method work? What are the detailed steps to use it? And who is Nick?

  • 3
    I'm pretty sure I understand how to do this (though I don't know who Nick is). The basic idea is to make a transaction to deploy the contract and then change the s value to something obviously hand-picked (e.g. aaaaaaa). Then recover the address from that (altered) signature and transfer ether to that account to cover the deployment cost. If that didn't help, could you ask a more specific question? – smarx Mar 22 '18 at 21:49
  • The "something obviously hand-picked" was the part I was missing. And I guess you can change the s value arbitrarily? Thanks! If you make an answer I will accept it. – Franco Victorio Mar 23 '18 at 11:56

On EIP 820 there is a link to Nick's article:

How to send Ether to 11,440 people

So Nick is Nick Johnson, according to his twitter account, he is "Core developer on go-ethereum, lead developer of ENS." The article linked above explains one time addresses, which I think is what you are looking for.

Your Answer

