1. 获取abi文件
合约的接口
abi
然后新建一个xx.abi文件,把赋值的粘贴到里面
abiabi
也可以通过solc生成abi:
solc --bin test.sol -o test.abi
2. 安装abigen工具
用来生成go文件,
下载文件:github地址
找到这个main.go文件,进行go build,生成abigen.exe文件。
然后放在bin目录下的这里
然后就可以在这里验证了
使用abigen工具生成go文件
abi 文件在 remix 部署时可以得到pkg 指定输出文件的包名,也就是package 名称type 指定合约结构体名称out 指定输出go文件名称
3. remix连接私有链
geth
Web3 Provider
但是可以看到我们这里是没有account的
所以我们可以创建一个account
创建了两个之后
就可以在这里看见了。
4. 合约部署
Web3 Provider8545gethrpc
2.部署合约
可能会出现下面几种错误,依此列出解决办法
1 .Error: authentication needed: password or unlock:这种报错解锁下账户即可
账户解锁:personal.unlockAccount(“账户地址”)
unlock一下就行了
2 .Returned error: exceeds block gas limit:出现这种错误就看块号的gaslimit,部署时改成一直
获取块号:eth.blockNumber
根据块号获取详细信息:eth.getBlock(0) 会看到gasLimit的值,在部署时的gaslimit不能大于这个
3 .Returned error: insufficient funds for gas * price + value:部署合约需要手续费,得赚取,通过挖矿
没钱, 要挖矿赚钱。
开启指定线程数挖矿:miner.start(1)
停止挖矿:miner.stop()
检查是否在挖矿:eth.mining true:在挖矿,false:不在挖矿
获取账户地址数组:eth.accounts
获取挖矿地址:eth.coinbase 默认第一个创建的账户
查看第一个账户余额:eth.getBalance(eth.accounts[0])
获取指定账户的余额:eth.getBalance(“账户地址”)
5. 初始化私有链节点创世块
新建一个genesis.json文件,内容如下
含义:
coinbase
difficulty
gasLimit
nonce
mixhash
parentHash
timestamp
alloc
cmd进入到存放json文件的路径
6. 合约部署
部署时候需要支付手续费
http://ethscan.hubwiz.com/
7. 调用
github.com/ethereum/go-ethereum v1.10.0