1: 开发Solidity自能合约
可以选择remix上或者其他地方,开发好并且初步调试好自能合约
2:准备 go 项目环境
将代码导入到go 项目
如果有导入外部合约,则需要准备npm来管理,这些包如果没有导入外部合约 请忽略
2.1 初始化Node.js项目(并且导入外部合约)
(1)npm init -y
(2)npm install @openzeppelin/contracts @chainlink/contracts
3. 编译Solidity合约
使用solc
编译器编译你的Solidity合约。确保你已经在系统上安装了solc
。
-
安装Solidity编译器(如果尚未安装):
npm install -g solc
-
编译合约:
在项目根目录下,运行以下命令编译合约:
solc --abi --bin contracts/NFT721Token.sol -o build/nft721
--abi
:生成合约的ABI文件。--bin
:生成合约的字节码文件。-o build
:指定输出目录为build
文件夹。- 如果编译报错 {}
- 是因为没指定有可能 node_modules/ 目录编译的时候在不到 node_modules 可以修改编译命令
- solc --base-path . --include-path node_modules/ --abi --bin contracts/NFTMarketplace/AuthorizedContract.sol -o build/AuthorizedContract
4. 生成Go绑定代码
检查是否已经安装好工具
终端输入 abigen --version
如果没有安装好 则需要 安装
安装步骤
1. 终端输入 go get -u github.com/ethereum/go-ethereum 导入包
调转到包所在的文件夹
在终端进入文件
cd /*******/pkg/mod/github.com/ethereum/[email protected]
编译项目 go-ethereum@$ sudo make && make devtools
编译完成后,abigen
工具会被放置在你的Go工作区的bin
目录中。
运行以下命令,指定ABI和BIN文件的路径,并输出到一个新的Go文件中:
使用abigen生成Go绑定代码
假设你已经在build/NFT721
目录中拥有NFT721Token.abi
和NFT721Token.bin
文件,使用abigen
命令来生成Go绑定代码:
-
运行abigen命令:
运行以下命令,指定ABI和BIN文件的路径,并输出到一个新的Go文件中:
abigen --bin=build/NFT721/NFT721Token.bin --abi=build/NFT721/NFT721Token.abi --pkg=nft721token --out=nft721token.go
参数说明:
--bin=build/NFT721/NFT721Token.bin
:指定合约的字节码文件。--abi=build/NFT721/NFT721Token.abi
:指定合约的ABI文件。--pkg=nft721token
:指定生成的Go代码所属的包名。--out=nft721token.go
:指定生成的Go文件名。