Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

阿里云上的虚拟机玩转Neo私链

李悔之2015
97 0 0
配置虚拟机
( W3 W* @7 `! A6 FNEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。8 O( m7 S. }3 X5 M$ h# x) ]
记录下四台机器的内网IP地址,后面要用。! P% q$ n2 V* M1 x" q5 J
172.xxx.xxx.1424 z' i4 d* G! C; d+ a
端口1 `/ b0 p3 P- a
如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-20334$ Y, v1 g* E7 W8 N( u) {$ I. l
阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。
" f9 Q, q$ B( x. z/ r0 J- b# ]3 Y3 U) ?! b: G! _0 M5 R% O" V  x
阿里云安全组7 L1 O% M# ?! `2 k  m9 u* Y
安装运行时: d$ O- u6 u- M+ {$ M+ s* m
运行环境
, S: C# e' H' u7 n' J# _

$ V' ~6 l- Y/ a8 g1 J) M8 x( ~0 q运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本
5 ]% j( N/ q! N  ^Windows 系统下的安装方法, r! z  B* d0 r: g  s4 y! ~

0 x& b. T6 n; Y2 X" h在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。7 q% [) ^7 ?9 Z# T
NOTE
9 X$ ^! m2 V: C$ p8 zWindows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。
5 v4 O6 }& ^) B3 \, M创建钱包( `; H6 I# m7 i, [' ^9 W' F4 |
在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面
9 A  g. `3 B: _3 i create wallet wallet.json
: G& R* H& t( ldb3后缀名的数据库文件不支持了( E0 Z4 c3 X" r2 f# p# G6 {, H) t
* I2 X+ ?. {0 Z) v8 l' U! l; Q
neo1
0 E& M1 c: M& @# O) Xneo> create wallet wallet.db3/ t/ F! ^/ V+ a% o4 ?
Wallet files in db3 format are not supported, please use a .json file extension.
3 I/ b4 y2 C  _" jneo> create wallet wallet.json4 {* U* R8 a. f0 N, Q# i
password: ********
5 }! R3 F4 u: L) U/ s9 [& a1 h0 Upassword: ********
! H4 r' N) ]5 F/ N& Caddress: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk7 c4 O5 `! ]+ ^1 J8 |* ^# d/ t* z; H
pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c
' i1 I. v7 h- p6 W4 S记录下另外几台机器的钱包公钥' i5 K- I5 z% K
neo2
8 h* e3 |9 r0 Y& i* U# ^address: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h
) b" P9 k1 I& B/ S& d9 E* P) g1 Y pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb- G# t% z5 w6 ?0 Y$ f+ R! @
neo39 Y% g: c. O3 {$ V9 N
address: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH; T3 O: R2 W) h
pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1
3 ^1 J% N# J& g% I  {neo40 O6 g0 ^- h  `, P( ~
address: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe# |+ ^! P, u) ~  F4 a4 J! V
pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d5 {/ X( G  W5 p. z
修改节点的配置文件
' p) _3 e6 J8 ?  k5 k# k/ ?{" K/ L" d% |$ G, T/ F
  "ProtocolConfiguration": {# v6 h5 }; W$ {, Z' ^
    "Magic": 1,
) M4 @7 D8 g$ m% I  H    "AddressVersion": 23,2 Q/ h$ e4 {: M- ]* o  D
    "StandbyValidators": [
% C9 W& X( f% }* v+ B. N1 z1 \: d      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",
0 @3 W* s  A9 A) x# G4 R% F      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",( E" \4 i, Z% G& F7 @% P; B, g/ h
      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",& {: q% w7 n; }; `
      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d"
1 O. ~) l2 ?* n) W    ],: i; n8 t& j/ X% e
    "SeedList": [% g- e+ Y- C: ~$ u' S
      "172.24.198.142:10333",$ U- Z3 U) O+ k: I% P7 ~" v1 x
      "172.24.198.141:10333",5 j7 N# \' q" S# n
      "172.24.198.140:10333",
4 ?. B! v* O: P" Z      "172.24.198.139:10333"
4 a; _# r& N2 A- I; Y0 y    ],
8 f% f: W! V  g/ q- \    "SystemFee": {) K/ v) S. c3 Z% x( i6 n
      "EnrollmentTransaction": 0,* G2 v( R  a2 W' J. s4 P2 X
      "IssueTransaction": 0,3 ^7 |3 I6 v8 k7 D* [
      "PublishTransaction": 0,) W2 C1 F" k; T9 W* l4 o7 H
      "RegisterTransaction": 0
% ]( |8 F$ Z0 ]; n* p3 S  o    }
" Z4 d  f- h) q" E  }5 \- U; V/ ]3 ?4 N3 d0 G8 ?' i
}
) ?7 V) t; H% N5 V* O打开钱包,开启共识
9 r" y1 j1 n, o9 T) d: }2 sopen wallet wallet.json start consensus
5 v+ |* C2 S$ b) X如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。: Q2 ~4 X/ X3 s5 k+ s

