您的位置:首页 > 理论基础 > 计算机网络

区块链学堂(7):Geth 搭建私有网络-实战

2018-01-30 16:37 555 查看
在本章中我们将实战如何使用Geth,如何搭建以太坊的私有网络。

之前说过Geth是三种实现以太坊协议的工具之一,由于Geth是官方推崇的以及个人精力有限,对于另外两种工具的搭建私有网络,请参考网上资料。

下面的Geth实战,在MacBook上实现,对于Windows方面,比较类似。


Step 1: 建立目录和genesis.json

在命令行模式创建一个目录,例如tmpPrivate



创建文件genesis.json, 并填入如下内容。
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x80000000",
"difficulty": "0x1",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {     }
}


用户可以vim,也可以用其他编辑器如sublime等,个人推荐使用Atom

Atom 官网地址: https://atom.io/

Atom 是一个由谷歌支持发布的文本编辑器, 一个你可以自定义做任何事情的现代编辑器,后面涉及文件和代码演示会主要在Atom上执行。

创建完成后,在Atom中,本文件夹下应该只有一个genesis.json




Step 2: 执行命令,创建创世区块

切换回命令行,执行命令,制造创世区块
geth --datadir "./" init genesis.json


执行结果如下:



这时候可以注意一下,此时当前目录下面会新增出两个文件夹geth和keystore

geth中保存的是区块链的相关数据


keystore中保存的是该链条中的用户信息


此时从Atom中看到的目录结构是这样的:




Step 3:创建自己的私有链条

执行一条最简单的geth命令,来创建自己的私有链条
geth --datadir "./" --nodiscover console 2>>geth.log


geth的参数项目很多,有兴趣的可以打geth –help 来获得详细信息,我们也会在之后的章节中对关键参数项进行说明。

此时的命令行应该是这样的:




Step 4:在自己的私有链条上创建用户

输入命令
eth.accounts
, 我们会发现返回值为
[]


这是因为此时虽然以太坊的私有链已经被创造出来,但还没有任何账户。
输入命令
personal.newAccount("xxx")
, 该命令将创造一个新的用户,该用户的密码是
xxx
.
当然用户也可以将
xxx
 改为123,或者123456,或者任意密码
再次输入命令 
eth.accounts
, 我们会发现一个新的用户被创建了出来,这就代表我们已经创建了一个账户,重复
personal.newAccount()
 & 
eth.accounts
 我们可以创建若干个账户出来

整个命令截图如下:




Step 5: 输出区块链的Log

在Step 3中,我们执行的代码
geth --datadir "./" --nodiscover console 2>>geth.log

其中的代码 
console 2>> geth.log
 代表将控制台的一部分输出,输出到文件geth.log上去。

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

整个过程如下图所示:




Step 6: 最重要的一步来了,开始挖矿!

在命令行中执行命令 
miner.start()
, 开始在我们的区块链上进行挖矿



此时Geth.log的输出应该是这样的



一直等到100%。这个以太坊私有链就会正式启动,并持续不断的生成出以太坊来。


注意点:


1. 挖矿挖到的ether币会默认保在第一个账户中,即eth.acccounts[0]中。


2. 挖矿是执行智能合约的基础。如果停止挖矿的话,不仅以太币会停止生成,所有智能合约的调用也会不起作用。


3. 如果真的要停止挖矿,可以执行命令
miner.stop()
来停止挖矿


4. 按上面的命令,应该是可以实现以太坊挖矿的。如果不行的话,有可能就是之前有存在的链,此时应该删除之前的数据。在Mac下即删除
~/.ethash
文件夹和里面的文件即可


Step 7: 最终当挖矿启动的时候的日志是这样的




Step 8: 挖矿启动后,查看主账户的以太币数量

acc0 = eth.accounts[0]
eth.getBalance(acc0)


结果只要不为0,那就说明挖矿成功!




下一章,将讲解geth中的若干概念,以及一些基本命令

原文地址: http://www.ethchinese.com/?p=659
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: