Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

李悔之2015
99 0 0
配置虚拟机% J( J+ p2 @+ r) D0 Q  T" \
NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。
/ g( [9 f: ~) j$ `2 g8 ?  B记录下四台机器的内网IP地址,后面要用。
( ?0 }) t" ^- F! d  p172.xxx.xxx.1425 u3 z* ~1 T! H' y! b3 d
端口
. g0 m; ?% D2 r如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-203349 b( R" k* v) F" r
阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。  c  v7 C9 R( |3 j; R
& J) z5 _& f! y9 D) B% L
阿里云安全组
" y7 h5 l# J9 |, j6 K8 H! V安装运行时
9 `. l5 t) b) c0 O$ A: x! p+ ]运行环境% l4 t* U2 k; i. v  T, t% B

/ T# \/ {1 K3 L1 |, @. _! P运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本( M) g0 P  {# u2 q
Windows 系统下的安装方法
5 Z! m$ ^- d$ A% h$ V5 U

' T- ]8 f$ \- V1 m" q& I在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。4 L, L1 P7 k4 H2 G! a! Z. [
NOTE- q1 s8 O2 r* @  g7 W
Windows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。
- ^2 O1 r4 J. l+ H' G* u6 H创建钱包; t$ g2 H/ D3 @( L- b9 y6 o' o
在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面7 }/ ^* T8 D/ d% y# h$ I5 y2 Q
create wallet wallet.json1 [6 A$ k. s% o4 w. b0 _
db3后缀名的数据库文件不支持了- i9 L( j: {( E/ Z& t$ D( \/ K: ^' E

- X) K, H; D1 n3 p- c! ?neo1
: O" i0 |, I. g# G# W. H, Q$ h* Y, }neo> create wallet wallet.db3, a3 r: L0 E2 b" L* g
Wallet files in db3 format are not supported, please use a .json file extension.3 A& U& p( r  s( N
neo> create wallet wallet.json
* [+ S( l! y% Q; u+ U& Apassword: ********
9 j6 R0 X2 H8 |2 @- b1 O+ v+ ppassword: ********" I: v' K. W1 b5 i4 G5 D) e
address: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk3 U8 s* Y4 u4 R/ B
pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c
& |/ [4 d0 K* A  |记录下另外几台机器的钱包公钥
1 P" s1 s6 q/ X. r& Ineo2
" s* I2 |# J3 B, Zaddress: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h
4 s0 P  R0 t2 P pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb
% l4 a: i& l& i- V5 j9 }7 Zneo38 C$ z( b5 e/ G$ q9 B
address: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH9 b) [: q1 y% ~4 m0 [
pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1
3 C4 b- a% F% k, t* d0 m( J# Ineo4, v3 g, J  e$ H  r
address: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe1 J, A6 t4 N( H1 t! y
pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d
# J/ B* g; h( n) W修改节点的配置文件7 S5 i4 M% o( d3 S' p% c7 a: r. P
{
3 F" m3 Z" [( T$ S& n. ?, _  "ProtocolConfiguration": {
7 ^. D! s! @3 z% a. D6 L) A5 \, l; j5 t    "Magic": 1,: Z* R" X8 K2 j1 ?8 Z! C# m; C
    "AddressVersion": 23,% [3 @5 o5 Z# P" ^3 o+ O5 D
    "StandbyValidators": [
6 `; F0 E1 |' g2 v3 t& c      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",
% O3 @& F8 ^% ~      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",
" J- @# h- p. `      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",/ L. |) E! F5 U. R
      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d"
: a+ y( }/ t6 i* G# A# {' t0 ~    ],
: K# V* \7 E" K; p    "SeedList": [5 I" |3 J( j% {8 U( R% P; d( a
      "172.24.198.142:10333",
6 F  z/ z  K. G      "172.24.198.141:10333",9 L2 N- @' w6 O5 `6 d$ T
      "172.24.198.140:10333",
) |: J2 I+ a" N' J# T. V      "172.24.198.139:10333". I1 h5 l+ O# F, ^7 r
    ],' s( e/ B" z3 {# L% [0 l# A
    "SystemFee": {
9 e' q' l, X, `3 Y  t- I      "EnrollmentTransaction": 0,8 z% s+ n3 b6 q: W% v/ \; _% \
      "IssueTransaction": 0,3 f( A8 P" _: K7 t# M$ F6 N
      "PublishTransaction": 0,, p4 [2 b* x0 P. O% z; |* B& f
      "RegisterTransaction": 0
6 z+ b3 W/ H( m5 g- ~" t    }
% N' K. n6 F% L; p- c9 a7 x  }. m7 r( _# v4 S0 Y. e) O
}1 a7 F0 ^* \2 ~
打开钱包,开启共识
5 _4 X8 J0 }3 p6 uopen wallet wallet.json start consensus7 z+ P2 @4 J0 P8 t
如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。
4 e9 {) G" A  H' t) D
' |5 j; H; `! M$ K" d+ S' x截取其中一个打印,后面方便调试的时候研究) w0 V$ P, G( w4 C4 L
neo> open wallet wallet.json5 Y6 K! j" V1 s
password: ********
" U2 o1 g2 u" ]3 Fneo> start consensus
, K& f0 n+ N3 K+ }[18:04:31] OnStart
3 E# Q: X: u  V- v$ T8 Q& j$ j7 A6 y[18:04:31] initialize: height=1 view=0 index=0 role=Backup
5 a( v! k1 ^( f[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=2
/ \+ ?! [- i7 L: z[18:05:01] timeout: height=1 view=0 state=Backup. D& h' o4 {4 e$ \
[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging7 m  j3 O, a5 F& m1 v# m+ K3 Q
[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1
( H1 [7 M, X  E" r7 R  m2 W& F# e[18:05:58] send perpare response$ \/ b# Z3 ?, {& ^
[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=2& z/ S- O  i2 ?
[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e! h9 q0 {1 d5 K  S/ c5 N: ~
[18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
' h$ E) `# J9 f( W  i& X' Z, S' G+ s[18:06:01] initialize: height=2 view=0 index=0 role=Backup$ l/ h/ K1 H# e7 G! K' ?
[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=1
2 P8 `' t- n9 o[18:06:16] send perpare response
. G0 n: a& z9 D1 a[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=1
1 S: l& y& l* f$ ?3 C4 f[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
5 M/ A' p: N$ ~0 ~0 k% {( P" j% i4 L[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
* W* z+ K& _* A. o8 \$ H- K[18:06:19] initialize: height=3 view=0 index=0 role=Backup6 @; s5 P2 ]) [$ W6 M, g6 B! H
[18:06:49] timeout: height=3 view=0 state=Backup
7 v8 D/ G8 I4 n% U[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging% \% ~3 ~7 H# L" P: J5 `
[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1
4 f# P1 b5 P: F/ f9 f  S0 y[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=1- M' T% i; ?9 x
[18:06:53] initialize: height=3 view=1 index=0 role=Backup* w$ _$ A9 J2 l- ^8 t
[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=14 c$ G! D, q0 {  |2 K
[18:06:55] send perpare response
; u: e7 x: Y; t( ][18:06:55] OnPrepareResponseReceived: height=3 view=1 index=19 W/ V5 Q: Z$ h: ]
[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
) U; ?  z3 t, Q5 k% J& J: e[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c4123 s1 }" H+ @3 f  U4 w# ^5 Y
[18:06:55] initialize: height=4 view=0 index=0 role=Primary% y* z! {0 F' {; a& C
[18:07:10] timeout: height=4 view=0 state=Primary
: N6 O- p0 K3 q9 z: C4 i[18:07:10] send perpare request: height=4 view=07 i: k/ M& t* v* V
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=3" k* N% p) C3 m
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=2
' J% s; F( W- ]' ~! e+ b- f% m! ~[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
5 A* a/ l$ c7 ]# H5 ?# `+ e[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091. G" V" W0 s' ^# ?
[18:07:13] initialize: height=5 view=0 index=0 role=Backup5 c; X3 S  X% s$ x1 J

2 g9 a& e6 O) P$ o+ c" B  i$ t
  v! G7 Z$ k0 t1 z9 y  Z
提取Neo  X5 y. c/ e' s: f  c
原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171
3 e" P6 T2 n! y0 u  @* E: E+ `希望Neo社区的大牛能解决一下这个问题。3 q  r! R' D8 M- f! @& A
一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包( l6 T1 l* ^0 c- W
结论+ s0 u4 G6 @3 ]' A7 v
虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13