在以太坊中,提供了 abigen
的指令给我们智能合约的 go 语言文件,网上许多教程也是基于这个指令来生成合约 go 文件来进行操作的。参考:
Github 某源码实现
使用Go语言与Ethereum智能合约进行交互
但是这些文章年代久远....存在让你崩溃的问题。
abigen
内部其实是调用了 solc
来对合约文件进行编译生成对应语言版本的代码文件,按照教程正常来说只需要这样一行指令就能搞定
abigen --sol yourContract.sol --pkg main --out yourContract.go
但是目前版本直接对合约文件执行以上指令会返回这样的一行错误
Failed to build Solidity contract: exit status 7
无法定位实际问题点,网上也没搜到对应的问题讨论
最后通过自己的摸索发现可以这样来操作
先通过 solc
的新指令 solcjs
(直接 npm install -g solc
下载后的指令,solc
的指令需要 npm install -g solc-cli
)生成对应的 bin
abi
合约文件
// 生成合约 abi 文件
solcjs yourContract.sol -o filedir --abi
// 生成合约 bin 文件
solcjs yourContract.sol -o filedir --bin
最后使用以太坊的 abigen
生成对应的 go 文件
abigen --abi filedir/yourContract.abi --bin filedir/yourContract.bin --pkg main --out yourContract.go
检查发现与教程生成的 go 文件内容相似,进一步的交互使用继续研究
网友评论