Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

李悔之2015
182 0 0
配置虚拟机8 c3 V: H; o  s$ [3 d: A4 w
NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。: V0 @0 s- S8 J# c$ N; u
记录下四台机器的内网IP地址,后面要用。
1 b4 K/ x' R2 V172.xxx.xxx.1421 C0 k, m# [! _4 ]
端口
! [- c" ?. T3 _1 ^$ t- \% [如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-20334
- [. i0 w5 N! ]) ]! q3 H: T阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。
' y# s5 g  E' ~7 D" {
/ Y/ i2 S& ]3 R* z阿里云安全组) a. Q: |+ e( b5 X
安装运行时4 S8 i) A5 f  l* L% v* b
运行环境0 D8 C# U, A  K/ q5 o8 Q# o

6 P$ q' G& X+ F( p0 [6 v- i运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本
9 V- I7 I7 l7 r& |: ]# }Windows 系统下的安装方法
5 F2 B1 v" |5 i! |9 v# V, G& g
7 @0 t+ ~4 O: o" a9 ]4 W) ]
在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。
: w1 ^9 Z) z% d) wNOTE& O; n$ F% f4 R) o) `6 x" M
Windows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。& m6 I/ u, u: J7 H+ J1 @; J
创建钱包
* z, G$ l0 d! S4 g% O在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面1 s8 r4 e& c! P& K' g% I
create wallet wallet.json
1 V) e. ^/ k% ]( `/ q6 E' N6 mdb3后缀名的数据库文件不支持了
5 \5 e$ F0 g$ X3 b0 y

% z. I7 Q" `3 D" Bneo1
4 E. q5 c( U& f: l' Q3 hneo> create wallet wallet.db3
6 {# T& V* Z% n2 s& p) s- d1 lWallet files in db3 format are not supported, please use a .json file extension.
4 l5 z8 U: E; `2 J7 Y- f3 uneo> create wallet wallet.json
4 r; Z2 t- E+ h, w- ]password: ********
1 z; N% d1 a" x; Z" B* a' Spassword: ********" D! g  F/ [0 j# m& C8 c  f, y
address: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk+ i$ b( f4 m% j1 Z$ Y: K
pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c5 [# }7 J9 M" ~' U9 M$ [
记录下另外几台机器的钱包公钥1 p  {) G6 X# j$ W7 c
neo24 n& |3 ], L% O8 u2 [4 U
address: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h
7 x& O+ S# q! @, z( e+ s, _ pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb8 J! c8 O0 b2 m2 u; w; }2 ?
neo3
" Q! F$ F5 ?) a! x* S2 K& Raddress: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH
# F; a5 z" y. m, w* C5 b' d/ R2 S pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1
1 e* i" G# i! |; G5 N0 i$ Gneo4
, L& M0 r5 R0 O$ j. q6 Daddress: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe
) k' ]* D" U( ?( C  h1 N pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d
/ [' T0 X2 S' N8 u/ ~& Q修改节点的配置文件
1 q" b4 o/ s( Y6 Z5 e) \+ I8 }{# G6 y  L( Y  c* v% E* m- D+ ^5 Z) i5 R
  "ProtocolConfiguration": {0 I2 g. A) f' ]0 T0 d
    "Magic": 1,
$ V6 _1 Y9 R" @7 V& Q    "AddressVersion": 23,
$ `! M* y6 P% \  l+ a5 S. }0 ]    "StandbyValidators": [
% ]& k+ U# z4 t" D      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",3 |! k4 \  \4 x$ o7 u
      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",, R- [5 c( S9 h: u2 R+ `
      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",% z( M) d3 a4 Y- t
      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d"
