getFeeForMessage RPCメソッドを使用すると、特定のトランザクションメッセージを処理するためにネットワークが課す手数料を見積もることができます。これは、ネットワークに提出する前にトランザクションコストを理解するのに役立ちます。
バージョンメモ: このメソッドは、solana-core v1.9以降で利用可能です。古いバージョンでは、getFeesの使用を検討してください。
一般的な使用例
- 手数料見積もり: 特定のメッセージに対する予想されるトランザクション手数料(lamports単位)を決定します。
- コスト最適化: 異なるトランザクション構造や異なる時間での手数料を分析します。
- ユーザーインターフェースの表示: ユーザーがトランザクションに署名して送信する前に、推定トランザクションコストを表示します。
リクエストパラメータ
message(string, required): トランザクションメッセージ、base64エンコード。これはトランザクションをコンパイルすることで取得できます。config(object, optional): 以下のフィールドを持つ設定オブジェクト:commitment(string, optional): 使用するコミットメントレベルを指定します。デフォルトはfinalizedです。minContextSlot(number, optional): リクエストが評価可能な最小スロット。
レスポンス構造
JSON-RPCレスポンスのresultフィールドは、以下の構造を持つオブジェクトです。
context(object):slot(u64): 手数料が評価されたスロット。
value(u64 | null): lamports単位の推定手数料。手数料が決定できない場合(例:メッセージで使用されているブロックハッシュが古すぎるか無効な場合)、これはnullになります。
例
1. 単純な送金メッセージの手数料の見積もり
この例は、単純な送金を作成し、そのメッセージをコンパイルした後、推定手数料を取得する方法を示します。開発者向けヒント
- メッセージの作成:
getFeeForMessageを使用するための鍵は、トランザクションMessageを正しく作成しシリアル化することです。これは手数料支払者、命令、および最近のブロックハッシュを設定することを含みます。 - 最近のブロックハッシュ: メッセージは最近のブロックハッシュで作成されなければなりません。ブロックハッシュが古すぎる場合、レスポンスの
valueはnullになる可能性があります。 - 手数料と優先手数料: このメソッドは基本的なネットワーク手数料を返します。ネットワークが混雑しているときにトランザクションが迅速に処理される可能性を高めるために追加する優先手数料は含まれていません。
getRecentPrioritizationFeesを使用して優先手数料を見積もってください。 - Lamports: 手数料はlamports単位(1 SOL = 1,000,000,000 lamports)で返されます。
- Null値: 手数料に
nullの値がある場合は、メッセージに問題があること(例:無効なブロックハッシュ、誤ったメッセージ)や、そのノードが指定されたコミットメントレベルやスロットで手数料を計算できないことを示している可能性があります。
getFeeForMessage RPCメソッドを利用するための必要な手順を提供します。
関連するメソッド
getLatestBlockhash
メッセージ作成用の最近のブロックハッシュを取得
getRecentPrioritizationFees
迅速な処理のための優先手数料を見積もります