Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
简而言之:我们将在同一台机器上设置两个节点,在我们的localhost上创建一个点对点网络。除了两个节点之外,还将设置启动节点(发现服务)。
1 Y# K! q4 u. Y. @" n我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。
1 T) H2 R4 v5 m3 a. {在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。& k! V% z; e% v+ p( h" L' \
操作系统和软件
! O) ?( s* `9 ~0 ?$ w9 P我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。: M5 g* R) {# H
对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:& C# f9 d' I% v% k  v4 h/ z* d+ |

( N1 I" z2 k" z4 i  [" D+ |  i和Geth 1.8.1-stable:- h3 _& H8 _) g- w
% z3 T$ M( u  X
让我们开始吧8 y" O: z' g# G3 I$ a* @9 I
1.0 概述5 {3 E3 @# L7 D6 Q9 [! S4 ?
让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。8 W/ W1 N5 B2 n: b9 t

/ s. X. L& i5 L1 D1.1 创建工作区
. G) o' \2 N1 H* E- ?
4 b# @. v! f6 |! V' V' p( f1.2 创建你的账户
" o+ j. A) v1 ]& Y  o% f. W# P3 E+ F账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。4 e, {- t3 T4 p0 ]+ j2 o5 T& Z
在Geth行话中,投票节点称为Sealer。; A' T& F# [' a% Y: Y. o6 y
对于节点1:
* B6 Y5 Y4 }+ ]' f! w. e2 R# n& u. M5 o! E# B' f' {* L
节点2:7 E+ g  C# y4 R' x4 A

. h" @1 |# |+ N0 Z/ S- k2 y这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。  K/ U5 }4 e9 y% R1 W5 V- Q! k9 T
我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。2 D1 {$ |7 v0 X+ [9 A

$ R+ a6 I4 ~" }/ h& q& [  R对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)' C# U2 H6 ]- P

( W5 u& g* G5 e" `  u9 M1.3 创建你的Genesis文件
8 U6 T2 _# ^4 f' egenesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。
( v8 B  F: U. E. j$ kGeth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:) x- B( S/ b! y) X) i5 _4 ^( |
devnet$ puppeth
. ]2 G% I- t! X: j+ F) J  Y并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。
+ K: w. `6 S0 c3 Z+ x
4 V" v  x& ?# J' ~& }' n注意:PoA没有采矿奖励, M6 D6 T. W; o" H0 p$ t
因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)5 o- h, w1 e3 h( Q6 t
1.4 初始化节点
+ b$ K. m2 Y* M5 f现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。' r7 n& J& j8 h" \5 C6 |7 U
% N6 R5 s0 k' T6 ~7 z$ L4 r
注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。
; _: J9 n( ]: U5 A3 `* E( s. H! V* \( b1.5 创建一个bootnode  h, _: H. d8 l* H) r. V* W& V
启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。
: p3 Q, x2 ^8 [3 A初始化bootnode:/ X6 r  y( G" c+ A- a% `
devnet$ bootnode -genkey boot.key' u5 u+ ~% P( @& M! v+ Y5 s  o
这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。8 x7 v; f$ y, \
1.6 中途庆祝下* J  O# o  {0 {- }: ~! H
恭喜!第1章完成:),来试试。. }3 C! D6 q# K! ?* y+ {" {
devnet$ tree -L 2' @" A) R6 E7 J( ]2 i
并将输出与1.0节进行比较。希望你应该得到同样的一个tree。# m4 I! C0 }( e4 E1 Y8 d
此时设置已完成,我们已准备好使用此区块链。
标签: Geth POA 以太网
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天道唯 小学生
  • 粉丝

    0

  • 关注

    2

  • 主题

    2