[Ethereum] How to generate the right genesis file, using puppeth

genesis

I tried to generate genesis block (POA), and genesis.json don't contain these strings

{
    "sealEngine": "BasicAuthority",
    "options": {
        "authorities": [
            "0xfa0c706a1410c8785baa7498325cf7461b325583",
            "0x7766d151b2c63cb096f624daa091ccb27a2c693f"
        ]
    },

What i did wrong?

What would you like to do? (default = stats)
 1. Show network stats
 2. Configure new genesis
 3. Track new remote server
 4. Deploy network components
> 2

Which consensus engine to use? (default = clique)
 1. Ethash - proof-of-work
 2. Clique - proof-of-authority
> 2

How many seconds should blocks take? (default = 15)
> 2

Which accounts are allowed to seal? (mandatory at least one)
> 0x38e12f4d9713c4c4a86cafba370b43f46e3b4885
> 0x

Which accounts should be pre-funded? (advisable at least one)
> 0xcb367d317496d36b9f3a673b3ba006f4110d57ec
> 0x


Specify your chain/network ID if you want an explicit one (default = random)
> 123

Anything fun to embed into the genesis block? (max 32 bytes)
> TEST

What would you like to do? (default = stats)
 1. Show network stats
 2. Save existing genesis
 3. Track new remote server
 4. Deploy network components
> 2

And genesis.json is:

  "config": {
    "chainId": 123,
    "homesteadBlock": 1,
    "eip150Block": 2,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 3,
    "eip158Block": 3,
    "clique": {
      "period": 2,
      "epoch": 30000
    }
  },
  "nonce": "0x0",
  "timestamp": "0x59e8ce29",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x544553540000000000000000000000000000000000000000000000000000000038e12f4d9713c4c4a86cafba370b43f46e3b48850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x1",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "0000000000000000000000000000000000000000": {
      "balance": "0x1"
    },
    "0000000000000000000000000000000000000001": {
      "balance": "0x1"
    },
    "0000000000000000000000000000000000000002": {
      "balance": "0x1"
    },

Why puppeth put some unknown addresses in genesis file..

Best Answer

You mention sealEngine:BasicAuthority which is coming from here. But this wikipage is neither up-to date nor for Geth (which is what Puppeth use in the background) therefore the PoA consensus algorithm used is not the same.

Geth use "Clique" which repurpose some section like extraData to list authorities, see here.

Concerning the unknown addresses starting from 1, they are built-in contracts (ecrecover,sha256,ripemd160...) you can find more on that here.

Related Topic