Skip to main content
这是基础交易发送路径——按次计费,适用于可靠性比速度更重要的场合(支付、钱包、应用)。如果您在交易并需要最低延迟,请改用Helius Sender
构建您自己的交易发送逻辑是确保应用程序获得最大性能、控制和可靠性的最佳方式。虽然Helius SDK提供了方便的入门封装,但强烈建议在生产系统中理解和实施此手动工作流程。 本指南将引导您完成构建自己解决方案的必要步骤。

手动工作流程

手动发送交易涉及以下步骤:
1

构建初始交易

汇集您的指令并签署交易,以便进行模拟。
2

优化计算单元

模拟交易以确定所需的精确CU,并添加一个小缓冲。
3

添加优先费用

从Helius优先费用API获取费用估算并将其添加到您的交易中。
4

发送并重新广播

发送最终交易并实施稳健的轮询策略以处理确认。
Helius SDK是开源的。您可以查看我们Node.js SDKRust SDKsendSmartTransaction方法的底层代码,查看此工作流程的生产级实现。

1. 构建初始交易

首先,收集您想在交易中包含的所有指令。然后,创建一个TransactionVersionedTransaction对象。您还需要获取一个最近的区块哈希。 此示例准备一个版本化交易。在此阶段,您还必须对其进行签名,以便在下一步进行模拟。

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调用中添加一个参数即可开始赚取SOL回扣。

相关方法

sendTransaction

发送签名交易到网络

simulateTransaction

模拟交易以估算计算单元

getSignatureStatuses

检查交易确认状态

getLatestBlockhash

获取用于交易签名的最近区块哈希

getBlockHeight

获取当前区块高度以进行到期检查