Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

用虚拟机搭建NEO私有链

杨小公子君莫邪
102 0 0
用虚拟机搭建私有链" Z  i; M5 b, E1 C
本文将介绍如何使用四台虚拟机来搭建私有链,以及如何从自己的私有链中提取 NEO 和 GAS。) u. [1 R. E4 s4 ]
配置虚拟机9 I, i( z6 J. q
NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。为了演示,我们在 Azure 上创建了 4 台 Windows 虚拟机,大小为 Standard DS1 v2 (1 核心,3.5 GB 内存),你也可以在局域网中或虚拟机中部署私有链。
* N7 Q4 F7 e, S6 m, P9 t0 l' M: T6 j% n
创建好后,要开通 10331-10334 端口,具体方法为在系统的 防火墙-> 高级设置-> 入站规则 中新建规则,然后添加端口 10331-10334。
: Z+ E2 U5 A, k' e/ I; d) v9 |: Y2 `7 J% n# S
[!Note]
& Q: X5 S) W: g如果你在云服务器上创建的虚拟机,还要登录虚拟机的管理后台,设置网络安全组& j: y5 B" _6 k% w/ E
Azure 上的设置方法为:网络-> 入站端口规则 -> 添加端口 10331-10334。; F$ \* q9 L& D. r/ d0 M) w+ L

