当前位置:主页 > 查看内容

geth搭建私有链

发布时间:2021-06-19 00:00| 位朋友查看

简介:直接在主目录下创建文件夹这是在geth环境搭建好的情况下 创建创世区块 vim genesis.json 英文键盘 点击 i 复制粘贴下面代码然后– esc – :wq! 强制保存退出 报错 Fatal: Failed to write genesis block: unsupported fork ordering: eip150Block not enable……

直接在主目录下创建文件夹(这是在geth环境搭建好的情况下)
在这里插入图片描述

创建创世区块

vim genesis.json

英文键盘点击i,复制粘贴下面代码然后–>esc–>:wq!强制保存退出
报错:Fatal: Failed to write genesis block: unsupported fork ordering: eip150Block not enabled, but eip155Block enabled at 0
修正:

{
   "alloc": {},
    "config":{
        "chainId":15,
        "homesteadBlock":0,
        "eip155Block":0,
	"eip158Block":0,
        "eip150Block":0
    },
    "nonce":"0x00000000000000042",
    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x02",
    "coinbase":"0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "",
    "gasLimit":"0x2fefd8"
}

初始化链

geth --datadir data init genesis.json    

这时候可以注意一下,此时当前目录下面会新增出一个data文件,data下面有两个文件夹geth和keystore
geth中保存的是区块链的相关数据
keystore中保存的是该链条中的用户信息

启动私有链:在console中启用私有链,并将日志输出重定向到testEth.log中(如果启动出错就是创世区块genesis.json中有些问题,多了逗号大括号等等)

geth --datadir data --networkid 123 console 2>>testEth.log

–datadir 代表文件夹地址,

打开另一个终端,找到testEth.log的所在目录,执行命令 tail -f geth.log 从而持续的输出以太坊的日志

新建帐户

可以使用两种方式创建用户如下,其中personal.newAccount(“123456”)中的123456是密码,输出的0x03c5ca63fd13777db295de7fe56be90a7f79ec93是用户帐户hash,这是两个账户

personal.newAccount("123456")

personal.newAccount("123456")

查看已有帐户

personal.listAccounts
[]
或者eth.accounts

每次记一长串的地址很麻烦,我们可以通过设置变量来acc0,acc1表示帐户

> acc0 = eth.accounts[0]
"0xfcf6dce6b352f35c15d7245d9354c30cef71a989"
> acc1 = eth.accounts[1]
"0x25890c9e12d90a6e0e3f66eaa9cb21d3a581390e"
> eth.getBalance(acc0)
1.245e+21
> eth.getBalance(acc1)
0
查询账号的余额
eth.getBalance("0xfcf6dce6b352f35c15d7245d9354c30cef71a989")
eth.getBalance(acc0)                  //获取第一个帐户的资产,以wei为单位
使用这个方法可以查看格式化的以太币
web3.fromWei(web3.eth.getBalance(acc0))
1245

挖矿测试

eth.coinbase 会输出默认的挖矿收入帐户,默认为第一个创建的帐户

 eth.coinbase
"0xfcf6dce6b352f35c15d7245d9354c30cef71a989"

miner.start() //开始挖矿,挖矿时间会久一些,请耐心等待,可以通过eth.blockNumber查看当前块高,或者通过日志查看

miner.stop()//停止挖矿
在这里插入图片描述
显示空,但是在后台运行,输出信息保存在testEth.log

转帐操作

从帐户0xfcf6dce6b352f35c15d7245d9354c30cef71a989转3个以太币到0x25890c9e12d90a6e0e3f66eaa9cb21d3a581390e,如果不指定单位ether,默认转的是wei。

> web3.eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(3,"ether")})

之所以交易时报错,是因为

这个是以太坊的一个保护机制,每隔一段时间账户就会自动锁定,这个时候任何以太币在账户之间的转换都会被拒绝,除非把该账户解锁.

这个时候我们就需要执行 personal.unlockAccount(acc0) 并输入密码来解锁acc0才可。
在这里插入图片描述
交易的hash值

"0xce6b5887f6da6c28dece6958ad636ae5d034e60780c925b1ce5518e1443d8e5b"

解锁后,交易成功,但查询双方余额仍然没有变化,需要再次进行挖矿操作才会变化
在这里插入图片描述
还是没有成功
txpool.status查看交易信息,交易未完成
在这里插入图片描述

miner.start(1);admin.sleepBlocks(1);miner.stop()

挖出一个块后自动停止

eth.blockNumber

查看目前已经挖出的区块数量

挖矿卡在Commit new mining work问题
创世区块中的"extraData": "0x777573686f756865"数据删除"extraData": ""


;原文链接:https://blog.csdn.net/weixin_44219089/article/details/115598251
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