getBlockCommitment RPCメソッドは、Solana台帳の特定のブロックにおけるコミットメントのステータスに関する情報を提供します。これは、ブロックがどれほど最終確定されたかを理解するために、投票したステークに基づいて役立ちます。
一般的な使用例
- ブロックの最終確定の評価: 異なる確認深度でのステーク重み付き投票を調査することにより、ブロックが達成したコンセンサスレベルを決定します。
- クラスターの健全性の理解:
totalStakeは、ブロックが処理された時点でのクラスター内の総アクティブステークに関する洞察を提供します。 - 高度な確認ロジック: 標準的なコミットメントレベル(
confirmed、finalized)を超えたブロックの最終確定に関して非常に具体的な保証を必要とするアプリケーションのためのものです。
パラメータ
slot(number, required): コミットメント情報を問い合わせるブロックのスロット番号(u64)。
レスポンス
JSON-RPCレスポンスのresultフィールドは、次の内容を含むオブジェクトになります。
commitment(u64整数の配列 | null):- 各整数が特定の確認深度でブロックに投票したクラスターのステーク量(lamports単位)を表すu64整数の配列です。
- 配列は通常、32要素(深度0から
MAX_LOCKOUT_HISTORY、つまり31まで)を持ちます。 - 配列のインデックス
iは、ブロック自体とその子孫に対してiレベル深までの投票を考慮したブロックに投票したステークを示します。 - ブロックが見つからない、またはそのコミットメント情報が利用できない場合(たとえば、古すぎてコミットメントトラッキングからプルーニングされているなど)、このフィールドは
nullになります。
totalStake(number):- このブロックが処理されたスロットでのクラスター内の総アクティブステーク(lamports単位)。この値はブロックにコミットしたステークの割合を計算するために使用されます。
開発者のヒント
commitment配列の解釈:commitment配列は、異なる確認深度でブロックに投票したステーク(lamports単位)を示します。深いインデックスで値が高いほど、より強力な最終確定を意味します。nullcommitment配列は、スロットのデータがノードに存在しない可能性が高いことを示します。それは、スロットが古すぎるかスキップされた可能性があります。iの深さでの最終確定を判断することができます。これは、commitment[i] / totalStake >= 2/3(スーパー多数決)の場合です。
- 高度な使用例:
getBlockCommitmentは精緻な最終確定分析のためのものです。多くの一般的なシナリオでは、標準的なコミットメントレベル(processed、confirmed、またはfinalized)と他のRPCメソッド(例えば、getTransactionやgetBlock)に依存することで十分です。 - コミットメントの理解:
getBlockCommitmentを最大限に活用するためには、Solanaのコミットメントレベルの理解が必要です。Solana Commitment Levelsを参照して詳細情報を確認してください。 - プルーニング: RPCノードが古いコミットメント情報をプルーニングする可能性があり、これにより古いスロットに対して
nullの結果が生じることを認識してください。
例: ブロックコミットメント情報の取得
Devnetでのスロット番号の具体例を用いてコミットメント情報を取得してみましょう。 重要: スロット番号は迅速に処理されます。以下で使用されているスロット番号(250000000)はプレースホルダーです。例を実行する際には、ターゲットネットワーク(例えば、DevnetまたはMainnet)で存在することが確認されている最近のスロットに置き換えてください。最新のスロット番号はSolanaブロックエクスプローラーを使用して確認できます。
注意: 以下の例で使われるYOUR_API_KEYを、実際のHelius APIキーに置き換えてください。