FISCO BCOS Transaction execution error合约执行失败原因
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FISCO BCOS Transaction execution error合约执行失败原因相关的知识,希望对你有一定的参考价值。
根据TransactionExceptionID查询错误原因
交易回执状态
status(十进制/十六进制) | message | 含义 |
---|---|---|
0(0x0) | None | 正常 |
1(0x1) | Unknown | 未知异常 |
2(0x2) | BadRLP | 无效RLP异常 |
3(0x3) | InvalidFormat | 无效格式异常 |
4(0x4) | OutOfGasIntrinsic | 部署的合约长度超过gas限制/调用合约接口参数超过gas限制 |
5(0x5) | InvalidSignature | 无效的签名异常 |
6(0x6) | InvalidNonce | 无效nonce异常 |
7(0x7) | NotEnoughCash | cash不足异常 |
8(0x8) | OutOfGasBase | 调用合约的参数过长 (RC版本) |
9(0x9) | BlockGasLimitReached | GasLimit异常 |
10(0xa) | BadInstruction | 错误指令异常 |
11(0xb) | BadJumpDestination | 错误目的跳转异常 |
12(0xc) | OutOfGas | 合约执行时gas不足 / 部署的合约长度超过最长上限 |
13(0xd) | OutOfStack | 栈溢出异常 |
14(0xe) | StackUnderflow | 栈下限溢位异常 |
15(0xf) | NonceCheckFail | nonce检测失败异常 |
16(0x10) | BlockLimitCheckFail | blocklimit检测失败异常 |
17(0x11) | FilterCheckFail | filter检测失败异常 |
18(0x12) | NoDeployPermission | 非法部署合约异常 |
19(0x13) | NoCallPermission | 非法call合约异常 |
20(0x14) | NoTxPermission | 非法交易异常 |
21(0x15) | PrecompiledError | precompiled错误异常 |
22(0x16) | RevertInstruction | revert指令异常 |
23(0x17) | InvalidZeroSignatureFormat | 无效签名格式异常 |
24(0x18) | AddressAlreadyUsed | 地址占用异常 |
25(0x19) | PermissionDenied | 无权限异常 |
26(0x1a) | CallAddressError | 被调用的合约地址不存在 |
27(0x1b) | GasOverflow | Gas溢出错误 |
28(0x1c) | TxPoolIsFull | 交易池已满异常 |
29(0x1d) | TransactionRefused | 交易被拒绝异常 |
30(0x1e) | ContractFrozen | 合约被冻结异常 |
31(0x1f) | AccountFrozen | 账户被冻结异常 |
10000(0x2710) | AlreadyKnown | 交易已经在交易池中 |
10001(0x2711) | AlreadyInChain | 交易已经上链异常 |
10002(0x2712) | InvalidChainId | 无效的链ID异常 |
10003(0x2713) | InvalidGroupId | 无效的群组ID异常 |
10004(0x2714) | RequestNotBelongToTheGroup | 请求不属于群组异常 |
10005(0x2715) | MalformedTx | 交易格式错误 |
10006(0x2716) | OverGroupMemoryLimit | 超出群组内存限制异常 |
FISCO BCOS完整的错误码描述请参考这里.
1. out of gas
问题描述:
交易回执状态值为0xc,错误描述out-of-gas during EVM execution。 这个错误可能的原因:
合约逻辑比较复杂。
合约逻辑问题,数组结构体没有初始化,或者出现死循环。
解决方法:
使用控制台加大tx_gas_limit的值,操作流程参考: 控制台设置tx_gas_limit
检查合约的逻辑,修复合约逻辑的漏洞
2. revert instruction
问题描述:
交易回滚,交易回执状态值为0x16,错误描述revert instruction,这个错误是因为合约的逻辑问题,包括:
访问调用未初始化的合约
访问初始化为0x0的合约
数组越界访问
除零错误
调用assert、revert
其他错误
解决方法:
检查合约逻辑,修复漏洞。
交易执行失败 | FISCO BCOS开发问题排查_FISCO_BCOS的博客-CSDN博客
以上是关于FISCO BCOS Transaction execution error合约执行失败原因的主要内容,如果未能解决你的问题,请参考以下文章
fisco bcos transaction交易结构 源代码位置