# Genesis 文件

Genesis 文件 (~/.plugchain/config/genesis.json) 是整个网络初始化的基础,其中包含有关创建Genesis区块的大部分信息(例如ChainID,共识参数,应用程序状态),初始化帐户余额,模块级别的参数,以及验证人信息。 Genesis 文件用于设置plug网络的初始参数,在Genesis文件上建立健全的社会共识对于启动网络至关重要。

账户余额数据是需要通过链下共识获得的,这个过程可能会依赖其他区块链的数据,或者一个代币产生事件。

# 基础参数

  • genesis_time 区块链启动时间
  • chain_id 区块链ID
  • initial_height 区块链初始块高

# 共识参数

  • block
    • max_bytes 区块大小限制。
    • max_gas 区块最大Gas数量,默认值为-1表示无限制。如果累积的Gas超出Gas限制,该交易和之后的交易将执行失败。
    • time_iota_ms 连续块之间的最小时间增量(以毫秒为单位)。
  • evidence 区块内作恶证据的生命周期
    • max_age_num_blocks 最长证据年龄,以区块为单位。
    • max_age_duration 最长证据年龄,以时间为单位。
    • max_bytes 可以在单个块中提交的总存证的最大大小(以字节为单位)。
  • validator 验证人信息
    • pub_key_types 验证人使用的公钥类型。

# 应用参数

  • auth 系统相关的参数

  • bank 账户相关参数

  • crisis 危机模块相关参数

  • distribution 收益分配相关的参数

  • evidence evidence模块相关参数

  • gov 链上治理相关的参数

  • ibc ibc模块相关参数

  • mint 通货膨胀相关的参数

  • params 参数模块相关参数

  • slashing 惩罚机制相关的参数

  • staking 抵押和共识相关的参数

  • transfer ibc transfer模块相关参数

  • upgrade 升级相关的参数

  • vesting 授权模块相关参数

可治理参数详见 治理参数

# Gentxs

Gentxs中包含了创世区块中创建validators的交易集合。Cosmos SDK通过一个gen-tx可以有效的对genesis文件的产生进行管控。gen-tx即Genesis Transaction是经过签名的交易数据,在区块链启动的过程中,这些交易将被执行,然后确定初始验证人集合。 通过提交gen-tx交易,代币的持有者证明了自己愿意参与到这个区块链网络的启动流程中,并且愿意承担潜在的损失。