Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
简而言之:我们将在同一台机器上设置两个节点,在我们的localhost上创建一个点对点网络。除了两个节点之外,还将设置启动节点(发现服务)。+ q2 p% `9 K: Q. y6 L7 g
我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。: P* ?& z( ?3 u  @8 Z
在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。
7 Q# G% Y- A& P0 Z9 C* I4 S操作系统和软件
7 t7 n) U% Q1 @. h) G8 d我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。
0 v+ l- X" R. \! N2 F9 E对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:
8 @0 t+ W5 G: }) i$ f9 o/ x- O. \! e/ _0 F/ ?1 n8 w
和Geth 1.8.1-stable:3 D' O' j( [  Z) e1 g" r
" k3 x/ A% d7 \% A
让我们开始吧
4 X+ S! Z2 v9 R' q7 k& Y) X1.0 概述
! |0 b7 Q/ \+ i' A* ~* N让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。
* O: A; A% Y1 M% h
( Q0 I3 k  z" q6 U7 Q1.1 创建工作区3 f9 E/ |+ ^; V8 ^* F) z$ Q/ J% B9 n

3 ^& |& n$ ]% A) j1.2 创建你的账户
: f9 z5 |, B3 g/ W账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。" q4 @; ~% k8 {8 J. U+ Q7 V8 A4 H. q
在Geth行话中,投票节点称为Sealer。4 G  P7 \  i* W. f$ P9 M
对于节点1:" F$ S  K2 ?( J1 y% c
+ w# T+ O0 v4 Q  h+ q. p8 N& M9 N* \
节点2:
- P6 T# ~% A1 F2 j5 I% h
  k* q8 B% n) x, I/ p4 R这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。
5 Z- h5 `% F& I9 g& G我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。
& I4 V7 `+ t& ~- Q6 A0 g; E5 g1 L" [, a+ Q) q5 @
对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)
# X+ S, E% b/ h- ?: Z8 q
4 e2 x& ]# `9 s0 ~" K3 j1.3 创建你的Genesis文件
9 \# l. f  x; c$ k1 ?" e1 U, d" Bgenesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。$ i7 V' ^5 L( Q. H! H! [
Geth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:
% W! w6 g& A3 L8 U6 ddevnet$ puppeth
' B& l; X' V" M& z, |并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。
. J( L8 }5 J) Z2 X7 r2 h8 J# d3 U, H" H3 ]
注意:PoA没有采矿奖励& x$ K8 }! I& f% S- J$ x* C  ^& ]
因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)
5 |7 ?# K7 l2 T9 J2 Y: p  }' G1.4 初始化节点
! C5 k1 t4 }. f5 X( M; _现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。; I2 N) U4 ^) Y7 V

) U3 b) T) X/ s2 Z. R8 J注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。4 R( X$ e0 ~5 O8 G9 j& H
1.5 创建一个bootnode
% p; B6 g7 v  t/ ?( E; y! S启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。
7 z2 c: ]! u# b初始化bootnode:9 T3 J- o$ L6 B1 ~8 K
devnet$ bootnode -genkey boot.key
+ i4 q  [& _* o  f这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。- A: Q" N) |. \) `8 F
1.6 中途庆祝下
. n0 B7 W  n4 G2 o2 T恭喜!第1章完成:),来试试。
$ E& ~+ s: g7 x4 v# `devnet$ tree -L 2
- P$ O7 K' J7 I6 J并将输出与1.0节进行比较。希望你应该得到同样的一个tree。, l& _7 T: X; n8 t1 A
此时设置已完成,我们已准备好使用此区块链。
标签: Geth POA 以太网
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天道唯 小学生
  • 粉丝

    0

  • 关注

    2

  • 主题

    2