主页 > imtoken下载链接 > 区块链实践(一)以太坊网络+geth搭建私网实践
区块链实践(一)以太坊网络+geth搭建私网实践
1.以太网络
要了解以太坊PrivateNetwork,首先要了解以太坊的两个官方网络。 目前,以太坊官方提供了两个网络
生产环境网络测试网络TestNet
**
1 个以太坊生产网络
以太坊生产网络,顾名思义,就是生产真正有价值的以太坊的网络。 目前,生产网络已经生成了超过300万个区块,并且还在不断生成中。 每开采台币10多美元。 这是以太坊在生产环境中的状态(截图自2017-02-17)
生产环境网络优势
全球化,部署在互联网环境,
智能合约的代码、执行、区块调用一目了然。
部署在生产环境的智能合约可以被全球任何应用程序调用
缺点:
任何合约执行都会消耗真实的以太币,也就是真实的现金。 不适合开发、调试和测试,
所有节点都是全局的并且速度较慢
而对于一些商业应用,只需要部分节点,比如分布式部署10-20台服务器。 无需全球网络。
2 以太坊测试网 TestNet
以太坊的测试网络也是官方提供的,顾名思义,专门供用户开发、调试和测试。 上面的合约执行不消耗真实的以太币,即不花钱
所以如果开发一个简单的智能合约,使用测试网就足够了ERC20以太坊网络链项目官方,用户可以更专注于智能合约的编写。
但是因为网络是官方提供的,所以对于以太坊技术的底层实现,Geth的各种参数接口,以及整个以太坊技术的真实性能的了解会弱很多。 所以从发展的角度来说,更好的选择是Private Network,它可以从技术底层深入理解以太坊。
测试环境网络优势
合约执行不消耗真实货币
全球化,部署在互联网环境,
智能合约的代码、执行、区块调用一目了然。
部署在测试环境上的智能合约可以被全球任何应用程序调用
缺点:
所有节点都是全局的并且速度较慢
测试网不能作为商业应用的实际落地环境
3 以太坊私有网络PrivateNetwork
以太坊的私有网络,顾名思义,就是用户通过Geth自己创建的私有网络,是一个非常适合开发、调试和测试的网络
优势
方便开发者深入了解以太坊底层技术
因为节点比较少,所以速度比较快
用户可以随时创建、销毁和重建以太坊网络
随机增加节点数,或删除节点,
可以建立在服务器上,也可以建立在自己的windows或Mac机上,
甚至一台机器也可以设置多个节点,实现一台机器上的多节点私有网络。
缺点
因为没有全球化,只有私有网络中的节点可以查看智能合约的执行、调用等。
**
2. 实践搭建私有网络
我们将练习如何使用 Geth 构建以太坊私有网络。 Geth的全称是go-ethereum,是用go语言编写的以太坊客户端,应该是目前最常用的客户端。 当然,以太坊客户端也是用C++、Ruby、Python、Java等语言编写的。 不同类型的客户端是为了满足不同的需求场景而设计的。 今天主要介绍geth(读音与guess相同)的使用。
下面的Geth实战是在Ubuntu下进行的
第一步:创建目录和genesis.json
以命令行方式创建目录,例如tmpPrivate
创建文件genesis.json,填写以下内容。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
第二步:执行命令,创建区块
切换回命令行ERC20以太坊网络链项目官方,执行命令,创建块
- 1
如果发现没有安装geth,先安装:
具体安装:
从包管理器安装
通过 PPA 在 Ubuntu 上安装
在 Ubuntu 发行版上安装 go-ethereum 的最简单方法是通过内置的启动板 PPA(个人包存档)。 我们提供了一个单一的 PPA 存储库,其中包含我们的稳定版本以及我们的 Ubuntu 版本 trusty、wily、xenial 和 yakkety 的开发版本。
要启用我们的启动板存储库,请运行:
- 1
之后你可以安装 Go Ethereum 的稳定版本:
- 1
- 2
或者通过以下方式开发版本:
- 1
- 2
安装完成后,执行create block命令:
- 1
第三步:创建自己的私有链
执行最简单的geth命令创建自己的私有链
- 1
- 1
第四步:在自己的私链上创建用户
输入命令eth.accounts,我们会发现返回值为[]
这是因为此时以太坊的私链虽然已经创建,但是还没有账户。
输入命令 personal.newAccount(“xxx”),该命令将创建一个密码为 xxx 的新用户。 当然用户也可以将xxx改成123,或者123456,或者任意密码
再次输入命令eth.accounts,我们会发现已经创建了一个新用户,也就是说我们已经创建了一个账户,重复personal.newAccount() & eth.accounts我们可以创建多个账户
第五步:输出区块链的Log
第三步,我们执行的代码
- 1
代码 console 2>> geth.log 表示将控制台的一部分输出到文件 geth.log 中。
再打开一个终端,找到geth.log所在目录,执行命令tail -f geth.log,不断输出以太坊的日志
整个过程如下图所示:
第六步:最重要的一步来了,开始挖矿!
在命令行上执行命令 miner.start() 开始在我们的区块链上挖矿
此时Geth.log的输出应该是这样的
等到 100%。 这条以太坊私链将正式上线,以太坊将源源不断地产生。
当心:
1、挖矿挖出的以太币会默认保存在第一个账户,即eth.acccounts[0]。
挖矿是执行智能合约的基础。 如果停止挖矿,不仅以太币的产生会停止,所有的智能合约调用也将无法进行。
如果真的要停止挖矿,可以执行命令miner.stop()停止挖矿
按照上面的命令,应该可以实现以太坊挖矿。 如果不行,可能有之前存在的链,此时要删除之前的数据。Mac下,直接删除~/.ethash文件夹和里面的文件即可
第七步:最后挖矿开始时的日志是这样的
第八步:挖矿开始后,查看主账户中的以太币数量
- 1
- 2
只要结果不为0,就说明挖矿成功!