Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
简而言之:我们将在同一台机器上设置两个节点,在我们的localhost上创建一个点对点网络。除了两个节点之外,还将设置启动节点(发现服务)。
' q8 A' t4 |- |& W% H: D我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。
3 B' k5 N+ `% P1 j/ o3 k1 A8 W在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。
# l, B" q1 d4 [7 |; {- d操作系统和软件
2 X" b+ g1 r5 y6 Z: r8 w1 h我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。& a& i7 R( T8 T, x" Q8 V3 g
对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:
! z2 ^8 p5 a) r8 n4 Y0 V+ G+ _" B2 T4 E
和Geth 1.8.1-stable:
6 _. i1 p$ ?4 Y7 B! b7 n- k0 \9 l1 f9 j: b6 O7 i
让我们开始吧0 n0 h1 D) b3 Y$ ~
1.0 概述
  p8 R. O. j! W4 q让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。1 E" h5 ?' `, `5 k( z/ ^

6 A5 @" X9 [) {# R0 S1.1 创建工作区
/ Q1 U5 c; s; u* S) n0 {/ X  J8 ^6 O1 R( x; }% A! z  j2 R
1.2 创建你的账户& V, i( p, Q( z- d. k
账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。
6 C  I" j# B5 b在Geth行话中,投票节点称为Sealer。) V3 L2 W8 W3 ], _
对于节点1:( S# T9 P9 S4 E, _
. S( d/ ^* i/ R$ x0 g
节点2:, n- I( S, R5 B# ~) y

! U* W. K6 K' N' w! t这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。
* C, a6 C" R2 @! c我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。& c' K# E+ _% H% |
4 F" d6 v1 Z& w9 V) j6 c
对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)' w6 O) q* G! d: B3 S

5 v0 a1 N8 j6 k, k3 n* U4 y1.3 创建你的Genesis文件0 Y, _; e8 T" D8 U3 P
genesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。
7 i  D+ X  q2 X  W( lGeth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:7 v4 I! E4 s; M
devnet$ puppeth
+ i1 a. Y6 g# T并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。( \" t' x5 s3 v: `; m; ?+ q0 q+ k
% k+ w, D+ E! V' K& B8 _& x
注意:PoA没有采矿奖励. W6 P" Y" O: q! y
因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)( q7 W' W' m, q/ M
1.4 初始化节点
- b8 X( d* R& O/ B% x现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。% o- \- L5 d6 m5 t  n5 \# i

! P+ p7 `- ?* f0 _  u& T注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。
+ T/ w# X- ~" d- `1 k1.5 创建一个bootnode
( Y9 `$ @) g5 j7 Y6 Q1 U% x/ J9 s+ t启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。
, h- c" H8 f! N5 x: L1 j  ?7 D7 |7 |初始化bootnode:
# `# o( }. q' P' W5 Ydevnet$ bootnode -genkey boot.key
# U% [* }  h( A! F这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。  b, v) I) O: v% A2 |% C: w. j/ h& r0 M
1.6 中途庆祝下( j# R" ^; g( Y5 L# {; S
恭喜!第1章完成:),来试试。
2 [5 a& R$ ?$ s. e2 ddevnet$ tree -L 2# S' W8 S# @+ d9 R6 O/ y7 O: g
并将输出与1.0节进行比较。希望你应该得到同样的一个tree。
' o: Z2 F0 j* E: m此时设置已完成,我们已准备好使用此区块链。
标签: Geth POA 以太网
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天道唯 小学生
  • 粉丝

    0

  • 关注

    2

  • 主题

    2