# Genesis Contract
The Genesis contract acts as a central registry where Vochain (L2) chains can be registered and parameterized. Most notably, chains may refer to something like Mainnet, Testnet, etc.
The instance of the Genesis contract is resolved from genesis.vocdoni.eth
on the ENS registry.
# Contract
To define the parameters of every Vochain instance, Vocdoni defines the following struct:
struct NamespaceItem {
string genesis;
bytes[] validatorList; // Public key array
address[] oracleList; // Oracles allowed to submit processes to the Vochain and publish results on to the Results contract
}
mapping(uint32 => ChainEntry) internal chains;
uint32 internal chainCount;
Chains are indexed by the chainId
, which is unique.
genesis
provides the data that will be used as the Vochain genesisvalidatorList
contains the public keys of the nodes that can validate Vochain transactionsoracleList
contains the Ethereum addresses of the oracles that can submit processes to the Vochain and relay results to the Results contract
Note: The oracles
field may progressively be deprecated as the platform evolves toward a trustless oracles model. When oracles become trustless, any participant from the network could signal events on-chain, relay signed transactions or publish results following an optimistic rollup approach.