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

Kadena测试网部署失败:Keyset failure (keys-all): 'todo-admin-keyset'

Kadena测试网部署:密钥集验证失败(keys-all)问题排查与解决

问题概述

部署Pact合约时触发错误:失败:交易执行失败:密钥集验证失败(keys-all):'todo-admin-keyset',对应部署YAML配置如下:

codeFile: pact/todos.pact
networkId: testnet04
publicMeta:
  chainId: "1"
  gasLimit: 1000
  ttl: 28000
  creationTime:
  sender: "nambi001"
  gasPrice: 0.00001
data:
  todo-admin-keyset: ["ba54b224d1924dd98403f5c751abdd10de6cd81b0121800bf7bdbdcfaec7388d"]
keyPairs:
  public: ba54b224d1924dd98403f5c751abdd10de6cd81b0121800bf7bdbdcfaec7388d
  secret: 8693e641ae2bbe9ea802c736f42027b03f86afe63cae315e7169c9c496c17332
nonce: fetch-todos

交易查询密钥:tnx2phZpQOyOtloY2eD4M48yzm_tOpqeq9abNn2TGCo

核心原因分析

该错误表明合约定义的todo-admin-keyset密钥集规则,与交易提交时的签名验证逻辑不匹配,常见触发场景:

  • 合约内密钥集要求多签(keys-all),但提交的签名不符合规则
  • 部署时传递的密钥集格式错误
  • 签名使用的密钥对与合约预期的密钥集不匹配
  • 交易元数据(如creationTime)不合法导致连锁验证失败

具体修复步骤

1. 检查Pact合约中的密钥集定义

确认pact/todos.pact内的todo-admin-keyset定义,比如是否为:

(defcap admin-guard ()
  (enforce (keys-all 'todo-admin-keyset) "Admin only"))

或直接定义密钥集:

(define-keyset 'todo-admin-keyset (read-keyset "todo-admin-keyset"))

若合约要求keys-all,需确保交易使用密钥集中所有公钥完成签名,且YAML传递的公钥与签名密钥完全一致。

2. 修正YAML配置的关键问题

问题点1:creationTime字段为空

Kadena交易要求creationTime必须为当前秒级Unix时间戳,空值会直接导致交易合法性验证失败,进而触发密钥集验证错误。需填充有效时间戳,示例:

publicMeta:
  # ...其他字段
  creationTime: 1720000000

问题点2:Nonce值重复

nonce: fetch-todos若曾被使用过,会被标记为重复交易,间接引发验证错误。建议使用唯一值,比如当前时间戳+随机字符串:

nonce: deploy-todo-1720000000

问题点3:密钥集与签名一致性

确保data中的todo-admin-keyset数组包含的公钥,与keyPairs中的公钥完全匹配,且交易确实使用该密钥对完成了签名。

3. 验证交易签名

确认使用的签名工具(如pact-cli)正确加载密钥对,部署命令示例:

pact deploy pact/todos.pact -n testnet04 -k keys.yaml -d deploy-data.yaml

其中keys.yaml需包含你的密钥对,deploy-data.yaml需正确传递todo-admin-keyset参数。

4. 查看交易日志细节

使用提供的交易密钥查询测试网交易日志,重点确认:

  • 签名是否有效
  • 密钥集参数是否正确传递
  • 交易元数据(如creationTime)是否合法

验证修复后的部署流程

  1. 填充正确的creationTime时间戳
  2. 使用唯一的nonce值
  3. 确保合约密钥集定义与YAML参数一致
  4. 重新签名并提交交易

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:54:52