* R, e# e/ ?+ b. B/ K# _    ],& ^" N  c4 s7 g7 p( s+ l) [
    "SeedList": [! \: Z" z" `1 V7 ?+ W- L  x
      "172.24.198.142:10333",8 F/ ~/ u* E2 r+ a6 p3 T
      "172.24.198.141:10333",2 X- }& M& ?6 \
      "172.24.198.140:10333"," D& |, h, E: \. Y% Q
      "172.24.198.139:10333"6 h, m* `* Q( s0 e% ^, C
    ],
, j/ {9 R+ @0 i! \1 t    "SystemFee": {
9 W6 B9 J1 P# c9 A5 M6 u3 T      "EnrollmentTransaction": 0,& [$ X& J; q& Y7 O/ C3 z
      "IssueTransaction": 0,! _" F) [1 Q1 |% h; F' f
      "PublishTransaction": 0,% D7 l) Y6 X! O6 H6 _% S/ l
      "RegisterTransaction": 0
2 D2 C: o0 g' b4 Y    }
& `6 m$ S4 S/ H5 @# A$ d  }2 M# a- \9 }5 y: F* X7 `- Z
}  r( C! v+ j! M( |9 ^, }
打开钱包,开启共识
( p* [, W+ x1 x4 D. P: [0 E5 u( hopen wallet wallet.json start consensus
# \4 g6 c" b1 u' z如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。
4 n+ c, h' H7 T6 b
- F! V5 J. L7 M! [截取其中一个打印,后面方便调试的时候研究
$ I- E; C5 s! H9 pneo> open wallet wallet.json5 H" u# D6 @. F% q4 r
password: ********
4 s' U6 r% e5 W; k3 q: L. L+ ~7 rneo> start consensus4 f. e/ |; [0 G: f
[18:04:31] OnStart! Y: f4 p  S( N. p$ @! x
[18:04:31] initialize: height=1 view=0 index=0 role=Backup( Z' d% Z/ Y5 E3 u: X; `5 ]
[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=2
, {8 h3 H3 O9 [1 V3 g[18:05:01] timeout: height=1 view=0 state=Backup# C9 k2 A1 _; b8 |
[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging
: l  v* K; A; o1 ^[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1% x# D, m9 N  F+ Y$ d3 r
[18:05:58] send perpare response2 o% n5 J/ X% |& }
[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=2
- Y' z+ f5 }7 r[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e% |1 ~" W2 `$ P- n
[18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
" n' L  I% S: A0 L# `[18:06:01] initialize: height=2 view=0 index=0 role=Backup
8 j/ b) {$ V# Q; W7 q" \% E- K[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=1
3 K$ K" J8 K1 j- N9 e[18:06:16] send perpare response7 e8 P, o' @5 d! O- i* o! c
[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=12 f6 A- m( e; e4 ^, ~
[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
8 x  \; a2 u5 P4 M* O/ a[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
% a' O$ V: u: y( g[18:06:19] initialize: height=3 view=0 index=0 role=Backup
& G! E' k9 U/ w2 }3 W[18:06:49] timeout: height=3 view=0 state=Backup
: {9 Q8 Y% k* e& |5 ~, R[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging2 G7 W, u4 o0 f5 }9 S3 d7 F/ x
[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1
' a" N  n& M% s$ h# `8 e8 R8 Z. v[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=1
0 [1 O! |& z& j. U; F[18:06:53] initialize: height=3 view=1 index=0 role=Backup
( p3 W. F3 r  e3 F[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=1
* `* L; ~7 T& y[18:06:55] send perpare response
/ a9 q! P2 k) E, d[18:06:55] OnPrepareResponseReceived: height=3 view=1 index=1
) ]6 M) j/ j7 X% [. z4 l; s[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412+ }7 n- F: m: N2 z
[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
1 T$ V" h3 g1 u# _[18:06:55] initialize: height=4 view=0 index=0 role=Primary
, R' Q0 G) a; d0 T[18:07:10] timeout: height=4 view=0 state=Primary
" O) h1 g% P$ B) q8 U! W1 ][18:07:10] send perpare request: height=4 view=07 r/ X5 [9 M6 Y6 q& \
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=36 F% N* R4 G: B8 X
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=2, a  q& y8 _; A1 Z
[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
# o8 ]* d; |3 V# L0 d[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091, A5 P( e( s4 ]/ T
[18:07:13] initialize: height=5 view=0 index=0 role=Backup) b# m" W( {; {! H% S  ]

: ~6 N& H3 Z- L8 }( V1 C
" q, g9 W- f. d& i
提取Neo
5 {- L$ y, \6 _" {原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171
( x* \  ?0 z' O1 k希望Neo社区的大牛能解决一下这个问题。
. W5 a# Y* R' ]- R; d一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包
7 u) Z5 o# u( K. y+ C结论
1 e9 s' a5 y. M( c4 [) W虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13