关于abigen编译sol文件生成go报错

Fatal: Failed to generate ABI binding: duplicated identifier "XX_X"(normalized "XXX"), use --alias for renaming
 

遇到这种情况一般是合约里的函数名出现_符号。而在abigen在解析abi文件生成.go文件的时候会要求去掉"_"这个符号.我们这时可以使用重命名的方式来执行编译

abigen --abi XXX.abi --pkg XXX --out XXX.go  --alias XX_X =XXX

加上--alias 选项更改掉提示的名字

#通过abigen生成go文件示例
abigen -sol pdbank.sol -pkg Pdbank -out Pdbank.go

如果提示 

Fatal: Failed to build Solidity contract: exec: "solc": executable file not found in $PATH
 

sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc
solc --abi Store.sol

它会将其写入名为“Store_sol_Store.abi”的文件中

现在让我们用abigen将ABI转换为我们可以导入的Go文件。 这个新文件将包含我们可以用来与Go应用程序中的智能合约进行交互的所有可用方法。

abigen --abi=Store_sol_Store.abi --pkg=store --out=Store.go

为了从Go部署智能合约,我们还需要将solidity智能合约编译为EVM字节码。 EVM字节码将在事务的数据字段中发送。 在Go文件上生成部署方法需要bin文件。

solc --bin Store.sol

现在我们编译Go合约文件,其中包括deploy方法,因为我们包含了bin文件。

abigen --bin=Store_sol_Store.bin --abi=Store_sol_Store.abi --pkg=store --out=Store.go

solc直接生成go文件示例

solc game.sol --combined-json abi,bin | abigen --pkg game --type storage --out game.go --combined-json - 

如果使用solc进行编译的情况下提示版本不对可以直接用代码丢到remix里面生成abi。然后使用abigen生成对应的go文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值