$ f9 a( c- j5 e6 q6 A4 |. ^$ G1 h创建好虚拟机后,将四台虚拟机的 IP 地址保存下来以备后用。
; Z- E# J6 p- \1 D安装 NEO-CLI
+ J* ~) j/ C# _4 w5 b分别在四台虚拟机上进行如下操作:# o0 K; Q* N7 S' R
  • 参考 安装 NEO-CLI ,安装 NEO 客户端。
  • 下载 SimplePolicy 插件并将解压后的 Plugins 文件夹拷贝到 neo-cli 目录下。
    4 |, e- s# m& X& y" q3 i* G& H
    . N% F1 V" X7 y. e3 o6 i* [% R创建钱包5 S! B$ Q$ ]  g3 r

  • & m/ y" K( _7 G* b$ n8 x4 F在任意一台虚拟机上使用 NEO-CLI 或 NEO-GUI 创建四个钱包文件,下图以在 NEO-CLI 上创建为例。
    5 d/ A7 y, m2 q8 z+ Q9 j  P: i. {. o* x2 M& C- {

  • # h0 p% ~2 s5 T: M( i; @将四个钱包的公钥保存下来以备后用。可以直接复制上面的公钥或者用 CLI 命令 中的                                                                            list key 命令查看公钥再复制。( e/ G4 W" ]# x: q) u( [
  • , c' e% Y, v- ?: S) B% J. @
    将四个钱包文件分别复制到四个虚拟机的 neo-cli 节点目录下。
    % @! C: O7 h7 v, [* N; c5 k; e" v4 d6 M0 q
    * Y- n* Y' x" u
    修改节点配置文件. ^" ?/ K/ Q/ `! y7 S

  • & ]5 ?- t/ h3 W0 X: }3 o4 `配置每个节点的 protocol.json 文件 ,修改以下参数:5 t$ O, k8 P3 A1 Q
  • Magic :Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。Magic 的类型为 uint,注意填写的数值要在 [0 - 4294967295] 区间内。
  • StandbyValidators:将创建好的四个钱包的公钥填写在这里。
  • SeedList:将四台虚拟机的 IP 地址填写在这里,端口号保持不变。4 P9 L* @5 s8 c& X9 k

    0 n  u% r# [; |  P& u  I; F. H$ _{5 w$ Y& F% ^' A( L
      "ProtocolConfiguration": {' E( T% ~  Z$ d; A3 g8 y
        "Magic": 123456,$ i/ b/ x! ^( J0 A
        "AddressVersion": 23,) G% l+ Q, r5 {8 c
        "SecondsPerBlock": 15,1 R1 Y" {* a$ I. K$ E
        "LowPriorityThreshold": 0.001,     
    6 [% w5 _$ ~% _& Q- {    "StandbyValidators": [      "03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",      "0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",      "026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",& |: M' {! ?$ z- H8 |0 K
    "03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
    9 C$ T6 @% x" b4 K0 d    ],' G2 q# I$ {  C; `# P+ @' |5 E
        "SeedList": [
    ) E1 h! h; M, G1 x. ^      "13.75.112.62:10333",
    & \! g  X4 `" i' ~7 t      "137.116.173.200:10333",& Y: O& A4 ^% }# S& K6 _/ z* y/ f
          "168.63.206.73:10333",/ V$ z- e3 X6 N/ A* V
          "137.116.171.134:10333"
    & ?4 t& A" ~3 w    ],
    ( ]8 e9 A3 x. S7 O; m7 ]    "SystemFee": {
    2 l2 Z# h6 Z: _! f* B      "EnrollmentTransaction": 10,
    6 l6 C8 a! k; l6 y; p  q      "IssueTransaction": 5,) P8 v( A1 T- D( q  J6 C7 h
          "PublishTransaction": 5,
    7 B7 F# q0 K; s& L2 }' ?      "RegisterTransaction": 100' \7 {/ v! r: s$ ]7 I$ O2 M
        }7 q, S/ w$ U# x6 J$ v/ P
      }$ Q$ B  z1 }, O$ S5 `
    }
    ' E% P# g" L. V, ~; Q+ E

  • * Y8 W6 ]6 U% t6 l+ @% K. M配置每个节点的 config.json 文件,以便打开钱包,开启共识:3 X. n' t3 W0 k7 W
  • Path:设置对应的钱包名称。
  • Password:钱包密码。
  • StartConsensus:设置为 true 开启共识。/ B' o! h* w( O5 f: W' K
    + S% G# I' o. ]
    "UnlockWallet": {
    2 l& K1 ~% [- ?$ `; j/ K  "Path": "1.json",' n2 ]8 X  A. T( J3 m
      "Password": "11111111",. V4 t* Q- r( l% X. A, ^
      "StartConsensus": true,
    " C9 p5 Q1 X  h: n( F5 l2 X  "IsActive": true; @  e: Y& e$ |+ N' D& A/ F3 N
    }4 x6 c% [* L) q$ z; b

    8 t$ Y4 Y3 X  L! i5 G
    % u$ B1 a( L6 u3 n: {3 ^启动私有链1 I9 v( {: g: _
    在四台虚拟机上依次运行命令行,进入 neo-cli 目录并输入命令 dotnet neo-cli.dll /rpc 启动节点,这时程序会自动打开钱包并开启共识。( [; M; ?3 a& Y" s% u" Y
    如果上述操作成功,可以运行 show state 来查看节点状态。若高度发生变化,则说明共识过程正常。4个节点的共识过程如图所示:
    + E- J& s  r" I8 Y6 w/ v( G
    ; J7 S4 Z6 W) {4 个节点即使关掉一台依然可以达成共识,如图所示
    & P. V0 O) C: {* H6 ]7 _. Q
    ; g2 S* x$ n) ^( P9 y& M, E; R提取 NEO 和 GAS
    0 G& K% `1 b( m0 W" Z1 I在 NEO 网络的创世块中存放着 1 亿份 NEO,当私链搭建起来后,Gas 也将伴着新区块的生成而生成。你可以使用 NEO-GUI 从多方签名合约中提取出这部分 NEO 和 GAS 以便内部开发测试使用。6 n+ ?# u; @) H8 G% h0 _. [
    安装并配置 NEO-GUI
    % X9 L! L8 b* I- }+ x5 F
  • 从 Github 上下载 NEO-GUI 并解压。
  • 修改 NEO-GUI 配置文件 protocol.json 使其连接到私有链中:/ u  D% D) u  t' K* M
  • StandbyValidators`:将前面创建的四个钱包的公钥填写在这里。
  • SeedList:将四台虚拟机的 IP 地址填写在这里,端口号保持不变。
    ! L7 l! r5 f9 d4 d
  • 配置 config.json 文件,设置端口与其它四个节点端口不冲突。如果端口冲突,NEO-GUI 将无法与 NEO-CLI 同时运行。
    / Q1 h2 ^* f3 E( h9 p8 }3 Y) S
    , H8 l/ L/ u/ ?6 m0 M$ `运行 NEO-GUI,打开任意钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。( I) p2 I% v- A; U
    创建多方签名地址# P& B* i: \# C( t$ W5 |
    在 NEO-GUI 中依次打开四个钱包,进行以下操作:
    # ^+ l3 N; F3 p, H( \2 H
  • 2 A7 K$ O% P' S9 z( N$ i; B; {
    右键单击账户页面空白处,选择创建合约地址 -> 多方签名在每个钱包里添加多方签名地址。
    $ _* }9 h& f$ ?+ [3 S, i

  • , M; L# `* ~! c输入四个钱包的公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),点击 确定。/ e5 y: Y" x+ R2 Z7 a  b3 E( m( e

    ( u* f; V7 T, s8 W3 a2 |4 [

  • - d( p$ h5 ?4 \0 d点击 钱包 -> 重建钱包索引。% B! j( @- [& e; q) |/ C6 m1 K
    $ @0 g7 m$ f/ @9 G/ J

    - u- G. q1 k2 @# Y5 A( Q( ]1 o3 L. L( y$ S/ ]7 a: y$ G- k
    [!Note]+ c+ D0 U' y: K3 I2 ^- ?* ]
    四个钱包都要添加多方签名地址,否则签名会失败。
      W; K! C( ?% o- Q! s

    7 M& U& O6 b" c9 ?8 T# q$ S你将看到合约地址中出现了 1 亿 NEO,如图所示。
    ) V; T. m* a+ i& `' `" D( u. j# C4 e2 H; B% X$ @  W7 q
    提取 NEO 到标准地址( k3 ]. c0 w/ n# J( S* `
    进行如下操作,将 NEO 从合约地址转到标准地址中:
    3 _4 z4 s# C$ m8 A9 v& @  v/ Y8 ~2 t7 U

  • , W& W! e% {* Z/ O打开四个钱包中的任意一个,点击 交易-> 转账。
    ) C. [( S% s5 A- ]6 d# Z; u

  • ) a- }$ L* N0 |6 E% g* r4 S输入要转入的标准地址,将 1 亿 NEO 转到这个地址中。
    # m! N$ @. b1 o+ d1 T. g' @: r
  • # L1 r4 H1 {1 q3 O' s, w
    系统会提示“交易构造完成,但没有足够的签名”,将代码复制下来。9 V5 m* o) G% W" \
  • " S+ V# }3 Y7 G7 D+ j
    打开第二个钱包,点击 交易 ->签名 。
    5 t9 O( ]" X& x7 ?; }$ _
  • 0 j1 {- Y2 w* l. _: E' Z  V2 E2 e
    粘贴刚才复制的代码,点击 签名, 然后将生成的代码复制下来。4 h  i3 z, z* A2 a
  • + G0 D0 f% u+ ~  |* F( G
    打开第三个钱包,点击 交易-> 签名,粘贴刚才复制的代码,点击 签名。
    $ w* r7 M9 G' n) E* `" _这时窗口中显示 广播 按钮,代表交易已经签名完成,达到多方签名合约要求的最少签名数量,可以广播。" [) D0 w- R0 j: W. Q& R2 [

  • $ N. J  P. X0 A: z( P点击 广播 完成转账交易。/ d+ V9 ~+ P4 }+ Q: L- R
    等待片刻后将看到 1 亿 NEO 成功转入了标准地址。% a- V: K3 Q: S( V) J

    " b* w0 \: `5 Q4 A3 r% p& P- X5 a; K. V. V  w8 j6 m  [, @, a7 R

    " A: f. v6 a" k2 {4 Q7 m% Q& ^提取 GAS 到标准地址& p! B( V7 ]( ^7 l
    打开要转入 GAS 的钱包账户,点击 高级 -> 提取 NeoGas -> 全部提取。% M& E% A6 U! ]: g
    4 D6 y) c. `# y' T2 y2 N8 b% ~
    接下来的操作与转账 NEO 类似,将没有足够签名的代码复制下来,依次打开第二个和第三个钱包,完成交易签名和广播。提取成功后如下图所示。
  • BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
    声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    成为第一个吐槽的人

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

      0

    • 关注

      0

    • 主题

      13