+ r6 S% D6 S: R截取其中一个打印,后面方便调试的时候研究/ h7 ~. v- r8 A
neo> open wallet wallet.json
- S! I# |! t3 f7 F# h  S( h- s% M0 cpassword: ********3 u$ u& ], y6 g, M8 }# w' l
neo> start consensus
1 p8 F6 l$ `1 \( r; K[18:04:31] OnStart; H6 S$ q% S  ?$ z! b. @
[18:04:31] initialize: height=1 view=0 index=0 role=Backup
1 Z  K% @# O: ?5 K4 A# Q4 b[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=2( ^$ ?! p: ?( O5 o2 G& v
[18:05:01] timeout: height=1 view=0 state=Backup0 `7 F* q* P! d  K, U6 `  N
[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging
9 g- R& ^' C% X/ \[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1
) Q6 ~, J0 X3 t[18:05:58] send perpare response
& G5 Y/ R. @2 D6 k) U( _' M[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=2
4 T2 `$ @0 q6 h2 Q, z: |[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
# Y, e" b& N+ V  K' V# C/ U# v5 t! ][18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e' k4 m5 L( c% D, |1 L( y% q/ c, I
[18:06:01] initialize: height=2 view=0 index=0 role=Backup6 L/ q! p: ?8 M7 [  g& b
[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=1: r0 H; X) b, n( \9 e7 u
[18:06:16] send perpare response1 R3 H& Y; L* a; u5 s' J9 n& F# P
[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=1) w6 j, M3 p+ |7 E! D
[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
& i9 R2 k5 ~: P0 T1 |1 o) R) M3 [[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
# x% B2 G: |- E0 g6 F8 U& [[18:06:19] initialize: height=3 view=0 index=0 role=Backup
7 |/ R' A9 X1 J! B[18:06:49] timeout: height=3 view=0 state=Backup4 b0 |; m0 n# T6 E
[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging
9 ~' G  S0 B3 t3 C- {[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1
/ A2 i# _/ R/ J[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=1
! N+ y. {- ^3 l/ j( ?8 v[18:06:53] initialize: height=3 view=1 index=0 role=Backup
7 [+ `) I2 X1 K1 l% q[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=1
( J' r3 L% M; u) }9 V* e[18:06:55] send perpare response1 z) ?8 i: A4 z# l8 o
[18:06:55] OnPrepareResponseReceived: height=3 view=1 index=1$ A) S4 T2 I; h. j. o. E/ U
[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
9 @( i! Q. [; K) U[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412; V; @4 u7 q. N
[18:06:55] initialize: height=4 view=0 index=0 role=Primary0 `. o6 R0 Y1 }6 }1 `
[18:07:10] timeout: height=4 view=0 state=Primary; U& ?! @; G; A5 @& l" F, y: g0 K1 l
[18:07:10] send perpare request: height=4 view=0. Z0 r& H0 m% Y5 m
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=3
( h2 `. H3 Q! O" r5 P0 R- |) S0 `[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=2
4 t0 V3 a+ h' h6 V- r[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
7 P# F& U# M: R[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091' m, {% l3 s4 n: B3 G! v2 e9 K
[18:07:13] initialize: height=5 view=0 index=0 role=Backup  G# ~6 s. V+ Q8 ?8 j
( k% i& |$ d2 ?8 c

6 I0 N% h; L# W提取Neo
$ W0 b- W& X4 T' q2 Z原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171# c: q" ^  ^, R/ S2 f8 V+ v' l8 ?
希望Neo社区的大牛能解决一下这个问题。
3 a0 R) l% i! `" r: m& G一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包( Y# Y  q" v" }! ?1 d
结论
, G1 S4 w1 n* m% g1 k7 n1 J虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13