Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

李悔之2015
106 0 0
配置虚拟机
. r) b1 D8 v' `. lNEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。3 H% F, I: W/ s/ H
记录下四台机器的内网IP地址,后面要用。
0 v8 o  [: r' ^" G( R9 f172.xxx.xxx.142
- Y' N! U7 ], y5 r3 p6 s& q! h1 i端口+ ?- _" P+ ?( N, L
如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-20334' P' I/ |+ I+ y+ }0 z6 K  G! T
阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。* ?. B4 ?5 X$ e

, G/ i+ m  b2 ]' L, P阿里云安全组: }. B8 D" s" d
安装运行时
1 P2 A: [( ~7 n: c& Y' t( c+ j运行环境# Q  d4 _' B- D2 u3 h
, ?9 y% K& e2 C! f" m
运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本
8 ]) D3 J; C+ a$ ~Windows 系统下的安装方法
7 O/ k& U/ e" D8 }: Y! O5 D
8 T: }* |' p/ r, G+ F
在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。- U) s9 l8 L2 j" ?# A" A
NOTE
4 H6 o+ a# b7 i* }Windows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。
) x$ z& C4 p3 w* r% W创建钱包# \0 H  O' J0 I0 O
在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面
' o/ @4 y, Q: Y& L7 s9 F create wallet wallet.json1 t  F& l$ {. v& ?% ~7 t
db3后缀名的数据库文件不支持了; V! S5 M; E4 l; x+ y: z: b

