主页 > imtoken官网是哪个 > (2023年更新(今日/知乎)以太坊私链建设(中国)搜狗百科

(2023年更新(今日/知乎)以太坊私链建设(中国)搜狗百科

imtoken官网是哪个 2023-06-13 07:17:55

本文是在Windows上搭建私有链。 如果要开发区块链,强烈建议在Linux环境下使用。 构建过程与Windows类似,可参考以下内容。

1.安装geth客户端

geth是Go Ethereum,一个用go语言实现的以太坊客户端。 Geth 是以太坊协议的具体实现。 通过Geth,您可以实现以太坊的各种功能,如创建、编辑和删除账户、启用挖矿、转账以太坊、部署和执行智能合约等。

下载链接:

安装指南:

2.开始建链(参考区块链学派)

step1: 创建目录和genesis.json

我在E盘创建了tmpPrivate文件夹,在该文件夹下创建了genesis.json文件,用notepad++打开,写入如下内容:

{ "config":{"chainId":15,"homesteadBlock":0,"eip155Block":0,"eip158Block":0 }, "nonce": "0x0000000000000042", "timestamp": "0x00", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x00", "gasLimit": "0x80000000", "difficulty": "0x400", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { }}

参数说明:

混合散列

用于使用随机数进行挖掘,随机数是从前一个块的一部分生成的哈希值。 注意him和nonce的设置需要满足黄皮书4.3.4描述的条件。 区块头有效性,以太坊 (44) 部分。 .

随机数

nonce 是用于挖矿的 64 位随机数。 注意it和mixhash的设置需要满足黄皮书4.3.4描述的条件。 区块头有效性,以太坊 (44)。

以太坊私有链搭建_ubuntu搭建以太坊环境_以太坊的私有链

困难

设置当前区块的难度。 如果难度太高,CPU挖矿会很困难。这里设置一个较小的难度

分发

用于预先设置账号和账户的以太币数量。 因为私链挖矿相对容易,我们不需要预先设置账户存币,需要的时候可以自己创建。

币库

矿工账号,随便填

时间戳

设置创世块的时间戳

父散列

上一个区块的哈希值,因为是创世区块搭建私有以太坊节点,所以这个值为0

额外数据

附加信息,随便填,可以填写你的个人信息

气体限制

该值设置了总耗气量的限制,用于限制一个区块可以包含的交易信息的总和。 由于我们是私有链,所以我们填最大值。

ubuntu搭建以太坊环境_以太坊的私有链_以太坊私有链搭建

几种可能的错误:

Fatal: invalid genesis file: missing 0x prefix for hex data: 这个报错信息的意思很明确,就是在你的json文件中,对于十六进制数据,需要加上0x前缀

Fatal: invalid genesis file: hex string has odd length: 从v1.6开始,设置的十六进制值不能是奇数,比如不能是0x0,而应该是0x00。

Fatal: failed to write genesis block: genesis has no chain configuration: 此错误消息表示您的 json 文件缺少配置部分。 看到这个信息,我们不需要将geth返回到v1.5版本,而是需要添加config部分。

Error: invalid sender undefined: 这个错误不会导致初始化失败,但是会出现在以后的转账(eth.sendTransaction),或者部署智能合约的时候。 解决办法是chainId不能设置为0,如果按照github上官方的配置文件,就会出现这个错误。

step2:创建创世块

命令行进入tmpPrivate目录搭建私有以太坊节点,输入

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

完成创世块的创建,结果如下:

这个时候你可以注意一下。 此时会在当前目录下添加geth和keystore两个文件夹:

区块链的相关数据存储在geth中

keystore 在链上保存用户信息

step3:创建自己的私有链

执行创建私有链的命令:

以太坊私有链搭建_ubuntu搭建以太坊环境_以太坊的私有链

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

范围:

--datadir 代表文件夹地址,

--nodiscover 表示私链不应该让公网节点发现里面的代码。 console 2>> geth.log 表示控制台的输出部分到文件geth.log。

结果:

step4:在自己的私链上创建账户。

输入eth.accounts,返回[]

因为还没有用户,所以需要创建用户并执行

个人的。 新帐户(“123”)

创建一个用户,“123”指的是密码。

您可以多次执行此命令以生成更多用户。 结果:

step5:输出区块链的日志

这里需要tail.exe。 由于 Windows 没有它,您需要下载它。 下载后解压到C:\Windows\System32文件夹。

然后打开一个命令行窗口,进入geth.log所在目录,执行tail -f geth.log,可以不断的看到日志内容的变化。

ubuntu搭建以太坊环境_以太坊私有链搭建_以太坊的私有链

step6:开始挖矿

在第一个命令行窗口执行miner.start()命令开始挖矿。 . 然后在第二个窗口查看日志变化。

部分日志:

首次挖矿时,会先生成挖矿所需的DAG文件。 过程有点慢。 进度达到100%后开始挖矿,屏幕上会刷新挖矿信息。

谨防:

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

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

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

4.根据上面的命令,以太坊挖矿应该是可以的。 如果没有,可能有一条链是之前存在的,此时要删除之前的数据。 Windows下,删除ethash文件夹和里面的文件即可。

step7:查看以太坊挖矿量

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

结果:

只要数字不为0,就表示挖矿成功。

step7:在两个账户之间转移以太币

以太坊私有链搭建_以太坊的私有链_ubuntu搭建以太坊环境

先显示两个账户(acc0之前已经写过了,不用再写了)

acc0 = eth.accounts[0]acc1 = eth.accounts[1]

设置转账金额,例如转账0.01 ETH(单位换算):

金额 = web3.toWei(0.01)

开始传输:

eth.sendTransaction({from: acc0, to: acc1, value: amount})

但是可能会失败,类似下图:

这是以太坊的一种保护机制。 该帐户将每隔一段时间自动锁定。 此时,除非账户解锁,否则账户之间的任何 Ether 交换都将被拒绝。

这时我们需要执行personal.unlockAccount(acc0),输入密码解锁acc0。

然后重新执行

eth.sendTransaction({from: acc0, to: acc1, value: amount})

这个命令。

此时再次查看acc1的账户,Ether的数量不再为0。

另外需要注意的是:在账户中转账以太币时,不能停止挖矿,否则转账不成功。

(目前只有这些,以后会添加)

币圈新闻,版权所有丨如未注明,均为原创丨本站受BY-NC-SA协议授权

转载请注明原文链接:(2023更新(今日/知乎)以太坊私链建设(中国)搜狗百科