実行モデル
このページでは、Kaiaスマートコントラクトの実行モデル、データ構造、ライフサイクルについて説明します。
実行モデル
トランザクションは、Platform API Specificationに記述されているように、プラットフォームAPIによって生成することができる。 These transactions are sent to Consensus Nodes (CNs) to be stored in a block. CNは受信した各トランザクションが有効かどうかをチェックする。 有効なトランザクションはトランザクションプールに保存され、そうでない場合は破棄される。 CNは、トランザクション プール内の現在のブロック内の実行可能なトランザクションを選択し、1つずつ実行する。
トランザクションを実行するために、送信者はトランザクション手数料としていくらかのKAIAを支払わなければならない。 KAIAにおけるこの取引手数料は、ガスと乗数、すなわち_i._、単価に基づいて計算されます。 ガスは計算の基本単位である。 Kaiaノード上で実行される全ての操作は、予め定義された量のガスを消費する。 The exact amount of KLAY required for the transaction is calculated by the formula illustrated in Transaction Fees. 送信者が不十分なガスを伴うトランザクションを送信した場合、トランザクションは失敗する可能性がある。 差出人の口座の残高が不足している場合も、取引に失敗することがある。
トランザクションが正常に実行されると、そのトランザクションは現在のブロックに含まれる。 CNは、ブロック・ガス・リミットまたはブロック・タイム・リミットに達するまでトランザクションを収集する。 その後、CNはトランザクションでブロックを作成する。 このステップでは、ブロック内のいくつかのフィールドを埋める必要がある。 例えば、トランザクション、レシート、ステートなどのハッシュ値を計算しなければならない。 すべての必須フィールドが入力されると、CNはブロックハッシュを生成する。
ブロック生成が完了すると、そのブロックは他のすべてのCNに伝搬される。 他のCNは伝搬されたブロックをすべて検証し、BFTコンセンサス・アルゴリズムを用いて検証結果のコンセンサスを得る。 過半数のCNによって検証プロセスが成功すると、そのブロックはブロック チェーンに保存される。 BFTコンセンサス・アルゴリズムは即時最終性を満たすため、ブロックは最終的であり、削除されることはない。 ブロックがファイナライズされると、そのブロック内のすべてのトランザクションの実行が不可逆的に保証され、要求があればその実行結果を送信者に返すことができる。
ブロック提案者と委員会選出におけるランダム性の強化
カイアは、ブロック提案者と委員会選出プロセスに検証可能なオンチェーンランダムネスを導入する新しいメカニズムを実装した。 このメカニズムには、ブロックヘッダに2つの新しいフィールドが含まれる:randomRevealと
mixHash`である。
このシステムでは、ブロック提案者がランダムな値を生成し、コミットする。 ブロックのrandomReveal
フィールドには、特定の署名スキームを使って生成された提案者の署名が含まれ、提案中の現在のブロック番号に基づいて計算される。 mixHash
は、この明らかにされたランダムな値と他のブロックデータを使って計算され、ネットワークにランダム性の源を作り出す。
ブロック提案者と委員会の選考プロセスは、この生成されたランダム性を利用する。 このランダム性の使用は、選択プロセスをより予測不可能で公平なものにし、ネットワーク全体のセキュリティを高めることを目的としている。 このメカニズムの特別なユースケースの一つは、ブロック提案者が前のブロックが完了するまで非公開でいられるようにすることで、ネットワークに追加のセキュリティレイヤーを追加することである。
実行フローは、各ブロックのランダム性が将来のブロック提案者と委員会の選択に影響を与えるサイクルを作り出す。 これは、検証可能性を維持しながら、これらのプロセスに予測不可能性の要素を導入することになる。
重要なのは、このランダム性が選択プロセスで使用される一方で、ブロックマイニングの終了時には、賭け金額に基づいてステートを直接修正することで報酬が分配されることである。 ランダム性は、どのバリデーターが報酬を受け取る委員会の一員として選ばれるかを決定するものであり、分配される報酬の量を決定するものではない。
このメカニズムには、いくつかのセキュリティ上の配慮が欠かせない:
- リプレイ攻撃を防ぐために、各
randomReveal
値はブロックごとに一意でなければならない。 - ブロック提案者は
mixHash
の操作を防ぐために、正直にrandomReveal
を生成して提出しなければならない。 - 提案者は、他の参加者による予測と潜在的な操作を防ぐために、ブロック提案まで
randomReveal
を秘密にしておかなければならない。 randomReveal
は改ざんを防ぐために適切に署名され、検証されなければならない。
このメカニズムは、検証可能性を維持しながら、ブロック の生成と委員会の選択プロセスに予測不可能性を導入することを目的としている。 このシステムは、ランダム性を強化するための枠組みを提供するが、このランダム性を利用した提案者と委員会選出アルゴリズムの具体的な実装は、ネットワークの発展と改善に伴い、時間の経過とともに進化する可能性があることに注意することが重要である。
取引執行の制限
現在、Kaia MainnetおよびKairos Testnetでは、取引の実行に以下の制限があります:
- 取引のgasPriceを設定することができますが、それはあなたが支払うことができる最大値であることを意味します。 実際のガス料金はネットワークによって決定される。 より詳細な情報は、ガス料金の概要 を参照。
- A block proposer shall not spend more than 250 ms in block execution. 計算コストをご参照ください。
- トランザクションは計算コストの上限を超えて使用することはできない。 計算コスト](./computation-cost.md)をご参照ください。