Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
简而言之:我们将在同一台机器上设置两个节点,在我们的localhost上创建一个点对点网络。除了两个节点之外,还将设置启动节点(发现服务)。
& p- c% c+ l! u我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。( E& F9 D. a- Y4 h' A( k, w
在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。0 K  y( r% N8 H' s+ {
操作系统和软件
! C6 [) s1 ~: m/ j. s我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。
  ?; S$ |* f. n! |0 N对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:# y7 v) V0 s& e) t  Z
& A# z5 V$ @* P
和Geth 1.8.1-stable:
& \3 f8 k$ U% n9 q0 N2 P2 T. w3 e! q7 K! X: `9 Z
让我们开始吧
" m7 a$ A: E7 H7 r( J+ d! _  Q) w- C1.0 概述# \8 q& Y- S- B- T( ]. B  \) P, s6 s* \
让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。
! V# t' V* g1 Y2 N) G# O6 q. P1 i4 ]  k' J# @6 p! R& j
1.1 创建工作区
' R5 c5 J- l! J9 }5 m" `% o
& `: V3 ]; W6 f- t9 b- c+ P9 A3 D1.2 创建你的账户0 b! J' ]$ d/ i! {0 Q9 ]  V) K; h
账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。. e$ u0 Y8 [% v: L- R: v9 \7 ~
在Geth行话中,投票节点称为Sealer。
9 M  L1 W3 [, w1 [对于节点1:+ F& h7 F6 g* }% l' B/ s5 Y3 J/ ]  ]

) @$ g1 K' t0 I4 f' U节点2:( r7 n- y3 b$ |( Z+ F

2 |6 B8 P, X8 x这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。
1 ?4 J( l) T9 A5 D! Y: O7 [4 u2 r% U我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。
7 Z8 K! [  I# T4 K6 ?" O$ w; z# I
对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)
! W+ R4 P8 x( L) T9 F% W6 N, V
$ w/ A* |  i- Q7 R- i* u! V" W; c1.3 创建你的Genesis文件
  l3 O  G4 l3 |8 k. H. T9 h# vgenesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。% B$ e" @1 k6 B4 c4 ?
Geth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:- z$ F. }8 ?$ K+ y
devnet$ puppeth
+ U1 p4 R9 |2 G并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。
- p  i5 Z' }7 u& r" e
/ [6 m- U  g- _- ?* @( e注意:PoA没有采矿奖励
6 G! T/ x% ?+ d9 l# c因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)
* T* I, x' F$ J# W* k6 J4 f- }/ K" S1.4 初始化节点8 n6 B$ u: `: t3 ~& V
现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。
! b* L, _- o" C5 b7 }$ I
# x9 T3 \6 P- p  X+ Q1 O; Q( D注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。
6 X' K; Y/ K( |8 [1 o$ }1.5 创建一个bootnode7 M# o/ ?7 y5 j4 S3 z* ]
启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。
  \9 }9 d5 x4 L! l初始化bootnode:
) p0 p5 e& L$ E9 `; ^1 fdevnet$ bootnode -genkey boot.key' }9 a0 Z. F4 M% r2 v0 c" {
这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。7 O8 w& L  k' F
1.6 中途庆祝下& k* d* E! }4 W. S5 b
恭喜!第1章完成:),来试试。* M6 T& Y( I, a
devnet$ tree -L 2
& H0 x) `: e6 K% m# ^并将输出与1.0节进行比较。希望你应该得到同样的一个tree。# j; O, d1 p9 q1 ^8 O
此时设置已完成,我们已准备好使用此区块链。
标签: Geth POA 以太网
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天道唯 小学生
  • 粉丝

    0

  • 关注

    2

  • 主题

    2