对于geth和以太坊相关环境的部署,私有链的搭建就不多叙述,可以参考下面链接:手把手部署私有链
下面讲述遇到的两个问题:(主要参考他人文章解决的问题)
1、miner.setCoinbase(address)
很多的教程中采用这个方法来设置矿工收益地址。但是在最新版本的geth的API中,可以发现,这个方法已经发生更改。
geth的API地址:geth-API
用法如下:
2、当初始化genesis.json,通过geth启动网络之后,personal.newAccount()生成的账户是没有余额的,如下所示:geth --networkid 100 --datadir data/00 --rpc --rpcapi net,eth,web3,personal --allow-insecure-unlock console 2>>geth.log
原因:因为你的genesis.json中未定义"alloc":{}
解决方法:
-
先创建一个用户(对于bash命令的含义不多做解释)
geth --datadir data/03 account new
-
复制产生的账户地址,找到genesis.json文件,打开,将该地址添加到
alloc
属性中去。
"alloc": {
"0x02a3d60cd7118C46A468Cea002448ea91aD72229": {
"balance": "1000000000000000000000000"
}
},
如图所示:
-
运行geth节点初始化
geth --datadir data/03 init genesis.json
-
启动节点,查询账户余额
$ geth --networkid 100 --datadir data/03 --rpc --rpcapi net,eth,web3,personal --allow-insecure-unlock console 2>>geth.log
> eth.accounts
["0x02a3d60cd7118c46a468cea002448ea91ad72229"]
> eth.getBalance("0x02a3d60cd7118c46a468cea002448ea91ad72229")
1e+24
>
成功
3、personal.unlockAccount(address, password)
报错:GoError: Error: account unlock with HTTP access is forbidden at web3.js:6347:37(47) at native at <eval>:1:69(4)
错误原因:新版本geth,出于安全考虑,默认禁止了HTTP通道解锁账户
解决方法:
启动网络代码(产生错误):geth --networkid 100 --datadir data/00 --rpc --rpcapi net,eth,web3,personal console 2>>geth.log
更改为:geth --networkid 100 --datadir data/00 --rpc --rpcapi net,eth,web3,personal --allow-insecure-unlock console 2>>geth.log
主要多了一个参数**–allow-insecure-unlock**
4、错误:Fatal: Failed to create account: mkdir /data: permission denied
很多的搭建教程都会出现这样的错误,这是因为路径的问题,data/00
而非/data/00
5、minner.start()
返回null
这个的解决方案参考链接:去吧!皮卡丘