初学者了解以太坊,最好的办法之一就是先搭建一条私链,在上面创建账户,部署合约,并试着与之交互。当完成了这一系列步骤后,对在以太坊上进行应用开发,就是顺理成章的事情了。
开发需要
geth客户端,本篇是基于MacOS10.12的操作系统,建议使用Mac或者装有unbuntu的电脑进行开发,其实如果要长期学习区块链的话,不建议使用Windows。
第一步
创建一个genesis.json文件,内容如下:
- {
- "config": {
- "chainId": 10,
- "homesteadBlock": 0,
- "eip155Block": 0,
- "eip158Block": 0
- },
- "coinbase" : "0x0000000000000000000000000000000000000000",
- "difficulty" : "0x2000",
- "extraData" : "",
- "gasLimit" : "0x8000000",
- "nonce" : "0x0000000000000042",
- "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
- "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
- "timestamp" : "0x00",
- "alloc": {}
- }
如果你是初次接触区块链,不必对文件中的内容感到困惑,更不用被他们吓到,当你完成了私链的搭建,并在其上完成了创建账户、挖矿、部署合约以及与之交互的工作后,再回过头看这份JSON文件,你就会明白其中许多键值对的含义了。在后续的博客中,我会进行解释。
第二步
打开终端,创建一个目录,把JSON文件放入该目录
- mkdir privateNet
- mv 你的genesis.json privateNet/
- cd privateNet
第三步
创建创世区块。
- geth --datadir "./" init genesis.json
--datadir "./"指定私链数据存放的文件夹位置,init初始化genesis.json,创建创世区块。如果执行成功,在终端大致会是这个样子
同时,查看你指定的存放私链数据的文件夹,会多出两文件夹geth、keystore。这两个文件夹是干什么用的呢?geth文件夹下用来存放私链的相关数据,keystore文件夹下存放的是该链的用户信息。在围绕私链的一系列动作完成后,你会有所理解。
第四步
创建私链
- geth --datadir "./" console 2>>geth.log
console 2>>geth.log 将私链的日志打印到geth.log中,在你的存放私链的文件夹里你会找到该文件,另开一个终端,来到geth.log所在目录,执行命令:
- tail -f geth.log
你将在这个终端中实时的看到私链的状况。
至此,私链已经搭建完成。当然,我们应该体验一把辛苦搭建的私链
创建账户
回到之前创建私链的那个终端,可以看到,此时的终端处于待输入状态,输入
- eth.accounts
将会返回[],此时的私链还没有账户,输入
- personal.newAccount("password")
回车后会返回一串hash,返回的hash代表创建账户的地址,这条命令中的password代表该账户的密码,可以随意指定。这是再输入eth.accounts将会返回刚刚创建的账户的地址,根据返回值我们可以知道,账户以数组形式存在,因此我们输入eth.accounts[0],也会返回刚刚创建账户的地址。
查询账户余额
输入
- eth.getBalance(eth.accounts[0])
返回值为账户余额,此时账户余额为0。
挖矿
听到挖矿,第一反应肯定是,挖币赚钱,没错,接下来我们也要挖出我们的“以太币”,来“赚钱”了!输入:
- miner.start(1)
返回值会为true或者null,这都没什么影响,查看另一个终端,会看到有块正在生产。命令中的参数1代表只用当前机器的一块处理器进行挖矿,如果不输入参数,默认是“全力挖矿”,这样电脑会很容易发热。
在geth终端再次输入
- eth.getBalance(eth.accounts[0])
会返回一长串数字,这些数字就是你在过去几秒或者几分钟内挖出的币,如果这是真的以太币,那你在过去几秒已经赚取了不菲的财富了!你可能会疑惑,为什么几秒钟的功夫就能够得到这么多币呢?这是因为你产生了足够多的区块。那为什么产生区块的速度这么快呢?这是因为,在最开始我们的genesis.json文件中,有一项叫做
- "difficulty" : "0x2000"
这一项用来控制我们挖矿的难度,我们设置的难度“偏低”,大家可以改变它的值,重新搭建私链试试。
至此,你已经掌握了私链的搭建以及创建账户、查看余额、挖矿的工作了,下一篇博客将讲述如何在这个私链上部署合约并与之交互。
当然,别忘了停止挖矿:输入指令:
- miner.stop()
返回true,挖矿停止。
原文发布时间为:2018年02月06日
本文作者:FlyingApe
本文来源:CSDN,如需转载请联系原作者。