El significado/especificación de "config" en genesis.json

Mientras intentaba buscar en Google, hay algunos archivos de ejemplo de genesis.json para personalizar el parámetro del bloque de génesis en la cadena de bloques privada de Ethereum.

En el archivo, hay una parte llamada "config"

"config": {
    "chainId": 1,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
}

¿Cuál es el significado o la especificación de esos parámetros en "config"? ¿Puedo configurar parte de los parámetros solo si es necesario?

Respuestas (1)

Este es el campo de configuración de la cadena, definido en config.go:

// ChainConfig is the core config which determines the blockchain settings.
//
// ChainConfig is stored in the database on a per block basis. This means
// that any network, identified by its genesis block, can have its own
// set of configuration options.

Los campos disponibles y sus descripciones se muestran a continuación:

type ChainConfig struct {
    ChainId *big.Int `json:"chainId"` // Chain id identifies the current chain and is used for replay protection

    HomesteadBlock *big.Int `json:"homesteadBlock,omitempty"` // Homestead switch block (nil = no fork, 0 = already homestead)
    DAOForkBlock   *big.Int `json:"daoForkBlock,omitempty"`   // TheDAO hard-fork switch block (nil = no fork)
    DAOForkSupport bool     `json:"daoForkSupport,omitempty"` // Whether the nodes supports or opposes the DAO hard-fork

    // EIP150 implements the Gas price changes (https://github.com/ethereum/EIPs/issues/150)
    EIP150Block *big.Int    `json:"eip150Block,omitempty"` // EIP150 HF block (nil = no fork)
    EIP150Hash  common.Hash `json:"eip150Hash,omitempty"`  // EIP150 HF hash (fast sync aid)

    EIP155Block *big.Int `json:"eip155Block,omitempty"` // EIP155 HF block
    EIP158Block *big.Int `json:"eip158Block,omitempty"` // EIP158 HF block

    // Various consensus engines
    Ethash *EthashConfig `json:"ethash,omitempty"`
    Clique *CliqueConfig `json:"clique,omitempty"`
}

La configuración de la cadena principal es la siguiente (nuevamente en config.go ):

MainnetChainConfig = &ChainConfig{
    ChainId:        MainNetChainID,
    HomesteadBlock: MainNetHomesteadBlock,
    DAOForkBlock:   MainNetDAOForkBlock,
    DAOForkSupport: true,
    EIP150Block:    MainNetHomesteadGasRepriceBlock,
    EIP150Hash:     MainNetHomesteadGasRepriceHash,
    EIP155Block:    MainNetSpuriousDragon,
    EIP158Block:    MainNetSpuriousDragon,
    Ethash:         new(EthashConfig),

Con los valores reales definidos en util.go.


Así que respondiendo a tus preguntas...

"config": { "chainId": 1, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }

¿Cuál es el significado o la especificación de esos parámetros en "config"?

  • Chain id- identifica la cadena actual y se utiliza para la protección de reproducción. Debe establecerlo en un valor único para su cadena privada.
  • homesteadBlock- su cadena no se cambiará a Homestead, así que deje esto como 0.
  • eip155Block- su cadena no será difícil de bifurcar para estos cambios, así que déjelo como 0.
  • eip158Block- su cadena no será difícil de bifurcar para estos cambios, así que déjelo como 0.

¿Puedo configurar parte de los parámetros solo si es necesario?

Sí. Cualquiera de los valores que establecen un número de bloque o hash se puede ignorar para una cadena privada; solo son realmente relevantes para la cadena principal pública.

Para obtener más detalles sobre cómo seleccionar una adecuada chainIdpara su cadena privada, lea aquí .
¡Gracias por el consejo, @rustyx! :-) (La fuente original de la lista, antes de que se agregara, es EIP-155: github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md )