Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

李悔之2015
155 0 0
配置虚拟机5 N7 A# R. J- K: f% R: _, H
NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。+ |1 ~, M# r+ x
记录下四台机器的内网IP地址,后面要用。; {- L3 Z1 K# z* q* e+ x% y$ ^
172.xxx.xxx.142
4 o( ^& e" \* e1 i4 w端口4 S2 D9 {# Z6 T
如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-20334
  h( \8 E8 i, [8 E0 U) U/ y阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。
; n; U4 @8 I5 G8 k0 g4 S4 R
/ D& g' ]4 t: t  O  m* b阿里云安全组
" O- ?+ o4 a: ]. D7 l6 s安装运行时4 K) g$ \1 Q: c, U' q9 D4 |
运行环境
1 ]4 e2 g7 W9 j# j7 k. L

5 X/ i; G. ]4 D; X0 M运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本  F4 u* u/ O% m: U5 y% N
Windows 系统下的安装方法4 Q: {+ j+ R; a$ Q

2 A3 A( z$ B* x1 K4 G在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。
, j8 F% _" f6 YNOTE
+ ^; i  T( |% eWindows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。" g' X" G! Q( x8 e
创建钱包" j  ^, t4 S3 t1 @4 d- f
在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面
, g& T+ L, {8 v$ w6 y create wallet wallet.json3 U0 Q( G6 l5 o1 `# k" U
db3后缀名的数据库文件不支持了# r) @/ [8 Q1 X- R! m6 d- ?

4 @- ]- f9 F0 J8 G" L! qneo17 J. h( E" @. [9 o, U- o; {
neo> create wallet wallet.db3
7 L  ~3 F6 ~! t( V5 l# j" j9 MWallet files in db3 format are not supported, please use a .json file extension.
& V: c" w2 g0 h( N0 zneo> create wallet wallet.json
. o" S- k2 j; ]) j# i% G/ D' C" upassword: ********$ i2 c, a( Y  S. R+ c6 j" v$ c% x; y
password: ********
* V; ?3 e# P" M" haddress: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk
6 X( a( Q2 I0 R& T& B7 Q pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c
9 M2 z+ a4 X: L  W! @  N记录下另外几台机器的钱包公钥
' f% v" D* o, S; I7 t+ gneo2! [* D2 ]; D; \1 ]8 _, h0 ^
address: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h
0 z. Q, \$ l; q; ` pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb) |: G9 U) A# k6 D; p" Q
neo3- I  g! N4 J8 Z& o! j# S& r
address: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH
* y$ ^- j: i1 _3 G( A8 q2 v3 G pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1# b/ J8 i& T. d  i* V  J
neo4
. Q  Q5 x# x: I: O/ D) Aaddress: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe( U8 `# g, ~" e! o) i
pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d
9 z# Q( `0 F3 g- {8 R/ {修改节点的配置文件
* E- q' \+ ^. ?{. }6 t. J3 V' z
  "ProtocolConfiguration": {& x+ }( {* f. ?9 ?1 {
    "Magic": 1,3 F2 t9 l. T1 z0 ^! ]2 p
    "AddressVersion": 23,
9 P) ]! Q0 s& f    "StandbyValidators": [
0 t$ N3 Z- H) X; ^3 s      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",2 ?" G$ [. Y5 X' a
      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",
, ^! M# q/ k/ y      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",
! g& N2 l& g9 X' P      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d"
; a& @  N4 H& _$ E    ],
% t- F# R2 j; t0 M    "SeedList": [
4 _4 \) q+ T( I3 q      "172.24.198.142:10333",; }+ b. D. \2 w* e1 ?7 O4 Z4 i1 h
      "172.24.198.141:10333",+ z  d2 G9 F( r9 f$ ~  r# Q: D6 i7 I
      "172.24.198.140:10333",& Z+ A- `& e5 c2 U
      "172.24.198.139:10333"
, T; h! U- c# T" |! l( E7 g# Z    ],
2 h% r' e! b! K* ?: \5 @: ^4 Y    "SystemFee": {
' m$ d: e' H1 ~4 G      "EnrollmentTransaction": 0,2 n% A2 V$ a8 B& M% u$ a
      "IssueTransaction": 0,! \. }! z' X8 d0 S' O. w
      "PublishTransaction": 0,
% i3 g* K5 ~4 T8 [      "RegisterTransaction": 0
3 s5 f  ]% G. ^' p$ R    }9 |/ T3 w  v( W
  }
, e1 ~* K1 J# v$ E/ R6 d& b}
$ d) @, C1 B) r  N. {0 b8 U& q打开钱包,开启共识' c& \7 w3 U' g8 Q/ K, c
open wallet wallet.json start consensus
) O9 P3 E- P& J% w3 U如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。
! P  y! D/ Y9 v, ?4 b3 |
, h% p8 ~/ i* _6 w# t截取其中一个打印,后面方便调试的时候研究2 ?& ~( C- {. e3 ^+ i0 {8 G( i# y  ^
neo> open wallet wallet.json
# h$ y7 b' f4 d1 x6 Y% g5 u" }9 rpassword: ********
, l% W/ _2 C6 `' t; i" nneo> start consensus
7 M6 y& g- i3 j3 D, n- I[18:04:31] OnStart( T7 J# m/ R# d; p
[18:04:31] initialize: height=1 view=0 index=0 role=Backup
  W0 W9 H1 W) p3 a5 [[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=2
6 m- {0 u; d: @[18:05:01] timeout: height=1 view=0 state=Backup
  a$ d, h/ y- S[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging' d/ b5 N7 V! z* d" a8 J: O8 d
[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1
. E. \* h5 X( ][18:05:58] send perpare response
9 X% G- Z4 d& N  K: H9 [( g[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=2
: A1 U1 I: F3 `6 w[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e1 D% P7 B" s) {1 K" ^( o
[18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e/ U% G: U1 a6 ^
[18:06:01] initialize: height=2 view=0 index=0 role=Backup: l6 Q+ r2 l3 B6 |
[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=1
4 }0 ?) c/ p! X' D0 l6 Q[18:06:16] send perpare response1 F9 i: B; ]5 O5 |. ]
[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=1+ V! \3 C- Z/ G& o# [5 D
[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45& h! J, P; r9 z* Q( X2 z+ m6 c/ G
[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
/ ~: e: R- `- n% c9 t! s[18:06:19] initialize: height=3 view=0 index=0 role=Backup
5 N& q3 o9 c0 j2 ]" v2 k. S[18:06:49] timeout: height=3 view=0 state=Backup
$ d5 r( Y9 O7 B4 A) k2 q$ |[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging# {6 e' o# f8 F; p4 a6 o4 }
[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1
7 |' A! e, [9 H! c: z' q[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=1
; G9 N8 |, L( r$ b[18:06:53] initialize: height=3 view=1 index=0 role=Backup! B. |+ `" d  M3 {3 x# z- G  T
[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=19 k$ H2 g, ]+ R. ?+ @  J8 A1 K
[18:06:55] send perpare response
! B: ]: U! P  h, v4 w- W4 G[18:06:55] OnPrepareResponseReceived: height=3 view=1 index=1
( w' o9 D* U5 U1 K: a: M[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
" J0 v( r9 a1 M' z8 z  V[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
1 Y* v! s1 G) R4 H[18:06:55] initialize: height=4 view=0 index=0 role=Primary
9 n1 R$ s: l* f$ m" Y7 l[18:07:10] timeout: height=4 view=0 state=Primary8 x& X& q, H4 I( n
[18:07:10] send perpare request: height=4 view=0
3 S) A) n8 j5 b& q1 K6 Y* M( K[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=38 f9 ~9 Y' J9 m! A) C5 a2 r) A% }* r. A
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=2
3 D8 ~: `4 k. b2 Q: t- Q. C[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
) h! F7 I3 V) m. c) G/ d- E5 g[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
0 A* k7 z+ h" q& x. F, c9 ]) ?[18:07:13] initialize: height=5 view=0 index=0 role=Backup
8 [$ `( c# u6 S2 }% D% I& C1 r: Q8 l& W

* S/ Q7 h+ Z" M2 K0 c提取Neo
: m4 i; Q& B2 m3 X* n原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171: {1 W4 F: l! N! Q
希望Neo社区的大牛能解决一下这个问题。3 J% r8 r! `  g, [
一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包2 x2 S) ~9 N5 K8 r4 w0 f. I
结论
4 Q% z1 e, a# Y8 p8 C' x0 y6 S虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13