前言
最近打算写一个以太坊学习的系列的文章。记录一下整个学习的过程。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的私有链,首先需要初始化创世块,然后才能启动私有链。
初始化创世块
初始化创世块,需要一个参数文件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命令测试
创建账号
创建新账号,带的参数是“111111”密码,命令如下:
personal.newAccount("111111")
我们再创建一个账号,用来转账:
查询账户余额
此时这是两个新账号,里面的余额为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了。
停止挖矿命令:
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")
再次查看结果:
显示转账是成功了,但是查询账户2余额仍然为0
原因就是需要等待交易打包进区块。再次启动挖矿,过一会儿,再次进行查询账户1的余额:
此时,可以看到余额显示10个以太币。今天先写到这里。