evm的ecrecover方法报错“jump out of range”
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】(请对问题进行描述,方便定位问题)
具体的现象,操作步骤,前置条件等,尽可能描述清楚,有截图说明更佳
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
solidity合约方法
function recoverSignature(bytes32 hash, bytes memory signature) public virtual view returns(address){
bytes32 r;
bytes32 s;
uint8 v;
assembly {
r := mload(add(signature, 0x20))
s := mload(add(signature, 0x40))
v := byte(0, mload(add(signature, 0x60)))
}
address signer = ecrecover(hash, v, r, s);
return signer;
}
入参
hash: 0x04e8a37ddc56efae5a74760877fc75f8ef528bbdb8da7d77d9f9c7cafc9b1762
signature: 0x136ef868ee5db4fa8781542b9109c9924c7d44406e84c8048bfbd2ac35e4ad3425f2107e0326593c21164ea761264afc7ad13583b5d2f8337dc6f7638d2e3afd1b
报错信息
code: CONTRACT_FAIL message: "txStatusCode:4, resultCode:1, contractName[0a7253f9f4a754d0302034dd781c3af045bf1e2f] method[0x7621fd67] txType[QUERY_CONTRACT], jump out of range" contract_result { code: 1 message: "jump out of range" } tx_id: "fa7f5615ed7c64908399124f1cc8cfa24db1aba85f0ad73f832fc55fc57f7614"
【系统信息】(请填写系统信息,方便定位问题)
- **chainmaker-go version * :节点共识pk-dpos [v2.3.0]
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information