Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

李悔之2015
101 0 0
配置虚拟机7 q6 e7 k4 [6 r) i% K! i5 [( s
NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。0 ?! T% {* Q! J0 J2 }7 h! K: q1 Q) W
记录下四台机器的内网IP地址,后面要用。
# h2 h9 O7 Z, o' h172.xxx.xxx.142
0 O1 e0 r7 u  D: [1 }9 m$ G5 }( F端口, N6 `3 U8 M4 u  |/ e+ h
如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-20334
+ V  m) q# m4 X) d5 \( H$ b阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。
0 b" H  v' _! S3 e" ~& u- Z  O1 i2 I* o3 S. x8 U* j" Y
阿里云安全组5 J( g0 y3 K; Y. W7 M& `0 c
安装运行时
2 Y+ y2 L6 \! {0 H! a. ~& c7 \运行环境% f5 p. Q& ?* t; C( ^
9 n( k! X' x) ?. ~% S- A8 R/ F
运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本( Q9 e6 A& ~4 D6 `9 R5 M+ E: P- ~
Windows 系统下的安装方法
$ K# `/ K+ o8 J9 [! `

* D5 ^2 Q7 e9 ~+ k在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。
! ]( \; C: r0 kNOTE
: W) A/ P5 b, i( ^. e3 \) [5 VWindows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。0 H* v- J$ h: T4 ~
创建钱包
6 G$ x* X" r* o$ @# ]在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面0 E) Y# b9 V8 I3 k- }
create wallet wallet.json
, t; }. b, G0 j, jdb3后缀名的数据库文件不支持了
4 P( A" s4 B) c1 o: v0 ]
4 T( U6 v* t! n0 S5 l; n
neo1
9 w* N6 Y$ P- e0 Fneo> create wallet wallet.db3$ a, Y9 I# a% O" _
Wallet files in db3 format are not supported, please use a .json file extension., M$ ?/ ]+ z! K" C# S/ V' W
neo> create wallet wallet.json3 p% {* }9 a+ s% \2 j
password: ********% }( f5 s8 w" \. U, x
password: ********. j7 U: z) U3 b6 b
address: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk  S. o* A! x4 e. D$ b7 \
pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c& P5 V; z; A/ [
记录下另外几台机器的钱包公钥
+ B8 M1 f( z5 K- o2 Rneo2
6 y8 \6 J+ l: l8 i# Z& E& raddress: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h! L$ N) [5 U3 ]9 r0 Q  p' j8 Y* v
pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb
& y! t! v3 y; |4 A4 D0 N  l" fneo32 T* `* d8 L+ T- S/ }# k3 U0 e
address: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH+ R1 B+ p+ B  B2 j$ R( o
pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1
/ E- P/ p1 b7 x) uneo4
! J- P# W: _  ~  faddress: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe- O- {( \  \( K/ w
pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d
, U* S9 t" `% A2 Y修改节点的配置文件
$ n* D3 h) ]0 Y# H6 a. g9 o{
6 n( w& m! i0 n" z  D# F+ E) K8 u  "ProtocolConfiguration": {) J: a6 e; F- F4 W4 V, F
    "Magic": 1,
* x. b0 K% D/ K5 M+ i" a$ ?8 q    "AddressVersion": 23,
, B' q1 J2 H. |: x1 C% _. P$ }    "StandbyValidators": [. |9 `& ]8 b+ d: h! [$ |; l4 p; p: D
      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",
5 g  i. a3 l0 n      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",
  Q6 A# _# U6 j2 z" q! j0 }      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",
" g: ^" d! r0 G4 o( E6 A( X      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d": Z2 ^4 {0 F3 h$ }* X7 t
    ],7 Z: n) Z( f3 y, M1 Q7 x# K
    "SeedList": [8 K0 {& {0 H/ \6 Z# P
      "172.24.198.142:10333",; E/ D; L2 P5 z5 g, X% E
      "172.24.198.141:10333",6 Q% m, v7 S+ J4 t0 Z
      "172.24.198.140:10333",+ r4 D% c7 b7 k% u7 l
      "172.24.198.139:10333"- _! m# S" `; _  D
    ],9 Y- Z/ W" [) C: C
    "SystemFee": {# l( U& o1 F; M
      "EnrollmentTransaction": 0,
$ v$ d  O5 ?8 ?9 i+ L      "IssueTransaction": 0,3 n! M. ]& p$ D) h- z  t% N3 H
      "PublishTransaction": 0,/ |$ N3 I2 X: f" c) N" \/ P# w
      "RegisterTransaction": 0
6 B8 v+ m* E- q/ t    }
6 c, A/ ^5 S( v& {  }/ B+ k. y( j& a6 F3 i8 x
}
8 @, b) l% A+ m& B9 I* F. a. {+ ?打开钱包,开启共识
. W& u5 _" f. ]/ {4 M7 h3 dopen wallet wallet.json start consensus, W4 r2 s: u8 x( X4 N
如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。
% c: Z+ F% _  M
; h; N. B4 R9 ]; R截取其中一个打印,后面方便调试的时候研究: ]" s$ B, A  O
neo> open wallet wallet.json* P( q/ a* {' t% ^: i
password: ********
  b- S+ ~* e3 o2 Q8 [" Z( o! Gneo> start consensus1 E: u+ E& [; b2 o
[18:04:31] OnStart+ D' a" M) f( f' J, F
[18:04:31] initialize: height=1 view=0 index=0 role=Backup0 W' D; p& S7 d3 x
[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=25 N) \" _4 t% @, V8 r. L$ {  g1 Z8 m
[18:05:01] timeout: height=1 view=0 state=Backup& r7 v! X4 X( v% f& o
[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging
- J% M7 t& n3 h0 p- D[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1
& K# c) h/ X2 p5 s$ W[18:05:58] send perpare response
  {0 b+ L$ H' @[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=23 \& L2 j- T3 m2 f$ ?
[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
" x, |5 P4 z  X/ x" w1 h6 ][18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e% j. l2 l6 a8 I; R7 U
[18:06:01] initialize: height=2 view=0 index=0 role=Backup
1 U8 l5 k& U1 k) B1 O6 {[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=19 z. y! y9 \5 v& u! O
[18:06:16] send perpare response
0 N4 [1 _4 Q) D! q7 ?+ {5 ~! k" g[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=1' ?( a1 h2 j: R8 q9 m( j
[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
* M2 J5 q6 x  V[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
( n2 P( R; t1 w( n: {0 S' q[18:06:19] initialize: height=3 view=0 index=0 role=Backup
- s4 y6 ^5 a+ s[18:06:49] timeout: height=3 view=0 state=Backup( f4 C6 E9 E' T6 ^9 T
[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging9 f! L! r/ B; @6 W8 c8 P9 D
[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1
% i$ E/ x9 O7 M, [  L7 c[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=1( }: p0 N5 s4 R) a7 x/ N/ s
[18:06:53] initialize: height=3 view=1 index=0 role=Backup
' H# u! _; H! E# y% d8 ^2 Y[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=1
3 O- s. j( O. o+ F# i" o2 V[18:06:55] send perpare response
0 Q% G2 F! l& R' E[18:06:55] OnPrepareResponseReceived: height=3 view=1 index=1
8 U$ o: b1 o5 [* W9 {6 N8 X! E[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
# b8 j. a7 F$ K9 y% t[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
. L9 A5 d6 H8 g0 D( M[18:06:55] initialize: height=4 view=0 index=0 role=Primary" j- D: Q$ U* l. L
[18:07:10] timeout: height=4 view=0 state=Primary: k% h; \" Y7 m, t5 z  H1 Q
[18:07:10] send perpare request: height=4 view=0$ E3 Q+ A' K. V3 V
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=3& }9 V4 o) s0 {) u& l; j! L
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=2
0 ^  v, X7 t7 }# L6 J" S) F[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
' n( Q+ D: }, `9 ^- {+ H  M: o& r[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
$ X' x( A( `) U  }# d: y' O7 K# K! _[18:07:13] initialize: height=5 view=0 index=0 role=Backup; S. b. Q: Q& k

( `# [% E. q6 _6 g) c1 X
1 X1 `( B- n# t1 t* Q9 j. p
提取Neo. P, T: W" ^  u8 p( J- W
原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171
# N) M& v! P- L- K, @6 U希望Neo社区的大牛能解决一下这个问题。$ a$ q0 e3 D, b2 P& c
一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包
% J% L  G8 E3 S$ ]! C6 m结论
7 |/ }) W! S9 c, k, f虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13