Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
简而言之:我们将在同一台机器上设置两个节点,在我们的localhost上创建一个点对点网络。除了两个节点之外,还将设置启动节点(发现服务)。, R% f1 c! P  u1 V/ s
我花了相当长的时间和广泛的研究和谷歌搜索,最终有一个坚实的以太坊开发环境来测试我的智能合约和我的DApps。
5 E4 C7 s3 w7 w: p2 G* C9 u. H* T在这篇文章中,我决定分享我如何使用Geth的clique共识引擎设置一个Proof-of-Authority网络。这是我通过回馈感谢小区的方式,并希望让任何愿意探索以太坊宇宙的人都能过上更轻松的生活。+ w& C6 [5 D# h) ~2 r# i( W
操作系统和软件+ b  P) r" {( q' J. ^2 z
我的操作系统是Ubuntu 16.04 LTS(这个tuto是在一个新的虚拟机中完成的)。) I7 G6 S; y+ \8 M& B0 l" n0 ~9 J9 ?
对于以太坊客户端,我使用的是Geth(以太坊protocole的Go实现)。我相信Geth很容易安装,有很多很棒的教程,所以我不打算在这里安装任何装置。我目前正在运行Geth 1.7.3-stable:
( u& E7 Z7 f3 L* O+ W) L1 p( l
- D4 l5 i! E) D和Geth 1.8.1-stable:
" X0 M. {0 T! M2 q4 o) |# P4 h1 \
让我们开始吧
& D6 O. x+ V2 k: q5 F7 k% e1.0 概述
; Y2 b0 w) M# S' S2 G# `让我们从头到尾…为了清楚起见,这是你完成第1章后应该得到的。5 y" M+ _6 R7 r2 X" G

" l( i" r3 w/ F% d: x1.1 创建工作区
+ V8 N; X8 y- Z+ m# E& q: R
8 ]- T7 g. D. Z$ f1.2 创建你的账户
3 P! K/ i: Y7 g3 r账户(也称为钱包)拥有与任何区块链交互所需的公私钥对。任何挖掘节点(严格来说我们的节点不会挖掘但投票)需要能够签署交易(使用他们的私钥)并在网络上标识自己(地址来自公钥)。因此,我们至少需要两个账户,每个节点一个账户。
1 Y8 |9 t. z: c* d2 |在Geth行话中,投票节点称为Sealer。
7 T0 E) r9 K7 H& |7 N对于节点1:: ?2 ]) c1 e. P% L( b% v

$ t  o- k. w9 h* [节点2:# z$ _6 L* T; y7 A
& j: n; I" H9 ~5 u+ M3 c, x( N
这将创建包含你的账户文件的keystore/。请注意,keystore/中文件名的最后一部分是你帐户的地址(也在上面的终端中打印)。
4 p9 x2 f/ u1 l* B9 P6 S5 S我建议从终端屏幕复制这两个地址,并将它们保存在文本文件中。这将在以后简化一些复制粘贴工作。但请记住,你可以从keystore /中的UTC-datetime-address文件中读取这些addesses。
% N% w/ N1 f, a2 U/ l; n
- O; Q* G3 }4 {; ~( C7 d& ?- C; W对于每个节点,我建议将密码保存在文件中。这将在以后简化某些流程(例如解锁你的账户)
2 z8 ~( ?2 n. q# d6 [
& M$ l9 V9 s6 y9 P/ }7 \7 H1.3 创建你的Genesis文件* a3 r  P. G6 k# c- I! H
genesis文件是用于初始化区块链的文件。第一个块,称为genesis块,是根据genesis.json文件中的参数精心设计的。
4 i& S* Z+ \) v' y, _9 |Geth带有一堆expeuables,如puppeth或bootnode。你可以在Geth github上找到完整列表。Puppeth消除了从头开始创建一个genesis文件的痛苦(并做了更多)。开始吧:0 a, q( v% o, y% y3 W5 i- Y7 ^
devnet$ puppeth! Q* A( a2 N) {% x
并愉快地回答问题(每个值都可以在以后手动更新,所以不要花太多时间为第一次试验设计它)。
" J) \; H6 v* |8 U0 N8 H( K" N, v" ]/ e* J& ?
注意:PoA没有采矿奖励. Q$ f: J3 t5 v6 y
因此,我强烈建议你将一些ether(以wei为单位定义)分配给genesis文件中的一堆地址,否则你将在没有任何以太的情况下提交,因此无法支付你的交易费用。你可能有一个0的gasPrice,但有时会导致可能受扫描影响的节点的不良行为(如不根据网络上其他节点的配置广播待处理的交易)。不过我鼓励你玩每个参数:)
5 ?1 d% T4 g. p& _1.4 初始化节点
1 s+ [$ O) y) ^4 K" t现在我们有了genesis.json文件,让我们初始化创始块!必须使用相同genesis文件初始化每个节点。# N* V( {" R3 m" I; h' A

/ ^5 S% H1 k- {3 b! ^注:加入以太坊主网或Ropsten测试网或Rinkeby测试网时,您的节点如何知道创世体参数?它们已在params/ config.go的源代码中定义。7 y" A) K! I! z) `2 }# q- S( \% G  z: W
1.5 创建一个bootnode
- a7 p; s% o# C* W: Y, c+ L启动节点的唯一目的是帮助节点发现彼此(记住,以太坊区块链是对等网络)。节点可以具有动态IP,关闭,然后再打开。bootnode通常在静态IP上运行,因此就像一个pub,节点知道它们会找到它们的配对。4 Z2 h/ }/ u2 e) n1 a/ A
初始化bootnode:3 r2 A- a& U0 p" ?5 [$ A8 S! ~- G% [* U) w
devnet$ bootnode -genkey boot.key
6 D8 W9 p3 Y6 r2 |这将创建一个名为enode的值,用于唯一标识你的bootnode(很快就会更多),我们将此enode存储在boot.key文件中。7 w3 r/ Y2 {" |
1.6 中途庆祝下" t( x4 V/ K/ O6 E+ y9 s8 D% h
恭喜!第1章完成:),来试试。
- m* i0 j  I! l8 y/ R  h) I5 vdevnet$ tree -L 2) R9 V) _+ ?+ a) o+ T* t
并将输出与1.0节进行比较。希望你应该得到同样的一个tree。/ |: l. ~9 D3 t+ F- v
此时设置已完成,我们已准备好使用此区块链。
标签: Geth POA 以太网
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天道唯 小学生
  • 粉丝

    0

  • 关注

    2

  • 主题

    2