以太坊windows私有链测试环境搭建

前言

最近打算写一个以太坊学习的系列的文章。记录一下整个学习的过程。IT新技能的学习,首先最重要的是先体验一下如何使用,后续再慢慢展开原理的学习。

下载安装go Ethereum

以太坊用户目前使用用户最多的是go语言的Ethereum,所以我也就下载go语言的版本。我下载的版本是:v1.9.8(geth-windows-amd64-1.9.8-d62e9b28.exe),以太坊版本升级较快,大家下载最新版本即可。下载链接:go Ethereum,选择相应的windows版本即可(测试环境win 10系统 64 bit)。 安装过程非常简单,就不细说了。安装完成之后,在cmd行,输入一下命令:

geth version

显示以下结果,代表安装成功:
geth版本信息

运行geth私有链

运行geth的私有链,首先需要初始化创世块,然后才能启动私有链。

初始化创世块

初始化创世块,需要一个参数文件genesis.json,此文件内容已编辑好,如下:

{
"config": {
     "chainId": 9,
     "homesteadBlock": 0,
     "eip150Block": 0,
     "eip155Block": 0,
     "eip158Block": 0
  },
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x200",
  "extraData"  : "",
  "gasLimit"   : "0xffffffff",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00",
  "alloc": {}
}

每个字段的含义,不展开说了。如果没有特别的需求,可以直接使用我上面的文件内容。重点提一下下difficulty,代表挖矿的难度,值越大,挖矿越困难。建议数值不要设置太大。
初始化创世块命令,指定数据生成的目录F:\ETH\privdata:

geth --datadir "F:\ETH\privdata" init genesis.json

显示“Successfully wrote genesis state”,代表初始化成功
初始化创世块结果

运行geth

初始化成功之后,此时可以正式运行geth了。运行命令如下,nodiscover 不广播,其他节点发现不了。控制台的信息输出到geth.log。

geth --datadir "f:\ETH\privdata" --nodiscover console 2>>geth.log

显示结果:
geth运行界面

geth命令测试

创建账号

创建新账号,带的参数是“111111”密码,命令如下:

personal.newAccount("111111")

创建账号1
我们再创建一个账号,用来转账:
创建账号2

查询账户余额

此时这是两个新账号,里面的余额为0,在命令行可以通过eth.accounts[0],eth.accounts[1]访问这两个账号,我们可以通过命令查看一下:

eth.getBalance(eth.accounts[0])
eth.getBalance(eth.accounts[1])

查询余额的结果:
查询余额

挖矿命令

需要挖矿,才能获取出块的奖励,使账户余额不为0。挖矿命令,参数代表启动的线程数:

miner.start(1)

显示结果:
挖矿结果
首次挖矿,启动需要等待一段时间,geth.log日志会显示“Generating DAG in progress epoch=0 percentage=”,需要到100,才能进行挖矿。测试大概等待2分钟左右,就出块了。
挖矿的日志
此时再查询余额,可以看到account[0],余额已经不为0了。
账户1余额
停止挖矿命令:

miner.stop()

转账命令

账户1的余额不为0,可以向账户2进行转账操作,转10个以太币,从账户1,转到账户2。操作命令如下:

amount = web3.toWei(10,'ether')
eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:amount})

显示结果:
转账结果
可以看到报错“Error: authentication needed: password or unlock”,需要解锁账户1,输入命令:

personal.unlockAccount(eth.accounts[0], "111111")

再次查看结果:
转账结果1
显示转账是成功了,但是查询账户2余额仍然为0
账户2余额
原因就是需要等待交易打包进区块。再次启动挖矿,过一会儿,再次进行查询账户1的余额:
账户2余额
此时,可以看到余额显示10个以太币。今天先写到这里。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值