概要
getTransfersByAddress は、Helius専用のRPCメソッドで、ウォレットアドレスのために解析された人間が読みやすいトークンとネイティブSOLの転送オブジェクトを返します。これは標準のSolana RPCの一部ではありません。
これは転送活動に焦点を当てているため、完全なトランザクションペイロードの代わりに簡潔な転送記録を返します。各記録は、解析されたオーナーとトークンアカウント、ミント、ロー金額、10進数、UI金額、命令位置、確認ステータスで正規化されているため、Solanaトークン解析を再実装せずに残高移動を調整できます。
このメソッドは、Developerプランまたはそれ以上のプランが必要で、リクエストごとに10クレジットがかかります。
解析された転送オブジェクト
解析されたアカウント、金額、10進数、転送タイプで人間が読みやすい転送記録を返します。
調整準備完了
SOL、WSOL、Token-2022の手数料、ミント、バーン、アカウントオーナーの変更をモデル化し、残高を正確に調整できます。
ミント、時間、金額のフィルタ
ミントアドレス、ブロックタイム範囲、またはロー金額範囲で転送履歴を絞り込みます。
カウンターパーティフィルタ
withおよびdirectionで送信者または受信者による転送をフィルタリングします。使用タイミング
次の場合にgetTransfersByAddressを使用してください:
- 支払いまたは転送の監視のためのウォレット転送履歴
- ポートフォリオ活動とトークン移動分析
- 帳簿および会計のために信頼できる残高調整
- カウンターパーティ固有の転送レポート(誰が何を送受信したか)
- Solanaトークン解析を書かずにノーマライズされたSOL/WSOL、Token-2022の手数料、ミントおよびバーンの処理
getTransactionsForAddressを使用してください。一般的なパターンとして、ここで転送をページングしてから、バッチ処理されたgetTransactionを使用して基になる完全なトランザクションをフェッチします(転送行の完全なトランザクションをフェッチを参照)。
精度と調整
getTransfersByAddressは、帳簿、支払い追跡、ポートフォリオ活動、残高調整のために信頼できる転送履歴を必要とするアプリケーション向けに構築されています。生のトランザクションペイロードを返してすべてのエッジケースをパーサに任せる代わりに、APIは正規化された転送オブジェクトを返します。
応答は、Solanaの履歴を調整するのが難しい一般的な転送ケースを明示的にモデル化します:
- 標準的なSPLトークンとネイティブSOLの転送。
- 保留中の手数料を持つToken-2022の転送は、独立した手数料フィールドを持つ普通の
transfer行として表されます。 - ミントとバーンは、
null送信者または受信者としての転送として表されます。 - SOLの包み込みと解包、その仕組みを表すデフォルトモードで、うるさいライフサイクル行を避けるように設計されています。
- SetAuthorityによるトークンアカウントオーナーの変更。
- Token-2022の保留中の手数料の引き出し。
- 推測されたネット移動に圧縮される代わりに基になる転送記録として返される中間アカウントの流れ。
クイックスタート
リクエストパラメータ
関連付けられたトークンアカウント(ATA)ではなく、ウォレットオーナーアドレスを渡します。APIは、そのウォレットが所有するトークンアカウントの転送活動を見つけます。ベース58のエンコードされたオーナーウォレットアドレス。関連付けられたトークンアカウント(ATA)ではなく、ウォレットオーナーアドレスを渡します。
フィルタリング、ページング、コミットメント、注文、SOL/WSOLの動作のためのオプションの設定オブジェクト。
カウンターパーティアドレスでフィルタリングします。このアドレスへのまたはこのアドレスからの転送のみを返します。
addressに対する転送方向でフィルタリングします。in:addressによって受信された転送out:addressによって送信された転送any: 入出転送
トークンのミントアドレスでフィルタリングします。ネイティブSOLには
So11111111111111111111111111111111111111111、WSOLにはSo11111111111111111111111111111111111111112を使用します。ネイティブSOLとWSOLの表現を制御します。
merged: WSOLはネイティブSOLとして扱われます。ラップおよびアンラップのライフサイクル行は除外され、WSOLのミント値はネイティブSOLのミントに書き換えられます。separate: WSOLは独立したミントとして保持され、ラップおよびアンラップのライフサイクル行が含まれます。
金額、ブロック時間、スロットのための追加フィルタ。
返す転送数の最大値。範囲: 1 から 100。
ページネーションのための前回の応答からのカーソル。
データのコミットメントレベル。
finalizedconfirmed
リクエストが評価できる最小スロット
結果の順序。
desc: 最新から順asc: 最古から順
応答
応答フィールドの詳細
fromUserAccountとtoUserAccountは常に存在します。サイドが存在しない場合、値はnullです。fromTokenAccountとtoTokenAccountは、その行にとって意味がある場合にのみ含まれます。ネイティブSOLの転送には完全に省略されています。- ミント転送は片側です:
fromUserAccountはnullであり、受信者に対するインバウンド転送としてのみ返されます。 - バーン転送は片側です:
toUserAccountはnullであり、バーンオーナーに対するアウトバウンド転送としてのみ返されます。
フィルタ
数値範囲クエリには比較フィルタを使用します。すべての比較フィールドはオプションであり、組み合わせて使用できます。転送タイプ
typeフィールドは、各行で表される転送動作を識別します。
転送タイプと命令
SOLとwSOLの動作
SOLは、Solana上でユーザーの活動にしばしば一緒に現れる2つの形式で存在します:- ネイティブSOLは、チェーンのネイティブ資産です。これはウォレットまたはアカウントに直接lamportsとして存在します。1 SOLは1,000,000,000 lamportsです。
- ラップされたSOL (WSOL, wSOLと書かれることが多い) は、SOLのSPLトークン表現です。これはWSOLミント
So11111111111111111111111111111111111111112を使用し、USDCや他のSPLトークンのようにトークンアカウントに存在します。
getTransfersByAddressはsolMode: "merged"を使用します。このモードでは:
- ネイティブSOLとWSOLは、
So11111111111111111111111111111111111111111によるクエリ時に1つのSOL資産として扱われます。 - WSOL転送行はネイティブSOLのミントに正規化され、SOLの名目での履歴が簡単に調整されます。
- 一般的には、同じオーナーによって制御されるアカウント間の動きを表すため、ラップおよびアンラップのライフサイクル行は除外されます。
- 異なるオーナー間のSOLおよびWSOLの転送は依然として転送として表されます。
CloseAccountから回収された賃料は、アカウントのクローズライフサイクル行が返される場合、ネイティブSOLのunwrap行として表されます。
solMode: "separate"を使用します。このモードでは、WSOLはミントSo11111111111111111111111111111111111111112を保持し、ラップアンラップのレコードはtype: "wrap"またはtype: "unwrap"で返されます。
solMode: "separate"でのWSOLアカウントのクローズでは、WSOLミントのunwrapレコードはSOLとして返された残りのWSOLトークン残高を表します。クローズされたトークンアカウントから返された賃料は、別のネイティブSOL unwrap行として返されます。
Token-2022転送料金
Token-2022のTransferCheckedWithFee命令は、type: "transfer"を使用して1つの転送レコードとして表されます。宛先の金額は、amountに返され、保留中の手数料の詳細はfeeAmountとfeeUiAmountに返されます。
手数料付きの転送では、送信元はamount + feeAmountで引き落とされ、宛先はamountでクレジットされます。
例
USDCでフィルタリング
送信者からの着信転送
金額と時間範囲
ページネーションされたリクエスト
転送行の完全なトランザクションをフェッチ
getTransfersByAddressは、完全なトランザクションペイロードではなく、解析された転送行を返します。各転送の完全なトランザクションが必要な場合は、まず転送をページングし、signatureによって重複を排除し、バッチ処理されたgetTransaction呼び出しで完全なトランザクションをフェッチします。
getTransfersByAddressは複数のオーナーアドレスを跨いでバッチ化できません。1つのオーナーアドレスを一度にクエリしてから、署名によって結果のgetTransactionリクエストをバッチ処理します。単一のトランザクションは複数の転送行を生成する可能性があるため、トランザクションをフェッチする前に常に署名を重複排除してください。
制限
- 失敗したトランザクションはV1には含まれません。
- バランスの変化からのみ推測される隠されたSOLの移動はV1ではサポートされていません。
harvestWithheldTokensToMintは、収集された金額を示さないため、V1ではサポートされていません。- 中間アカウントの流れは削減されません。トランザクションが中間アカウントを介して資金を移動する場合、基になる転送記録が返されます。
- 複数のオーナーアドレスを跨いでのバッチ化はできません。1つのオーナーを一度にクエリします。
次のステップ
getTransactionsForAddress
フィルタリング、並べ替え、トークンアカウントサポートを備えた完全なトランザクション履歴。
APIリファレンス
getTransfersByAddressの完全なリクエストとレスポンススキーマ。
インデックス作成ガイド
移転データを独自のインデックスにバックフィルおよび同期します。
履歴データの概要
すべてのSolana履歴データメソッドを比較します。