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

如何在Solana团队场景下实现无需共享密钥的multisig多签功能

Solana 2/2多签跨设备无密钥交互签名流程

前提:已完成多签账户创建,多签签名阈值设为2,两个签名者的公钥已写入多签账户配置,双方各自独立持有自身密钥对,互不掌握对方私钥。

完整操作流程

  • 第一步:交易构造(任意一方均可操作)
    确认交易内容(如SPL Token转账、权限调整等)后,构造未签名交易,将多签账户设为交易的权限主体,同时在交易签名者列表中填入两个签名者的公钥。构造完成后将未签名交易序列化为base64格式的明文报文,该报文不含任何私钥信息,可直接传输给另一方。
    代码示例(@solana/web3.js):
    const unsignedTxBase64 = transaction.serialize({
      requireAllSignatures: false,
      verifySignatures: false
    }).toString('base64')
    
  • 第二步:双方独立校验+签名
    收到未签名交易报文的一方,先将base64报文反序列化为交易对象,逐一校验所有交易字段(转账金额、收款地址、手续费、操作类型等)和预期完全一致后,用本地存储的自身私钥对交易签名,签名完成后将附加了自身签名的交易报文重新转为base64格式,回传给另一方即可。
    代码示例(@solana/web3.js):
    const transaction = Transaction.from(Buffer.from(unsignedTxBase64, 'base64'))
    // 此处自行添加交易字段校验逻辑
    transaction.sign(myKeypair)
    const partiallySignedTxBase64 = transaction.serialize({
      requireAllSignatures: false,
      verifySignatures: false
    }).toString('base64')
    
  • 第三步:合并签名并上链
    收到带部分签名的交易报文后,再次校验交易内容未被篡改,确认无误后用自身私钥完成签名,此时交易已集齐2个符合阈值要求的有效签名,直接广播到Solana链上即可完成全部操作。

CLI操作示例(基于spl-token命令行工具)

如果使用官方CLI工具操作,流程对应命令如下:

  1. 构造未签名交易导出到本地文件
    $ spl-token transfer --multisig <你的多签账户地址> --signer <签名方1公钥> --signer <签名方2公钥> --output unsigned_tx.dat <SPL代币地址> <转账金额> <收款地址>
  2. 任意一方签名后导出带部分签名的文件
    $ spl-token sign unsigned_tx.dat --keypair <你的本地密钥对文件路径> --output partially_signed_tx.dat
  3. 另一方完成签名后直接广播上链
    $ spl-token broadcast partially_signed_tx.dat --keypair <你的本地密钥对文件路径>

注意事项

  • 每次签名前必须完整校验所有交易字段,不要对内容不明的交易报文签名,避免恶意构造的交易造成资产损失
  • 所有交易报文仅包含公钥、交易内容、签名信息,不会泄露私钥,传输过程无需加密,如担心报文被篡改,可双方提前核对交易哈希值一致后再签名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:45:04