使用Geth设置基于权利证明POA的以太网私有网络
天道唯
发表于 2023-1-2 17:29:44
84
0
0
我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。
在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。
操作系统和软件# k/ ~' \( ~% O" N
我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。- `% A* \# E! K! a9 _
对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:* R+ c) l: J% _" R b
和Geth 1.8.1-stable:
让我们开始吧. P. h2 Y" d8 W! w( V; b
1.0 概述5 h0 H, P* M2 O9 `. m: m: o8 `
让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。5 v7 a- D2 _+ P* y/ x
1.1 创建工作区4 b$ e: [; k/ [3 q+ t3 _) {2 H
/ a0 O/ A4 q% c/ y7 a5 @" T
1.2 创建你的账户) |( n( Q4 _+ f: S) a
账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。, Y4 y1 [8 H8 }) Q) O7 \
在Geth行话中,投票节点称为Sealer。
对于节点1:+ @4 \& m0 v: }, G6 P2 o. y
% R- g) y _, z* v5 Y- c
节点2:
这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。
我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。
对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)6 o' @) v/ w3 F4 ]
( n/ z6 d3 X3 K+ K" N6 A6 A# C
1.3 创建你的Genesis文件
genesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。
Geth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:! A. K' C. ?0 {( Q. f+ c
devnet$ puppeth
并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。! _+ [' ]1 E/ J; D) a3 ?
注意:PoA没有采矿奖励9 N7 @# R9 _/ B0 d5 ]- i7 t
因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)* w% Z2 F* Z4 h3 a
1.4 初始化节点( U8 q. X1 G1 `" y- W
现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。) }4 t0 L- C7 P& s- H
7 y1 j, `0 [1 s) S( d
注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。
1.5 创建一个bootnode' ^2 [ u( g6 t, K
启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。
初始化bootnode:
devnet$ bootnode -genkey boot.key! ~' I7 |# y5 L
这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。
1.6 中途庆祝下
恭喜!第1章完成:),来试试。' \( z0 s: c! v9 L
devnet$ tree -L 2
并将输出与1.0节进行比较。希望你应该得到同样的一个tree。
此时设置已完成,我们已准备好使用此区块链。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
猜你喜欢
成为第一个吐槽的人