Flow CLI移除合约失败[错误码1056]求助:权限问题排查
Flow Testnet移除合约授权错误(Error 1056)解决方案
你遇到的Error 1056是因为Flow Testnet对合约移除操作强制要求多签授权校验,哪怕是部署合约的账户,直接用基础remove-contract命令也无法通过校验,必须通过授权交易的方式执行移除操作。
具体操作步骤
- 编写Cadence交易脚本
创建一个名为remove_HelloWorld.cdc的文件,内容如下:
transaction { prepare(acct: AuthAccount) { // 移除指定名称的合约 acct.contracts.remove(name: "HelloWorld") } }
- 用授权命令提交交易
在终端执行以下命令,替换成你的账户地址和签名者配置:
flow accounts auth 0xf6827b3c1293b661 remove_HelloWorld.cdc --network testnet --signer testnet-account
这个命令会自动使用你的testnet-account签名者完成授权校验,提交交易后即可移除目标合约。
额外注意事项
- 确认你的Flow CLI配置中,
testnet-account对应的私钥属于0xf6827b3c1293b661账户 - 交易提交后,可通过
flow transactions status <返回的交易ID> --network testnet查询执行状态 - 你的Flow CLI版本0.41.0完全支持该命令,无需升级
参考文档内容翻译
使用Flow CLI移除合约
移除账户上的合约有两种方式:
- 基础命令:
flow accounts remove-contract <合约名称> --network <网络环境> --signer <签名者>
该命令仅适用于不需要授权校验的测试环境(如本地模拟器),在Testnet、Mainnet等正式网络中会触发授权错误。- 授权交易方式:编写Cadence交易脚本,通过
flow accounts auth命令签名并提交,这是正式网络中移除合约的标准方式。
内容的提问来源于stack exchange,提问作者Vasu Mistry
相关产品推荐
相关产品推荐

