ジェネシスファイル
このページでは、genesis.json
ファイルの詳細について説明する。
ジェネシスのJSONファイル構造
genesis.json
ファイルの構造は以下の表のとおりである。
フィールド名 | 説明 |
---|---|
config | blokchainのコンフィギュレーション。 Config](#config) の項を参照。 |
nonce | (非推奨) このフィールドはイーサリアムに由来するが、カイアでは使用されない。 |
timestamp | ブロックが作成されたunix時間。 |
extraData | 署名者の虚栄心とRLPエンコードされたistanbulの追加データを含むデータ結合フィールドで、バリデータリスト、提案者シール、コミットシールを含む。 |
gasLimit | ブロック内で使用されるガスの最大量。 |
difficulty | (非推奨) このフィールドはイーサリアムに由来するが、カイアでは使用されない。 |
mixhash | (非推奨) このフィールドはイーサリアムに由来するが、カイアでは使用されない。 |
coinbase | マイナーが報酬を受け取るアドレス。 このフィールドは Clique コンセンサスエンジンのみに使用される。 |
alloc | 定義済みのアカウント。 |
number | ブロック番号フィールド。 |
gasUsed | ブロックに使用されるガスの量。 |
parentHash | 前のブロックのハッシュ値。 |
Config
config
フィールドはチェーンに関連する情報を格納する。
フィールド名 | 説明 |
---|---|
chainId | これは現在のチェーンを識別し、リプレイ攻撃を防ぐために使用される。 |
istanbulCompatibleBlock | イスタンブール・チェンジが適用されるブロック番号。 |
istanbul, clique | コンセンサスエンジンのタイプ。 |
unitPrice | 単価。 |
deriveShaImpl | トランザクションハッシュとレシートハッシュを生成するメソッドを定義する。 |
governance | ネットワークのガバナンス情報。 ガバナンス](#governance)の項を参照。 |
extraData
フィールド extraData
は提案者のバニティとRLPでエンコードされたistanbulのエクストラデータを連結したものである:
- プロポーザ・バニティは32バイトのデータで、任意のプロポーザ・バニティ・データを含む。
- 残りのデータは、RLPエンコードされたイスタンブールの追加データである:
- バリデータ: バリデータの昇順リスト。
- 捺印:ヘッダーの提案者署名。
genesis.json
の場合は、65個の0x0
で初期化されたバイト配列である。 - CommittedSeal: コンセンサス証明としてのコミットメント署名シールのリスト。
genesis.json
の場合は空の配列である。
例
フィールド | タイプ | 価値 |
---|---|---|
バニティー | 32バイトの16進文字列 | 0x0000000000000000000000000000000000000000000000000000000000000000 |
Validators | []address | [0x48009b4e20ec72aadf306577cbe2eaf54b0ebb16,0x089fcc42fd83baeee4831319375413b8bae3aceb] |
Seal | 65要素のバイト配列 | [0x0,...,0x0] |
CommittedSeal | [][]byte | [] |
上記のデータを持つextraData
は、次のようにして作成される。
ここで、concat
は文字列の連結関数であり、RLPEncode
は与えられた構造体をRLPエンコードされた文字列に変換する関数である。
With this function, the output extraData
for this example is 0x0000000000000000000000000000000000000000000000000000000000000000f86fea9448009b4e20ec72aadf306577cbe2eaf54b0ebb1694089fcc42fd83baeee4831319375413b8bae3acebb8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0.
コンセンサス・エンジン
Kaiaネットワークで利用可能なコンセンサスエンジンは、CliqueとIstanbulである。 各エンジンの説明は以下の通り。
Clique
clique
フィールドには、Proof-Of-Authority (POA) ベースの封印のための設定が格納される。
フィールド | 説明 |
---|---|
period | 連続するブロック間の最小時間間隔(単位:秒)。 |
epoch | 票をリセットし、チェックポイントとしてマークするブロック数。 |
Istanbul
istanbul
フィールドには、イスタンブールを拠点とするシーリングの設定が保存される。
フィールド | 説明 |
---|---|
epoch | チェックポイントとなる票をリセットするブロック数。 |
policy | ブロック提案者の選択方針。 [0:ラウンドロビン、1:スティッキー、2:ウェイトランダム]。 |
sub | 委員会の規模 |
Governance
governance
フィールドはネットワークのガバナンス情報を格納する。
フィールド | 説明 |
---|---|
governanceMode | 3つのガバナンス・モードのうちの1つ。 [none , single , ballot ] |
governingNode | 指定管理ノードのアドレス。 ガバナンスモードがシングル の場合のみ機能する。 |
reward | It stores the reward configuration. 報酬](#reward)の項を参照。 |
Reward
reward
フィールドはネットワークのトークンエコノミーに関する情報を格納する。
フィールド | 説明 |
---|---|
mintingAmount | Amount of peb minted when a block is generated. 値にはダブルクォーテーションが必要です。 |
ratio | で区切られた CN/KIR/PoC の分配率。 すべての値の合計は100でなければならない。 |
useGiniCoeff | GINI係数を使うかどうか。 |
deferredTxFee | ブロックのTX料金を分配する方法。 |
stakingUpdateInterval | ステーキング情報を更新するブロックの高さでの時間間隔。 |
proposerUpdateInterval | 提案者情報を更新するブロックの高さでの時間間隔。 |
minimumStake | Minimum amount of peb to join Core Cell Operators. |
例