Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

用虚拟机搭建NEO私有链

杨小公子君莫邪
97 0 0
用虚拟机搭建私有链
/ X9 g( I& [* S- |9 r2 \3 U本文将介绍如何使用四台虚拟机来搭建私有链,以及如何从自己的私有链中提取 NEO 和 GAS。
$ O5 n2 ^& Z, G! g6 J! s& k配置虚拟机
: l6 g' O: ^( z5 p+ @9 ?NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。为了演示,我们在 Azure 上创建了 4 台 Windows 虚拟机,大小为 Standard DS1 v2 (1 核心,3.5 GB 内存),你也可以在局域网中或虚拟机中部署私有链。
8 ^# T5 O3 f0 Z+ t3 W$ O
7 Y+ I4 ?$ a( n3 o, c  q6 X创建好后,要开通 10331-10334 端口,具体方法为在系统的 防火墙-> 高级设置-> 入站规则 中新建规则,然后添加端口 10331-10334。. U8 w3 f% }+ g

! k' Y4 K# _' m0 t2 ^4 v, H[!Note]
8 J8 F* v  h/ k$ x如果你在云服务器上创建的虚拟机,还要登录虚拟机的管理后台,设置网络安全组: C) D% H2 Y1 t5 v& M; j
Azure 上的设置方法为:网络-> 入站端口规则 -> 添加端口 10331-10334。: M* z8 {' A8 J8 {, m% J- d; z

4 F& C, m' a5 R# E. j创建好虚拟机后,将四台虚拟机的 IP 地址保存下来以备后用。
" k' [0 y$ B* ]9 v; m  r安装 NEO-CLI
* {; l2 w7 t: q  ]分别在四台虚拟机上进行如下操作:: Y+ |8 P3 K0 U1 L$ B
  • 参考 安装 NEO-CLI ,安装 NEO 客户端。
  • 下载 SimplePolicy 插件并将解压后的 Plugins 文件夹拷贝到 neo-cli 目录下。) G) W/ }7 ^2 G* c% I1 U$ m* `4 [
    ! o, R( l5 h5 ]) r: r+ R
    创建钱包
    1 i" X. R' u- i

  • 7 B3 L1 \3 w! N5 d在任意一台虚拟机上使用 NEO-CLI 或 NEO-GUI 创建四个钱包文件,下图以在 NEO-CLI 上创建为例。& f7 y( V9 w2 q- {
    " w5 D% ^# m$ y* F7 L. |, ~

  • 9 ]2 _: l  T# a: `2 ~将四个钱包的公钥保存下来以备后用。可以直接复制上面的公钥或者用 CLI 命令 中的                                                                            list key 命令查看公钥再复制。
      g8 I( w0 P7 d, L
  • 7 d* \6 \5 T2 S
    将四个钱包文件分别复制到四个虚拟机的 neo-cli 节点目录下。
    % V% I+ J6 y, F3 X! y8 ?+ R  `5 l
    2 F. r" L! x. ^/ ~, \& t; L% r
    ! E$ t$ Q) ^. g0 x, c修改节点配置文件+ Y" e/ q& I1 S1 o

  • % K* V: L6 S0 _! [/ ^1 s配置每个节点的 protocol.json 文件 ,修改以下参数:4 J% G1 L/ h9 X
  • Magic :Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。Magic 的类型为 uint,注意填写的数值要在 [0 - 4294967295] 区间内。
  • StandbyValidators:将创建好的四个钱包的公钥填写在这里。
  • SeedList:将四台虚拟机的 IP 地址填写在这里,端口号保持不变。  ?7 \# K' ^' C: g

    * w- m# c; N4 a$ z, W% H{5 M* r  V* r9 H
      "ProtocolConfiguration": {
    ! a+ t8 d  A! ?! @/ {- @0 h    "Magic": 123456,& U, [6 K. [0 t+ v
        "AddressVersion": 23,
    , e4 Z& V& w3 M9 r0 P    "SecondsPerBlock": 15,
    : i* R, @, E7 ]0 _; n2 d( H    "LowPriorityThreshold": 0.001,     
    5 V5 W* [/ w5 c; l    "StandbyValidators": [      "03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",      "0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",      "026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",. a1 M0 E' t/ T
    "03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
    6 W$ B. \! B0 H0 N" j    ],
    # \; d6 \! t7 i5 n7 X    "SeedList": [
    4 x9 O1 |- `. g* O      "13.75.112.62:10333",$ A- Q. z4 y2 L3 {, \9 W
          "137.116.173.200:10333",- y- z6 \. ]9 i4 A% S" V7 V2 q
          "168.63.206.73:10333",
    . J6 y% U4 c0 f1 J! |      "137.116.171.134:10333"
    5 o* y6 m) X; i8 ^  V* m    ],
    1 s) a; F! a* k5 B$ a4 `* \    "SystemFee": {8 ?$ E3 ]' \. B0 z0 E. X1 M7 `3 v
          "EnrollmentTransaction": 10,+ D: S! Z. F' r+ E2 e1 `5 N3 |
          "IssueTransaction": 5,
    : O, f# t9 v' i7 b- U      "PublishTransaction": 5,+ i- X. O" b0 p
          "RegisterTransaction": 100
    7 [9 Z, m9 B% l, ?    }
    9 G/ V# n# `' ^" ^2 V/ \1 D  }: u% o8 J; J% h8 }3 O( q
    }/ S+ T- m. E( r" s# B

  • * g) P0 t$ {* x, M+ n4 c配置每个节点的 config.json 文件,以便打开钱包,开启共识:2 U# b, `3 A- B
  • Path:设置对应的钱包名称。
  • Password:钱包密码。
  • StartConsensus:设置为 true 开启共识。( t' c5 z; Q4 c: o; Y
    8 V0 f* o/ H' v8 O, O
    "UnlockWallet": {
    " T) T5 I' e3 }3 w5 f+ _  "Path": "1.json",
    * r; z, Q+ ~) z  "Password": "11111111",/ {: ~2 l3 Z' ^9 f( o9 Y6 E% ~$ s
      "StartConsensus": true,
    - J0 S8 J4 h/ a, G; l  "IsActive": true
    ( W) B! i1 E) l6 Z% a' [8 w! n}
    & C+ z+ r! l- ^- g' t3 j6 Z9 C$ C9 j+ Z( u
    3 b2 i. n7 I8 {( @
    启动私有链9 [6 {: J8 ]8 [& w
    在四台虚拟机上依次运行命令行,进入 neo-cli 目录并输入命令 dotnet neo-cli.dll /rpc 启动节点,这时程序会自动打开钱包并开启共识。( Q) \) O( G% |/ u9 ?' r
    如果上述操作成功,可以运行 show state 来查看节点状态。若高度发生变化,则说明共识过程正常。4个节点的共识过程如图所示:
    ( c# }- ]+ K+ W; B3 W5 b" x6 ]' x7 N; S5 }: _( E
    4 个节点即使关掉一台依然可以达成共识,如图所示/ W/ b' e; n: q4 g8 j6 b6 L% n
    + }" O& q4 M7 t" D- J8 a
    提取 NEO 和 GAS
    7 O. |: ?, R) ?4 B( w在 NEO 网络的创世块中存放着 1 亿份 NEO,当私链搭建起来后,Gas 也将伴着新区块的生成而生成。你可以使用 NEO-GUI 从多方签名合约中提取出这部分 NEO 和 GAS 以便内部开发测试使用。
    ) d' _# M' `: [7 `: o  V3 p安装并配置 NEO-GUI3 ~- Q) X" A4 ^+ D
  • 从 Github 上下载 NEO-GUI 并解压。
  • 修改 NEO-GUI 配置文件 protocol.json 使其连接到私有链中:. m  u8 @% Z$ D; g
  • StandbyValidators`:将前面创建的四个钱包的公钥填写在这里。
  • SeedList:将四台虚拟机的 IP 地址填写在这里,端口号保持不变。
    $ d' ?4 _+ C+ I$ T. t* b& j: |7 K' }
  • 配置 config.json 文件,设置端口与其它四个节点端口不冲突。如果端口冲突,NEO-GUI 将无法与 NEO-CLI 同时运行。" g' g+ z1 q- G* Z+ k& W
    1 ^, `3 C# I6 E
    运行 NEO-GUI,打开任意钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。
    * n+ ^$ r, |0 [' w3 B创建多方签名地址
    + X2 k$ M2 A/ D7 o5 i在 NEO-GUI 中依次打开四个钱包,进行以下操作:
    6 ~+ O7 G$ {, @- B% F
  • ( v$ T, @# j, q2 Y9 l7 F
    右键单击账户页面空白处,选择创建合约地址 -> 多方签名在每个钱包里添加多方签名地址。" E" Y6 o& E# ~- f- X, G3 S8 z

  • ) _$ z# z9 {, h! |& K输入四个钱包的公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),点击 确定。
    8 v. v  n* r, C3 R  v- l% w0 {8 v
    ' T1 X1 W+ a% B0 F
  • , n+ V% A6 ~( `! P
    点击 钱包 -> 重建钱包索引。2 V8 k4 V9 V. g# ?/ C% w

    : C  a0 P9 y- R3 x1 t* R" C7 C+ U
    6 ]8 N2 _" k4 b! d0 N8 M( [% h( @' m* Y
    [!Note]+ \4 w' B$ t* q% m
    四个钱包都要添加多方签名地址,否则签名会失败。
    ! M) i+ d3 D$ ^/ B

    : M) G4 N% \% U1 C9 N你将看到合约地址中出现了 1 亿 NEO,如图所示。& Q) r; T" z9 E5 g" f8 S" Y+ S: A

    1 i" D9 j7 c9 s提取 NEO 到标准地址/ ]  E% O; X" I7 s
    进行如下操作,将 NEO 从合约地址转到标准地址中:
      F, k  W) y) f5 S3 t+ a

  • ( a- k1 Y# s+ C3 @7 K) ]7 z0 T打开四个钱包中的任意一个,点击 交易-> 转账。
    ) z& D; ]( h! C% Q+ \8 s- Q9 M: G3 \
  • & U$ l* M* `% Y6 y
    输入要转入的标准地址,将 1 亿 NEO 转到这个地址中。0 R9 |3 _8 M, W. l

  • % U8 v- ^% p* x# b系统会提示“交易构造完成,但没有足够的签名”,将代码复制下来。
    ! h: ~5 X* I1 y# J7 a4 ~7 C7 J

  • ! z5 _  J2 t% i* e( d打开第二个钱包,点击 交易 ->签名 。
    3 g- N9 U  \/ t5 {

  • ( n; c) m; s  K& y( L5 Z* q: d( ^粘贴刚才复制的代码,点击 签名, 然后将生成的代码复制下来。
    . U/ b: i' }3 D+ }" D. y0 o! }' r  Y

  • ' X2 I9 f6 s, ?5 K1 E: y; `- t6 j打开第三个钱包,点击 交易-> 签名,粘贴刚才复制的代码,点击 签名。
    " U- t8 r0 N& U& ^- A+ I3 _这时窗口中显示 广播 按钮,代表交易已经签名完成,达到多方签名合约要求的最少签名数量,可以广播。+ _6 i0 c, D. C% Y! I4 r
  • , \6 J9 c3 W: Q8 F. D$ r/ \8 c9 W- n
    点击 广播 完成转账交易。
    , V- ~+ O: H( {- p等待片刻后将看到 1 亿 NEO 成功转入了标准地址。
    # ?8 [4 g- X$ k: x5 u2 x, f: ]5 h2 L1 K2 T# u

    ' {3 b. T. P. N
    - X9 l8 ]. ~! x- Z: |( R9 L& q提取 GAS 到标准地址4 v3 E, t2 A; T* R( E
    打开要转入 GAS 的钱包账户,点击 高级 -> 提取 NeoGas -> 全部提取。' n, h  k0 q2 V5 l4 Q. V

    0 ~, i/ ?  p6 l1 U, x接下来的操作与转账 NEO 类似,将没有足够签名的代码复制下来,依次打开第二个和第三个钱包,完成交易签名和广播。提取成功后如下图所示。
  • BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
    声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    成为第一个吐槽的人

    杨小公子君莫邪 初中生
    • 粉丝

      0

    • 关注

      0

    • 主题

      13