Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
简而言之:我们将在同一台机器上设置两个节点,在我们的localhost上创建一个点对点网络。除了两个节点之外,还将设置启动节点(发现服务)。
& y% G) X3 @& P我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。% |, @  E/ ?: _. x% c
在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。- X  S. [% t: V" t
操作系统和软件
  W1 Q0 ?1 M. A$ |8 C; h2 `我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。
4 {6 ?0 m9 N  F+ K对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:# J6 L2 g8 B6 k9 }3 y+ j( x: E
1 y: p- E1 X/ R. Y3 n0 O
和Geth 1.8.1-stable:) |- I/ @) |: B% H$ @. f

2 P9 C( h6 A. {0 E2 g让我们开始吧
3 n! ?! B: N: z) F" [$ u( f" n. {3 z1.0 概述
/ p" J4 m2 F  @- k3 ^. `7 `% [让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。, q# _) [& H4 R) q
1 W3 g' G4 x0 L6 H5 s4 U
1.1 创建工作区
7 _7 ]& ]1 l( W7 X- M9 e) _& j9 k% x1 k" _9 d5 H
1.2 创建你的账户$ F" z, @2 t/ R3 T- H* ^
账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。
3 u0 Q7 u, a  q* K% p6 B在Geth行话中,投票节点称为Sealer。( I' K9 y5 l% Z9 J
对于节点1:
# G8 U3 |) L; ~7 U) X# j( H4 P8 j- ?+ F* L' U
节点2:
9 w$ L  J+ [9 A/ R9 E$ D2 ^4 k9 Q2 y. `& {+ ^
这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。& l$ }- C) ^( G3 e: u) z
我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。
/ d& E8 @' H6 d' q" M2 x# d4 }1 |: H2 J, P: }
对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)( x; _3 E" d, k

4 X5 o6 O( O- v* q: j. s+ i! D" J  W1.3 创建你的Genesis文件
3 L$ s! u7 F4 e0 i4 ~  S$ kgenesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。
5 O/ d4 N5 J3 @4 ~, x6 FGeth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:
  A2 s! d4 _% ^4 z9 }devnet$ puppeth0 {, w( ^! X* x" L1 B, U* u
并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。6 @# ^! Y) w" l  R. V
/ R2 u* U( s" G) M! ^
注意:PoA没有采矿奖励. m" n2 D7 _; U' O' Z! |
因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)+ J! q8 W+ \. F) O! G# q
1.4 初始化节点- c6 a$ R% ^: N% B+ x
现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。3 y- v1 d5 m; u& X+ b4 n) X; @
3 K: u9 ~( Q2 g3 p% q
注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。0 x2 {3 ^3 `1 t! c; K. Q
1.5 创建一个bootnode  e5 p; ]2 W4 A: ^9 X: t
启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。& B, u  Y5 H1 o4 ?: G
初始化bootnode:9 W- D! E5 t" i* h, X! z! r
devnet$ bootnode -genkey boot.key
" V4 F4 @, S% ]- X+ Y这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。
  m; h) {( B% R1.6 中途庆祝下: p; ~. q1 R6 j1 X
恭喜!第1章完成:),来试试。4 R! L* v/ _; ^0 [8 ^
devnet$ tree -L 2. b, B" v/ \2 T7 C
并将输出与1.0节进行比较。希望你应该得到同样的一个tree。( s0 g7 y! P2 f- Y7 n- }1 _
此时设置已完成,我们已准备好使用此区块链。
标签: Geth POA 以太网
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天道唯 小学生
  • 粉丝

    0

  • 关注

    2

  • 主题

    2