Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
简而言之:我们将在同一台机器上设置两个节点,在我们的localhost上创建一个点对点网络。除了两个节点之外,还将设置启动节点(发现服务)。9 `( S" G9 m) a
我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。. B3 K% T) S4 |+ M2 V
在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。& Y& A+ H8 X- V* ^9 Y% r
操作系统和软件- Y4 P9 X; M5 r! Q: U# m* \) J2 R
我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。* K0 L$ {$ A# z0 N9 [3 r0 Y
对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:
$ I* m+ h( r. A4 W: Q; M+ _. c- M- X( W9 L1 L0 F
和Geth 1.8.1-stable:
3 L5 J8 j# U/ j, \+ I& k* _
2 Q# }$ B1 I- p/ ]0 C# [# @3 Q让我们开始吧& G+ v3 C/ w; N
1.0 概述
0 X( {$ z0 M/ l8 L, _6 v# S( T0 s让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。
& Y. N4 d, g# D- x  G9 ~' F/ y
& V" K9 B( @4 \% d: U: H1.1 创建工作区
5 ?1 _7 a% z$ K( D
: T2 X; h( G% ~1.2 创建你的账户
: x/ w* d, L: e# X2 D账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。" h! G+ y, E) S! ?! _- J) s: {
在Geth行话中,投票节点称为Sealer。# J6 x& w2 a8 g2 g+ A" V
对于节点1:
6 M" P$ }/ i  w* O+ o& D+ v% B6 g1 ?7 S- F4 p% q
节点2:
9 w5 `, c" s+ z0 D; S0 }6 Z' P# A+ b- r" H3 P
这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。4 u# W8 s: h+ \/ N
我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。7 a) p& n9 f+ n
$ {# I, P+ V5 Z7 T% s
对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)
, z( r  N& f/ D/ ^* F* I$ D( {4 E: k: \# c. o5 e7 o0 u1 B: H! B
1.3 创建你的Genesis文件1 k$ E0 z: b/ y( q0 y1 l" [
genesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。
; H" s! A" H  z( ~  \Geth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:3 r/ K! f1 s: `/ T
devnet$ puppeth
% k# {1 b% T/ C5 Q并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。
( o' m7 o% u' s6 ^5 {5 m
2 E$ c' i# t* ~0 J注意:PoA没有采矿奖励
! a# {3 I7 M3 _- H3 i" z因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)8 [1 s. M3 f: s; o
1.4 初始化节点. M# D6 {8 P2 Q5 s
现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。
5 M  @% `+ ^" C( Q0 \
" J* f; s$ g8 ^3 B- `注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。
+ b7 D3 b; @) u3 F3 t3 Y8 p. R" G1.5 创建一个bootnode6 u* Q' V4 F1 p& P, p! X$ Z3 W
启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。" R# Y# W6 W+ J# O% x' ?+ t6 \: k
初始化bootnode:: v( C* e/ j- R) J, Y2 L* V
devnet$ bootnode -genkey boot.key+ W3 _8 \3 J; @) q
这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。, \, i+ t1 ~; n+ r8 U: P
1.6 中途庆祝下. R& T* |/ r$ g( _" l' E
恭喜!第1章完成:),来试试。1 Y& T( g. n  r5 o
devnet$ tree -L 2
! b' w) U! _1 `& U% [' s( B并将输出与1.0节进行比较。希望你应该得到同样的一个tree。) J; ^$ A! F! I2 p0 D9 ^& p- X9 \
此时设置已完成,我们已准备好使用此区块链。
标签: Geth POA 以太网
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天道唯 小学生
  • 粉丝

    0

  • 关注

    2

  • 主题

    2