github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/docs/reference/genesis.md (about)

     1  # Genesis
     2  
     3  A blockchain network stores a series of deterministically agreed upon states indexed by a sequentially increasing number called the block height. 
     4  Once a block is committed at a particular height we can always discover the total state at that height by querying more than 1/3 of the chain.
     5  
     6  The state at block `n+1` is the result of applying the transactions accepted at height `n` on top of the state at height `n`. Following this induction backwards 
     7  we therefore require some initial state. This initial state is called the 'genesis state'. Unlike all subsequent states that are arrived at by the application of consensus 
     8  amongst validators this state is defined a priori and defines the identity of the chain that will be built on top of it. Producing the genesis document is a singular big bang 
     9  event performed by a single party. It cannot occur under consensus because it defines who can participate in consensus at block 1.
    10  
    11  ## GenesisDoc
    12  
    13  In burrow we define the genesis facts in a canonical JSON document called the `GenesisDoc`. The sha256 of this document (with whitespace, as it happens) forms the `GenesisHash` 
    14  which acts as if it were the hash of a virtual zeroth block.
    15  
    16  
    17  | Field | Purpose |
    18  |-------|---------|
    19  | GenesisTime | The time at which the GenesisDoc was produced - the zero time for this chain - also a source of entropy for the GenesisHash |
    20  | ChainName | A human-readable name for the chain - also a source of entropy for the GenesisHash |
    21  | Params | Initial parameters for the chain that control the on-chain governance process |
    22  | GlobalPermissions | The default fall-through permissions for all accounts on the chain, see [permissions](permissions.md) |
    23  | Accounts | The initial EVM accounts present on the chain (see below for more detail) |
    24  | Validators | The initial validators on the chain that together will decide the value of the next state (see below for more detail) |
    25  
    26  Here is an example `genesis.json`:
    27  
    28  ```json
    29  {
    30    "GenesisTime": "2019-05-17T10:33:23.476788642Z",
    31    "ChainName": "BurrowChain_8B1683",
    32    "Params": {
    33      "ProposalThreshold": 3
    34    },
    35    "GlobalPermissions": {
    36      "Base": {
    37        "Perms": "send | call | createContract | createAccount | bond | name | proposal | input | batch | hasBase | hasRole",
    38        "SetBit": "root | send | call | createContract | createAccount | bond | name | proposal | input | batch | hasBase | setBase | unsetBase | setGlobal | hasRole | addRole | removeRole"
    39      }
    40    },
    41    "Accounts": [
    42      {
    43        "Address": "8E32521F19ADC32E88EACA2D23D05A3583D35A55",
    44        "PublicKey": {
    45          "CurveType": "ed25519",
    46          "PublicKey": "CED12BECB1BCB11F8E0268C87E4D5EE07C0224649737AAE3468373BD3F89DA1E"
    47        },
    48        "Amount": 9999999999,
    49        "Name": "Validator_0",
    50        "Permissions": {
    51          "Base": {
    52            "Perms": "bond",
    53            "SetBit": "bond"
    54          }
    55        }
    56      },
    57      {
    58        "Address": "51CA318CD3FB12697DD4FD4435C959BE025CD200",
    59        "PublicKey": {
    60          "CurveType": "ed25519",
    61          "PublicKey": "36F74993A6EACEB134CF02F1176EFC89E85720A5001D8D5AF46A2BCC99FBCD1E"
    62        },
    63        "Amount": 9999999999,
    64        "Name": "Developer_0",
    65        "Permissions": {
    66          "Base": {
    67            "Perms": "send | call | createContract | createAccount | name | proposal | input | hasRole | removeRole",
    68            "SetBit": "send | call | createContract | createAccount | name | proposal | input | hasRole | removeRole"
    69          }
    70        }
    71      }
    72    ],
    73    "Validators": [
    74      {
    75        "Address": "8E32521F19ADC32E88EACA2D23D05A3583D35A55",
    76        "PublicKey": {
    77          "CurveType": "ed25519",
    78          "PublicKey": "CED12BECB1BCB11F8E0268C87E4D5EE07C0224649737AAE3468373BD3F89DA1E"
    79        },
    80        "Amount": 9999999998,
    81        "Name": "Validator_0",
    82        "UnbondTo": [
    83          {
    84            "Address": "8E32521F19ADC32E88EACA2D23D05A3583D35A55",
    85            "PublicKey": {
    86              "CurveType": "ed25519",
    87              "PublicKey": "CED12BECB1BCB11F8E0268C87E4D5EE07C0224649737AAE3468373BD3F89DA1E"
    88            },
    89            "Amount": 9999999998
    90          }
    91        ]
    92      }
    93    ]
    94  }
    95  
    96  ```