主页 > imtoken下载链接 > 区块链实践(一)以太坊网络+geth搭建私网实践

区块链实践(一)以太坊网络+geth搭建私网实践

imtoken下载链接 2023-07-31 05:11:19

1.以太网络

要了解以太坊PrivateNetwork,首先要了解以太坊的两个官方网络。 目前,以太坊官方提供了两个网络

生产环境网络测试网络TestNet

**

1 个以太坊生产网络

以太坊生产网络,顾名思义,就是生产真正有价值的以太坊的网络。 目前,生产网络已经生成了超过300万个区块,并且还在不断生成中。 每开采台币10多美元。 这是以太坊在生产环境中的状态(截图自2017-02-17)

生产环境网络优势

全球化,部署在互联网环境,

智能合约的代码、执行、区块调用一目了然。

部署在生产环境的智能合约可以被全球任何应用程序调用

缺点:

任何合约执行都会消耗真实的以太币,也就是真实的现金。 不适合开发、调试和测试,

所有节点都是全局的并且速度较慢

而对于一些商业应用,只需要部分节点,比如分布式部署10-20台服务器。 无需全球网络。

2 以太坊测试网 TestNet

以太坊的测试网络也是官方提供的,顾名思义,专门供用户开发、调试和测试。 上面的合约执行不消耗真实的以太币,即不花钱

所以如果开发一个简单的智能合约,使用测试网就足够了ERC20以太坊网络链项目官方,用户可以更专注于智能合约的编写。

但是因为网络是官方提供的,所以对于以太坊技术的底层实现,Geth的各种参数接口,以及整个以太坊技术的真实性能的了解会弱很多。 所以从发展的角度来说,更好的选择是Private Network,它可以从技术底层深入理解以太坊。

测试环境网络优势

合约执行不消耗真实货币

全球化,部署在互联网环境,

搭建以太坊公链节点_以太坊 侧链_ERC20以太坊网络链项目官方

智能合约的代码、执行、区块调用一目了然。

部署在测试环境上的智能合约可以被全球任何应用程序调用

缺点:

所有节点都是全局的并且速度较慢

测试网不能作为商业应用的实际落地环境

3 以太坊私有网络PrivateNetwork

以太坊的私有网络,顾名思义,就是用户通过Geth自己创建的私有网络,是一个非常适合开发、调试和测试的网络

优势

方便开发者深入了解以太坊底层技术

因为节点比较少,所以速度比较快

用户可以随时创建、销毁和重建以太坊网络

随机增加节点数,或删除节点,

可以建立在服务器上,也可以建立在自己的windows或Mac机上,

甚至一台机器也可以设置多个节点,实现一台机器上的多节点私有网络。

缺点

因为没有全球化,只有私有网络中的节点可以查看智能合约的执行、调用等。

**

2. 实践搭建私有网络

我们将练习如何使用 Geth 构建以太坊私有网络。 Geth的全称是go-ethereum,是用go语言编写的以太坊客户端,应该是目前最常用的客户端。 当然,以太坊客户端也是用C++、Ruby、Python、Java等语言编写的。 不同类型的客户端是为了满足不同的需求场景而设计的。 今天主要介绍geth(读音与guess相同)的使用。

下面的Geth实战是在Ubuntu下进行的

ERC20以太坊网络链项目官方_搭建以太坊公链节点_以太坊 侧链

第一步:创建目录和genesis.json

以命令行方式创建目录,例如tmpPrivate

创建文件genesis.json,填写以下内容。

{
  "nonce": "0x0000000000000042",
  "timestamp": "0x0",
 "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x0",
  "gasLimit": "0x80000000",
  "difficulty": "0x1",
 "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000""coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {     }
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里写图片描述

第二步:执行命令,创建区块

切换回命令行ERC20以太坊网络链项目官方,执行命令,创建块

geth --datadir "./" init genesis.json
 
  • 1

搭建以太坊公链节点_以太坊 侧链_ERC20以太坊网络链项目官方

如果发现没有安装geth,先安装:

具体安装:

从包管理器安装

通过 PPA 在 Ubuntu 上安装

在 Ubuntu 发行版上安装 go-ethereum 的最简单方法是通过内置的启动板 PPA(个人包存档)。 我们提供了一个单一的 PPA 存储库,其中包含我们的稳定版本以及我们的 Ubuntu 版本 trusty、wily、xenial 和 yakkety 的开发版本。

要启用我们的启动板存储库,请运行:

sudo add-apt-repository -y ppa:ethereum/ethereum
 
  • 1

之后你可以安装 Go Ethereum 的稳定版本:

sudo apt-get update
sudo apt-get install ethereum
 
  • 1
  • 2

或者通过以下方式开发版本:

sudo apt-get update
sudo apt-get install ethereum-unstable
 
  • 1
  • 2

这里写图片描述

这里写图片描述

安装完成后,执行create block命令:

geth --datadir "./" init genesis.json

ERC20以太坊网络链项目官方_以太坊 侧链_搭建以太坊公链节点

  • 1

这里写图片描述

第三步:创建自己的私有链

执行最简单的geth命令创建自己的私有链

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

geth --datadir "./" --nodiscover console 2>>geth.log
 
  • 1

这里写图片描述

第四步:在自己的私链上创建用户

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

这是因为此时以太坊的私链虽然已经创建,但是还没有账户。

输入命令 personal.newAccount(“xxx”),该命令将创建一个密码为 xxx 的新用户。 当然用户也可以将xxx改成123,或者123456,或者任意密码

再次输入命令eth.accounts,我们会发现已经创建了一个新用户,也就是说我们已经创建了一个账户,重复personal.newAccount() & eth.accounts我们可以创建多个账户

这里写图片描述

第五步:输出区块链的Log

第三步,我们执行的代码

geth --datadir "./" --nodiscover console 2>>geth.log
 
  • 1

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

搭建以太坊公链节点_以太坊 侧链_ERC20以太坊网络链项目官方

再打开一个终端,找到geth.log所在目录,执行命令tail -f geth.log,不断输出以太坊的日志

整个过程如下图所示:

这里写图片描述

第六步:最重要的一步来了,开始挖矿!

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

这里写图片描述

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

这里写图片描述

等到 100%。 这条以太坊私链将正式上线,以太坊将源源不断地产生。

当心:

1、挖矿挖出的以太币会默认保存在第一个账户,即eth.acccounts[0]。

挖矿是执行智能合约的基础。 如果停止挖矿,不仅以太币的产生会停止,所有的智能合约调用也将无法进行。

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

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

第七步:最后挖矿开始时的日志是这样的

这里写图片描述

第八步:挖矿开始后,查看主账户中的以太币数量

acc0 = eth.accounts[0]
eth.getBalance(acc0)
 
  • 1
  • 2

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

这里写图片描述