跳转到内容

加密待处理交易

加密待处理交易允许你提交一笔其 Move 负载(入口函数、参数及相关可执行数据)在 交易处于待处理状态时被加密 的交易——例如当它停留在内存池中并在节点之间传播时.验证者只有在区块确认后准备执行时才会解密负载.与完全明文的负载相比,这减少了观察者能从公开的待处理交易流中获取的信息.

此功能目前已在 开发网(devnet) 上线,测试网(testnet) 支持即将推出,主网(mainnet) 随后跟进.你使用的全节点必须在启用加密提交时通过账本暴露 encryption_key.在没有该密钥的网络或节点上,客户端无法构建加密交易.

加密保护的是在传输过程中以及在待处理阶段静止存储的 负载字节,但交易仍然是一个对链发出的已签名请求.根据配置和负载类型,客户端可能仍可看到诸如发送方、gas 参数、过期时间、签名等元数据,以及——当协议要求时——从负载派生的元数据(例如某些多签或赞助流程中的 声明的入口函数).请将”加密待处理”理解为 负载隐私,而非整笔交易的匿名性.精确的安全模型请参见 AIP-144:加密内存池,底层密码学细节参见 eprint 2025/2032.在协议层面,该功能称为 加密内存池(AIP-144);两个名称指代同一特性.

加密交易需要支付 每 gas 单位至少 200 Octas 的最低 gas 单价(为网络基础最低值的两倍),以补偿验证者的解密开销.SDK 在构建时强制执行该下限;低于该价格的加密提交将被服务器拒绝.

Keyless联邦 Keyless账户抽象 账户无法签署加密交易.该规则在客户端(支持的地方)和服务端均会强制执行.

你可以将加密负载与 无序交易 结合使用,使并行提交者在加密可执行内容的同时使用重放保护 nonce.具体构建选项请参见下方的 TypeScript SDK 页面.

加密待处理交易 保护的是 待处理交易 通往执行途中的交易负载.它与 机密资产 交易无关——后者允许余额和金额在 交易确认后 仍保持隐私.

  • TypeScript SDK —— 使用 options.encrypted 构建(senderAuthenticationKey 为可选项),提交加密构建.
  • 其他 SDK —— 不同版本的支持情况和 API 名称有所不同;请查阅相应 SDK 的更新日志和示例,寻找加密或批量加密交易 API.