メインコンテンツへスキップ
getLatestBlockhash RPC メソッドは、Solanaネットワークでトランザクションを準備して送信するために不可欠です。ノードによって処理された最新のブロックハッシュと、このブロックハッシュが有効である最後のブロックの高さを取得します。ブロックハッシュを効果的に利用し、トランザクションを着地させる方法について詳しくは、包括的なガイドをご覧ください。 Solana上のすべてのトランザクションは、最近のブロックハッシュを参照する必要があります。このメカニズムにより、フォークしたチェーン上でのトランザクションリプレイなどの特定の攻撃を防ぐことができます。 バージョン注意: このメソッドは、solana-core v1.9以降で利用可能です。solana-core v1.8以前のノードでは、代わりにgetRecentBlockhashメソッドを使用してください。

一般的な使用例

  • トランザクション構築: 新しいトランザクションに含めるために、最近のブロックハッシュを取得し、署名して送信します。
  • トランザクションの有効期間管理: 取得したブロックハッシュを参照するトランザクションがどのくらい有効であるかを理解するために、lastValidBlockHeightを使用します。
  • 準備確認: simulateTransactionでも暗黙的に行えますが、アプリケーションはトランザクションをシミュレーションするために手動で準備するためにブロックハッシュを取得することがあります。

リクエストパラメータ

このメソッドは、以下のパラメータを持つ構成オブジェクトをオプションで受け取ることができます。
  • commitment (string, optional): クエリのコミットメントレベルを指定します。省略した場合、ノードのデフォルトのコミットメントが使用されます。トランザクションでは、ブロックハッシュが安定したチェーンからのものであることを保証するために、通常confirmedまたはfinalizedを使用します。
  • minContextSlot (integer, optional): リクエストを評価できる最小スロットを指定します。これにより、クエリが少なくともこのスロットまで処理された元帳の状態に対して行われることが保証されます。

レスポンス構造

JSON-RPCレスポンスのresultフィールドは、RpcResponseオブジェクトになります。このオブジェクト内のvalueフィールドには次があります:
  • blockhash (string): 最新のブロックハッシュを示すbase-58エンコードされた文字列。
  • lastValidBlockHeight (u64): blockhashが失効するブロックの高さ。このblockhashを引用するトランザクションは、ネットワークがこのlastValidBlockHeightに達するまで有効です。
レスポンスには情報が取得されたslotとともに、contextオブジェクトも含まれます。

1. デフォルトのコミットメントで最新のブロックハッシュを取得

この例は、ノードのデフォルトコミットメントを使用して最新のブロックハッシュを取得します。

2. ‘confirmed’コミットメントで最新のブロックハッシュを取得

この例は、confirmedコミットメントを使用して明示的に最新のブロックハッシュを要求します。

開発者向けヒント

  • ブロックハッシュの有効性: ブロックハッシュは約2分間(ただし変動する可能性があります)有効です。トランザクションは、そのlastValidBlockHeightが経過する前にネットワークによって確認される必要があります。最後に取得したハッシュからかなりの時間が経過している場合は、新しいブロックハッシュを取得してください。
  • コミットメントの選択: 重要なトランザクションには、finalizedコミットメントを使用すると、メインチェーンフォークからのブロックハッシュであるという最も強力な保証を提供しますが、やや古い場合があります。confirmedは良いバランスを提供します。コミットメントレベルについて詳しく学びましょう。
  • トランザクション手数料: 適切なトランザクション手数料も計算して含めることを忘れないでください。ブロックハッシュ自体は手数料を決定しません。
  • 再試行ロジック: トランザクションが失効し、そのlastValidBlockHeightが経過した場合は、より最近の新しいブロックハッシュで再署名して再送信する必要があります。
このガイドでは、Solanaネットワークを通じてトランザクションと効果的にやり取りするための礎であるgetLatestBlockhashの使用手順を提供します。

関連メソッド

simulateTransaction

送信前にトランザクションをシミュレート

isBlockhashValid

ブロックハッシュがまだ有効かどうかを確認