本文へスキップ
このページは英語からの機械翻訳を使用しており、誤りや不明瞭な表現が含まれている可能性があります。最も正確な情報については、オリジナルの英語版をご覧ください。頻繁な更新のため、一部のコンテンツはオリジナルの英語になっている可能性があります。Crowdinでの取り組みに参加して、このページの翻訳改善にご協力ください。 (Crowdin translation page, Contributing guide)

ジェネシスファイル

このページでは、genesis.jsonファイルの詳細について説明する。

ジェネシスのJSONファイル構造

genesis.jsonファイルの構造は以下の表のとおりである。

フィールド名説明
configblokchainのコンフィギュレーション。 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]
Seal65要素のバイト配列[0x0,...,0x0]
CommittedSeal[][]byte[]

上記のデータを持つextraDataは、次のようにして作成される。


concat('0x',Vanity,RLPEncode({Validators,Seal,CommittedSeal}))

ここで、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フィールドはネットワークのガバナンス情報を格納する。

フィールド説明
governanceMode3つのガバナンス・モードのうちの1つ。 [none, single, ballot]
governingNode指定管理ノードのアドレス。 ガバナンスモードがシングルの場合のみ機能する。
rewardIt stores the reward configuration. 報酬](#reward)の項を参照。

Reward

rewardフィールドはネットワークのトークンエコノミーに関する情報を格納する。

フィールド説明
mintingAmountAmount of peb minted when a block is generated. 値にはダブルクォーテーションが必要です。
ratioで区切られた CN/KIR/PoC の分配率。 すべての値の合計は100でなければならない。
useGiniCoeffGINI係数を使うかどうか。
deferredTxFeeブロックのTX料金を分配する方法。
stakingUpdateIntervalステーキング情報を更新するブロックの高さでの時間間隔。
proposerUpdateInterval提案者情報を更新するブロックの高さでの時間間隔。
minimumStakeMinimum amount of peb to join Core Cell Operators.


{
"config": {
"chainId": 2019,
"istanbulCompatibleBlock": 0,
"istanbul": {
"epoch": 604800,
"policy": 2,
"sub": 13
},
"unitPrice": 25000000000,
"deriveShaImpl": 2,
"governance": {
"governingNode": "0x46b0bd6380005952759f605d02a6365552c776f3",
"governanceMode": "single",
"reward": {
"mintingAmount": 6400000000000000000,
"ratio": "50/40/10",
"useGiniCoeff": true,
"deferredTxFee": true,
"stakingUpdateInterval": 86400,
"proposerUpdateInterval": 3600,
"minimumStake": 5000000
}
}
},
"nonce": "0x0",
"timestamp": "0x5c9af60e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f89af85494aeae0ab623d4118ac62a2decc386949b5ce67ce29446b0bd6380005952759f605d02a6365552c776f394699b607851c878e29499672f42a769b71f74be8e94e67598eb5831164574c876994d53f63eab4f36d7b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0",
"gasLimit": "0xe8d4a50fff",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"0000000000000000000000000000000000000400": {
"code": "0x6080604052600436106101505763ffffffff60e00a165627a7a7230582093756fe617053766b158f7c64998c746eb38f0d5431cc50231cc9fb2cd1fd9950029",
"balance": "0x0"
},
"46b0bd6380005952759f605d02a6365552c776f3": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"699b607851c878e29499672f42a769b71f74be8e": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"aeae0ab623d4118ac62a2decc386949b5ce67ce2": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"e67598eb5831164574c876994d53f63eab4f36d7": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

ページを改善してください。