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

创建Flow账户时触发「duplicated signature for key」异常求助

Flow平台创建账户时重复签名错误的解决方案

问题背景

刚接触Flow平台,尝试创建账户并部署合约发行代币,使用以下Cadence交易脚本创建账户:

transaction(publicKey: String) {
    prepare(signer: AuthAccount) {
        let account = AuthAccount(payer: signer)
        account.addPublicKey(publicKey.decodeHex())
    }
}

调用Java客户端的createAccount方法时,传入服务账户地址和模拟器公钥,收到错误:

io.grpc.StatusRuntimeException: INTERNAL: duplicated signature for key (address: f8d6e0586b0a20c7, index: 0)

问题原因

代码中对同一个账户的同一密钥同时添加了payload签名和envelope签名,而Flow交易规则明确:当交易的提案者、付款人和签名者为同一账户时,仅需一次签名即可,重复签名会触发平台的重复签名校验错误。

解决方案

移除代码中的addPayloadSignature调用,只保留addEnvelopeSignature即可。修改后的关键代码如下:

Signer signer = Crypto.getSigner(this.privateKey, payerAccountKey.getHashAlgo());
// 移除重复签名的代码
// tx = tx.addPayloadSignature(payerAddress, 0, signer);
tx = tx.addEnvelopeSignature(payerAddress, 0, signer);

补充说明

Flow交易签名核心规则:

  • 单签名场景(提案者、付款人、授权者为同一账户):仅需对交易信封(Envelope)签名一次,无需额外的payload签名。
  • 多签名场景:不同账户需分别对payload和envelope完成签名,以此完成多主体授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:37:03