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

Iroha非admin账户转账报错STATEFUL_VALIDATION_FAILED如何解决?

Iroha TransferAssets 状态验证失败排查方案

1. 提取详细错误根因

默认Iroha节点不会输出状态验证失败的具体原因,首先修改节点配置中的log_level参数为debug,重启节点后重新发起转账交易,检索节点日志中STATEFUL_VALIDATION_FAILED关联的上下文条目,即可获取具体错误码,定位问题类型。

2. 校验角色权限配置

  • 确认user角色的can_transfer、can_receive权限是否绑定了正确的域名与资产范围,绝大多数同类问题都是权限配置时未指定test域名下的对应资产,仅配置了全局权限名,导致普通用户的权限无法在目标域名下生效
  • 确认admin@test是否额外持有root或transfer_all全局权限,admin账户可通过全局权限豁免普通用户的权限校验逻辑,所以不会触发报错

3. 校验交易构造逻辑

检查用iroha-helpers构造转账交易的传参是否存在以下问题:

// 常见错误示例
const transferTx = await irohaHelper.transfer({
  fromAccountId: 'userA', // 遗漏@test域名后缀
  toAccountId: 'userB@test',
  assetId: 'xxx#test',
  amount: '10',
  privateKey: userA.privateKey.trim() // 私钥多了空格/格式错误
})

如果admin账户的交易构造逻辑是单独封装的,不存在上述传参问题,就会出现仅admin可正常转账的情况。

4. 校验账户签名配置

查询userA@test的账户详情,确认其签名阈值是否为1:如果配置了多签规则,签名阈值大于1但构造交易时仅传入了1个有效签名,也会触发状态验证失败。admin账户默认签名阈值为1,因此不会触发该问题。

验证与修复

可以临时给userA@test授予全局transfer权限,如果此时转账成功,即可确认是之前的user角色权限配置遗漏了作用域,重新调整权限的域名、资产绑定规则即可解决。


内容的提问来源于stack exchange,提问作者Alexander V.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:45:01