2 x. A$ u) t6 K3 G2 z& j. Lneo1
8 a3 R( C" [0 V( u1 h- F8 ~neo> create wallet wallet.db3
, a1 |+ F: q% e7 }6 W! EWallet files in db3 format are not supported, please use a .json file extension.4 V0 b  ]5 V' A- y; J$ B( s* c
neo> create wallet wallet.json! S* U( X  Z4 G% L' x
password: ********% t3 K$ [" u8 E0 X, H
password: ********. @* g+ e- Y1 K( `! C5 ?! n1 o$ _
address: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk" R5 `3 F: `+ k$ W) R7 A
pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c
8 ~) n/ \" p4 a  b' l2 b记录下另外几台机器的钱包公钥
6 B( z/ D+ v6 n4 g. [6 W8 ~neo2
6 H1 v! F: u3 a( G( q/ u/ O8 Aaddress: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h# i) {& L4 Y5 Y
pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb
& A  e! p* e, D. b( J0 e: Vneo3. |; S5 s4 |% U# T
address: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH' r8 h  r9 r; d" ^% j  U
pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1
- ~, i3 P( H* ^. b1 G3 oneo4
- I# \) I( o7 F, {3 Z. C- ^address: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe. y: C  e+ l' u" y# O
pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d1 ]0 o" h) B" A3 K5 [  D) \& ~
修改节点的配置文件$ T# E/ g# x$ Y( K9 j
{
% r$ j# l- {7 q) O  F  "ProtocolConfiguration": {& I: c6 D, Z, P( u: {
    "Magic": 1,
% z" u' [7 @8 \% }5 n8 a    "AddressVersion": 23,4 j& a0 A- }# F/ w5 x
    "StandbyValidators": [) x9 y2 G' S; k: V
      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",
2 j1 y% W1 f* t8 p      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",
* B5 r  D! a% Y2 z3 x( e      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",8 d/ U8 B  _" D$ ^0 j
      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d"
) q" X- \* H9 {& g5 l" U" y    ],
% x; V* b* b+ r* \8 `8 E1 x    "SeedList": [, [2 v9 D) x# q, F% Z7 i
      "172.24.198.142:10333",
8 n; P$ C1 f' X: n      "172.24.198.141:10333",
5 v" B0 N1 n) r: j) B8 t      "172.24.198.140:10333",2 U1 |- Y3 M. ^# |& X
      "172.24.198.139:10333"
2 }3 N0 }0 Q3 h. e) u, q" `    ],/ w6 q6 B2 G0 X
    "SystemFee": {8 z4 U: O7 }! S! v, m( h
      "EnrollmentTransaction": 0,3 o* F+ t; A! b3 W; L
      "IssueTransaction": 0,
4 ~$ y/ H5 C0 t: [; R! x      "PublishTransaction": 0,) Z4 W) R$ Z+ [% Z3 L( d( r
      "RegisterTransaction": 0
. f9 }9 O: G5 V' l1 o    }3 ?0 g+ B+ ^! p  M
  }5 ]& i' b, ~% I+ F1 L0 e
}: n  m; D' v( E' }+ R$ c! T" C
打开钱包,开启共识
: Y7 O2 I3 i+ O8 ^" gopen wallet wallet.json start consensus. A  x* o3 S0 s  O  Q2 t
如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。+ n0 N) ~8 l. ?
' U% Y. N3 g7 a0 ?
截取其中一个打印,后面方便调试的时候研究
) P& s" c/ ~1 D- m' ~neo> open wallet wallet.json5 o7 ~: c' h1 J7 _
password: ********" n3 J+ ?$ J& c# T, _3 E- j( d
neo> start consensus" a% L1 n( r5 i3 S2 p/ f
[18:04:31] OnStart
7 z- U% f! m% U[18:04:31] initialize: height=1 view=0 index=0 role=Backup
6 [1 S$ f. w  c  Y$ D' B, n9 h[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=2$ e1 B% [: t& R( T- Q9 o& f. ^
[18:05:01] timeout: height=1 view=0 state=Backup5 k1 A; ^, z1 F2 K
[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging
- P) F$ o8 ?1 p% m+ x[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1
- `* G7 ~0 N& D, }9 K[18:05:58] send perpare response0 [8 e/ w, m! L6 p. |/ m" }
[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=2; z4 n7 N( C% A. F  A- ^
[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
: F/ L/ f$ t) C# [; r[18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
% ~7 a. o4 n2 h; [! Y9 x[18:06:01] initialize: height=2 view=0 index=0 role=Backup6 Q- y# }2 J5 n8 s. D7 s- T
[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=1
: F# f3 m; V9 k# p2 _$ F3 ?[18:06:16] send perpare response
  p' y% ?8 h' J7 H8 b& a) B[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=1
/ m/ z: J" T. h+ P4 Z# R8 b! }[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf452 t% _; f( w7 q: x$ |
[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf451 e) _# G& E8 F2 @& \' i
[18:06:19] initialize: height=3 view=0 index=0 role=Backup
' p' ~0 r% A3 y! t5 y( H[18:06:49] timeout: height=3 view=0 state=Backup" H! {6 \' d- u6 x! ?- }) U4 O: G; E
[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging
0 H1 @/ Z, i& s! \7 T: k9 Q2 a- ~$ n  g[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1
- Q. ~# Y8 d/ G% V" T! H8 y: f[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=17 w5 {8 w7 O2 C  x- I- H( ?% q; R
[18:06:53] initialize: height=3 view=1 index=0 role=Backup1 {- u9 z+ ~) S& Z, M- _, `1 d
[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=1
$ K% L7 Z1 Z* W: q& U/ A3 M( i6 Q[18:06:55] send perpare response
) V; E! P: \+ m8 |0 v[18:06:55] OnPrepareResponseReceived: height=3 view=1 index=1
  K9 A: ]- b1 `& C3 ~/ n' H[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
+ U2 Y* u1 s+ ], I8 v* o' {. V[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412) T3 Y: p/ w" l1 {; V
[18:06:55] initialize: height=4 view=0 index=0 role=Primary
8 K7 H4 _: l  P+ w; D[18:07:10] timeout: height=4 view=0 state=Primary# }* Z8 p  y7 i2 r" d
[18:07:10] send perpare request: height=4 view=0; V. A2 G1 H* v9 s
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=3
* y; \6 v- B: J; x" Y[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=2. w- q4 C4 u6 f
[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f3890912 }, Q  x3 h% z) D  ?; `8 c
[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
; p; s) j; f9 H1 e[18:07:13] initialize: height=5 view=0 index=0 role=Backup/ v' c3 Z+ e1 W* A

- s. i& ~  A. }! E3 X6 w: G

2 S5 W7 \/ w1 j9 M0 z提取Neo4 c) O) {8 b8 ~6 J7 ^! K
原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171. o- N9 L8 H& X; Q
希望Neo社区的大牛能解决一下这个问题。9 v7 O8 _( ?% h9 B5 U2 ^
一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包
5 ]: m" g- u) y) ^- C+ c结论
4 C8 [! q7 u; Y- h; V虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13