geth遇到的一些问题(miner.setCoinbase/ miner.start())

对于geth和以太坊相关环境的部署,私有链的搭建就不多叙述,可以参考下面链接:手把手部署私有链

下面讲述遇到的两个问题:(主要参考他人文章解决的问题)

1、miner.setCoinbase(address)
很多的教程中采用这个方法来设置矿工收益地址。但是在最新版本的geth的API中,可以发现,这个方法已经发生更改。
geth的API地址:geth-API
用法如下:geth遇到的一些问题(miner.setCoinbase/ miner.start())_第1张图片

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
geth遇到的一些问题(miner.setCoinbase/ miner.start())_第2张图片
原因:因为你的genesis.json中未定义"alloc":{}
解决方法:

  • 先创建一个用户(对于bash命令的含义不多做解释)geth --datadir data/03 account newgeth遇到的一些问题(miner.setCoinbase/ miner.start())_第3张图片

  • 复制产生的账户地址,找到genesis.json文件,打开,将该地址添加到alloc属性中去。

"alloc": {
	"0x02a3d60cd7118C46A468Cea002448ea91aD72229": {
		"balance": "1000000000000000000000000"
	} 
  },

如图所示:geth遇到的一些问题(miner.setCoinbase/ miner.start())_第4张图片

  • 运行geth节点初始化geth --datadir data/03 init genesis.jsongeth遇到的一些问题(miner.setCoinbase/ miner.start())_第5张图片

  • 启动节点,查询账户余额

$ 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 :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
geth遇到的一些问题(miner.setCoinbase/ miner.start())_第6张图片

很多的搭建教程都会出现这样的错误,这是因为路径的问题,data/00而非/data/00

5、minner.start() 返回null
这个的解决方案参考链接:去吧!皮卡丘

你可能感兴趣的:(ethereum)