ブロック検証
はじめに
Xode Parachain は Polkadot Parachain 3417 として稼働しており(以前は Kusama Parachain 3344 として稼働)、Substrate Parachain Template を使用して構築されています。このドキュメントでは、トランザクションの完全性、コンセンサスの安全性、チェーンのファイナリティを確保するためのセキュリティメカニズムとブロック検証プロセスについて説明します。
ブロック検証
トランザクションの検証
すべてのトランザクションは、ブロックに取り込まれる前に複数の検証ステップを経ます。
- 署名の検証:トランザクションが、Schnorrkel(Sr25519)または Ed25519 の暗号方式を使用して有効なアカウントによって署名されていることを確認します。
- ノンスのチェック:トランザクションのノンスが連続していることを確認し、リプレイ攻撃を防止します。
- 残高の検証:送信者が、手数料を含む実行に必要な十分な残高を持っていることを確認します。
- ウェイトの計算:ブロックの上限を超えないよう、トランザクションにウェイトを割り当てます。
ブロック生成
- ブロックは AURA(Authority Round)メカニズムを使用して生成されます。
- バリデーター主導のブロック生成:バリデーターがラウンドロビン方式で順番にブロックを生成します。
- スロットベースのリーダー選出:バリデーターにはブロックを生成するためのスロットが割り当てられ、AURA プロトコルに基づいてリーダーが選出されます。
- フォーク選択ルール:GHOST ベースのルールを使用して、最長の有効なチェーンが選択されます。
コレーターノードの検証
- コレーター:トランザクションを収集し、エクストリンシックを実行することでブロックを準備します。
- 状態遷移の検証:ランタイムロジックを実行することで、ブロックの結果として得られる状態が有効であることを確認します。
- 実行証明(Proof-of-Execution)の生成:コレーターは、バリデーターによる検証のために状態証明を提出します。
パラチェーンとリレーチェーン間の通信
- コレーターがバリデーターにブロックを提出:ブロックはクロス検証のためにリレーチェーンのバリデーターへ送信されます。
- 候補の検証:Polkadot リレーチェーンのバリデーターが、PVF(Parachain Validation Function)を使用してパラチェーンのブロックを検証します。
- コンセンサスの合意:GRANDPA による合意をもってブロックがファイナライズされます。
詳細情報
https://wiki.polkadot.network/docs/learn-parachains-protocol
