项目中用到了国密算法,hash为国密方法,用solc编译器编译合约代码,调用合约方法执行失败,找了好长时间发现了原因。
首先部署合约是没问题的,合约执行方法的时候不成功,后面发现是交易input中的add方法签名和用以太坊solc编译出来的方法签名不一致,合约执行过程中找不到方法,交易执行失败
solidity源码如下
pragma solidity ^0.6.4;
contract C {
uint256 a;
constructor() public {
a = 1;
}
function add(uint256 b) public {
a = a + b;
}
}
Go合约调用
- 调用
solcjs
生成合约CODE
和ABI
文件,详情可查看上一篇 Go调用以太坊合约
solcjs --bin math.sol
solcjs --abi math.sol
生成go调用合约模板命令
//生成合约 go文件
abigen --bin=math_sol_C.bin --abi=math_sol_C.abi --pkg=math --out=Math.go
Go源码如下
<