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

使用Flow CLI更新测试网合约报invalid proposal key错误如何解决?

Flow 多签账户更新合约签名无效问题解决方案

错误根因

你遇到的1006/1009签名无效报错,核心原因是目标部署账户配置了多组公钥,当前提交的单密钥签名权重未达到账户的签名阈值要求。Flow 链上账户的每一个公钥都有独立权重,交易签名的总权重达到账户设置的阈值(默认通常为1000)才会被系统认可,单密钥账户权重默认就是1000,所以部署不会出错,多签账户单密钥签名权重不足就会触发验签失败。

解决步骤

  • 第一步:查询目标账户的密钥配置
    执行如下命令查询账户的公钥、权重、签名阈值信息:
    flow accounts get <你的目标账户地址Yyyyy> -n testnet
    查看返回结果的Keys模块,确认你所持有的私钥对应的公钥索引、权重,以及账户的签名阈值要求,判断是单密钥权重足够但配置错误,还是需要多密钥共同签名。

  • 第二步:根据配置场景调整签名规则

场景1:所持单密钥权重满足阈值

如果查询到你持有的私钥对应公钥的权重已经达到签名阈值,说明是本地配置不匹配,需要修正flow.json的账户配置,显式指定密钥的索引、签名算法、哈希算法,配置示例如下:

{
  "accounts": {
    "admin-account": {
      "address": "zszssszszz",
      "key": {
        "type": "hex",
        "index": 0,
        "signatureAlgorithm": "ECDSA_P256",
        "hashAlgorithm": "SHA3_256",
        "privateKey": "yyyyyyyyyyy"
      }
    }
  }
}

注意signatureAlgorithm和hashAlgorithm要和你查询到的账户公钥对应算法保持一致,index要和你持有的私钥对应的公钥索引一致。

场景2:所持单密钥权重不满足阈值

如果单密钥权重不够,需要多个密钥共同签名才能达到阈值,按以下方式处理:

  1. 如果你持有所有需要的签名密钥:在flow.json中对应账户下配置所有需要用到的密钥,执行合约更新命令时指定多个签名者即可。
  2. 如果剩余密钥由其他方持有:使用Flow多签流程,先生成待签名的交易负载,分发给所有对应密钥的持有者完成签名后,合并所有签名再提交上链。
  • 第三步:重新执行合约更新命令
    配置调整完成后,重新运行更新命令即可:
    flow accounts update-contract Xxxxx ./Xxxxx.cdc --signer admin-account -n testnet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:02