メインコンテンツへスキップ
これは基本的なトランザクション送信パスです — 送信ごとに課金され、信頼性が生のスピードよりも重要な場合(支払い、ウォレット、アプリ)に最適です。取引を行い、最小の遅延を求める場合は、代わりにHelius Senderを使用してください。
独自のトランザクション送信ロジックを構築することは、アプリケーションの最大限のパフォーマンス、コントロール、および信頼性を確保するための最良の方法です。Helius SDKは、開始するための便利なラッパーを提供しますが、本番システムにはこの手動ワークフローの理解と実装を強くお勧めします。 このガイドでは、独自のソリューションを構築するために必要な手順を説明します。

手動ワークフロー

手動でトランザクションを送信するには、次のステップを実行します。
1

初期トランザクションの構築

指示を組み立て、トランザクションに署名してシミュレーションできるようにします。
2

計算ユニットの最適化

トランザクションをシミュレートして、必要な正確なCUを決定し、小さな余裕を追加します。
3

優先手数料の追加

Helius Priority Fee APIから手数料の見積もりを取得し、それをトランザクションに追加します。
4

送信と再送信

最終トランザクションを送信し、確認を処理するための堅牢なポーリング戦略を実装します。
Helius SDKはオープンソースです。sendSmartTransactionメソッドの基礎コードをNode.js SDKおよびRust SDKで確認して、このワークフローの本番レベルの実装を見てください。

1. 初期トランザクションの構築

まず、トランザクションに含めるすべての指示を集めます。それから、TransactionまたはVersionedTransactionオブジェクトを作成します。また、最近のブロックハッシュを取得する必要があります。 この例では、バージョン付きトランザクションを準備しています。この段階で、次のステップでシミュレーションできるようにするために署名する必要があります。

2. 計算ユニット(CU)の使用を最適化

手数料の無駄を避けたり、トランザクションの失敗を避けるために、計算ユニット(CU)制限を可能な限り正確に設定する必要があります。これを実現するには、simulateTransaction RPCメソッドを使用してトランザクションをシミュレートします。 シミュレーション自体が成功するように最初に高いCU制限でシミュレーションし、その後、応答から得られるunitsConsumedを使用して実際の制限を設定するのが最良の方法です。
これで、計算制限を正確に設定する命令が得られました。これを最終トランザクションに追加します。

3. 適切な優先手数料を設定

次に、トランザクションに追加する最適な優先手数料を決定します。現行のネットワーク状況に基づいたリアルタイムの見積もりを得るために、HeliusのPriority Fee APIを使用するのが最良です。 getPriorityFeeEstimate RPCメソッドを呼び出す必要があります。Heliusのステークされた接続を介しての含まれる確率を高めるために、recommended: trueオプションを使用してください。

4. 構築、送信、確認

新しい計算予算命令で最終トランザクションを組み立てて送信し、着地が確認されるまでの堅牢なポーリングメカニズムを実装します。
RPCプロバイダーのデフォルトの再試行ロジック(maxRetriesでのsendTransaction)に依存しないでください。Heliusのステークされた接続があなたのトランザクションをリーダーに直接送信しますが、それでもドロップされる可能性があります。信頼性のある確認のために、独自の再送信ロジックを実装する必要があります。
一般的なパターンは、ブロックハッシュが失効するまで定期的に同じトランザクションを再送信することです。**新しいブロックハッシュを取得する場合にのみトランザクションに再署名してください。**同じブロックハッシュで再署名すると、重複したトランザクションが確認される可能性があります。
この例は基本的なポーリングループを提供します。本番用アプリケーションでは、異なる確認ステータスや潜在的なタイムアウトの処理など、より高度なロジックが必要です。

サンドイッチ攻撃からの保護

統計的にサンドイッチ攻撃に関連付けられたバリデーターからトランザクションをルーティングするため、RPC URLにmev-protect=trueクエリパラメータを追加します。トランザクションロジックを変更する必要はありません。

MEV保護

MEV保護がどのように機能するか、どのメソッドをサポートしているか、そのトレードオフを確認してください。

トランザクションでリベートを獲得する

あなたのトランザクションが生み出すMEVの一部をSOLで自動的に支払われる形で獲得することができます。トランザクションロジックを変更する必要はありません。

トランザクションリベート

sendTransactionコールにパラメータを1つ追加するだけで、SOLリベートの獲得を開始できます。

関連メソッド

sendTransaction

署名済みトランザクションをネットワークに送信

simulateTransaction

トランザクションをシミュレートして計算ユニットを見積もる

getSignatureStatuses

トランザクションの確認ステータスを確認

getLatestBlockhash

トランザクション署名のための最新のブロックハッシュを取得

getBlockHeight

失効チェックのために現在のブロックの高さを取得