You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用polkadot-js能否将签名与发送交易拆分到不同机器异步执行?

Polkadot-js 拆分签名与交易发送实现方案

你想要的将签名、发送交易拆分到不同机器执行的需求完全可以实现,这属于polkadot-js原生支持的离线签名典型场景,你的思路方向是对的,只需要调整下具体实现逻辑即可:

客户端(浏览器侧)签名逻辑

不要仅提取单独的签名值传输,signAsync 执行完成后交易实例本身已经包含完整的签名、nonce、交易有效期等必要信息,直接序列化后传输即可:

const transfer = api.tx.balances.transfer(BOB, 12345);
// 完成签名,交易实例内部会写入签名、当前nonce、交易生命周期等参数
await transfer.signAsync(alice);
// 序列化为十六进制字符串,可直接通过HTTP传输到服务端
const signedTxHex = transfer.toHex();

服务端发送交易逻辑

不需要自行实现mockSigner,直接将客户端传输过来的已签名交易反序列化后直接发送即可,无需二次签名:

// 接收客户端传来的signedTxHex
const signedTx = api.tx(signedTxHex);
// 直接广播交易到链上
const txHash = await signedTx.send();

注意事项

  • 客户端和服务端对接的链配置必须完全一致,包括SS58地址前缀、runtime版本、交易版本等,否则会出现签名无效的问题
  • 客户端签名时获取的账户nonce必须和链上当前账户的实际nonce匹配,重复nonce会导致交易被链拒绝
  • 交易签名有有效期,默认是256个区块,需要在有效期内完成交易广播,过期后需要重新签名

内容的提问来源于stack exchange,提问作者Joey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:36:04