区块链学习-Golang 与智能合约的交互(一)

在以太坊中,提供了 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 文件内容相似,进一步的交互使用继续研究

你可能感兴趣的:(区块链学习-Golang 与智能合约的交互(一))