Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

李悔之2015
190 0 0
配置虚拟机
' X$ y: h4 ], V/ D3 _NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。- ?9 ~  j- C8 e0 c! Y& a4 c2 H
记录下四台机器的内网IP地址,后面要用。
) O$ v3 s  J' I8 Q- }# I+ J6 k0 |. {7 K172.xxx.xxx.1429 G# A) G/ F6 c9 {3 D0 M. F
端口
. I/ d/ F, I. N如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-203349 H  {: l- P" }) H
阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。
8 e4 `& X* B& v" |( g5 E; i) I, j- E7 \8 [
阿里云安全组2 o7 ]- N+ o9 H, V8 Z! T
安装运行时
* l8 e8 |- l/ H$ ^运行环境
* I1 U8 C9 M4 j2 x8 S: X# Z+ |1 m" |

+ b5 J4 g3 x% w/ f运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本
% q6 Z6 B( g9 H8 L4 yWindows 系统下的安装方法$ s7 ?% m) y, H, F$ c6 w  n/ B
- j5 @* c2 D6 Y6 y" p
在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。
5 o) N7 w; M- y* @9 h; pNOTE
4 w2 M/ }- z/ |! Z- f; V6 e! EWindows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。
! Q8 p6 T/ m5 W* l( R创建钱包
8 X1 f- N$ Y, T9 c: y在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面$ ?2 O  u, c* P; H( j. D/ x  d) B: l& E
create wallet wallet.json4 d6 E! m5 J% M5 Y" h! M
db3后缀名的数据库文件不支持了
; b9 j$ M/ j9 s( C; [9 `. B% W

/ w1 X# l1 e0 Uneo15 H+ Q! f& t# s, J$ i: D
neo> create wallet wallet.db3
# ]( k7 Q( z1 r3 K1 h6 Q( WWallet files in db3 format are not supported, please use a .json file extension.7 U5 u: x% H  {; H& z& S6 o
neo> create wallet wallet.json" u, Q! }, o# M6 K: b+ X! |
password: ********
5 S7 w$ Q* L0 B$ Y' apassword: ********
. w9 R& b8 D* W4 Kaddress: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk
# F7 o: K& ]6 B; W& d* Q2 n2 @ pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c
4 B7 B! D: Y7 |6 y记录下另外几台机器的钱包公钥
" C1 ?9 O$ j3 y) H" D/ N- aneo28 g# g$ h  U6 N7 P) n4 y! j' P6 D. x
address: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h! g8 W$ Y' D/ |  j8 M
pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb
3 C6 F/ ]- x- [3 `3 Dneo3
$ e5 T# ?, m& A/ f1 y) G" [address: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH
) ]7 k3 I  n6 X$ g pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b11 P0 s2 a+ K7 G0 u
neo45 h4 I/ E6 f2 V$ |1 h" o; i: F# E
address: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe
/ ^) F6 L; b( M/ r pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d. o( Z0 _9 r! C% ^7 F9 r
修改节点的配置文件
- X* r3 i. |3 c" w7 E8 X* X{6 l7 m# r/ K- I0 u" d
  "ProtocolConfiguration": {
" y# {9 A; ]$ n    "Magic": 1,6 s$ ?' X% e! E" a: ?
    "AddressVersion": 23,
3 V- t, j0 W2 w, x5 c    "StandbyValidators": [
" b' ?( Y6 c6 M: B- b6 D2 T      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",
* v4 |8 s, J0 m      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",. V9 C3 O& T% q* Y* s4 F
      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",( i5 b7 Y8 ~9 [+ R  N! K- u1 F
      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d"9 K: @) T0 G9 R1 v2 }6 S
    ],8 F1 h) h& V; X7 k+ U/ y
    "SeedList": [* {, B& t% D) j$ `) x# W  Q/ R
      "172.24.198.142:10333",
9 V6 ?9 p0 `  U: L) _9 c      "172.24.198.141:10333",) t8 `# M& P" z
      "172.24.198.140:10333",3 o. ~( M2 J& e+ S! s& l1 O
      "172.24.198.139:10333"5 ?- ?/ Y. b& [& E" U( `% R2 O% y- M
    ],- W$ r! v2 j( s/ l1 p6 \
    "SystemFee": {
, u. m3 x' Z! E" W* i2 L0 i  ^      "EnrollmentTransaction": 0,
8 v* Q9 _) }6 ~% X0 i      "IssueTransaction": 0,
, V3 s+ g& w4 c0 ]6 j      "PublishTransaction": 0,: A! {8 Z) M$ s3 h4 B% X
      "RegisterTransaction": 0/ n& J3 B* B4 l* g8 ?  j. f: S/ U
    }2 }. Q5 l4 R2 E) B% N
  }* X! r- f  c) ^: @- @; S
}/ k+ c" Y# {& P, p% q- b9 Z
打开钱包,开启共识) ?) f+ u  \" U5 \
open wallet wallet.json start consensus2 O: y0 ~5 p  E5 ]% @; Q$ k0 O3 I
如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。, ^9 B, o: @5 e& m# s" E8 _) ?' v
9 @, c: t: B! [1 }0 s
截取其中一个打印,后面方便调试的时候研究
3 B  b9 l8 [% A7 I& \neo> open wallet wallet.json
# W0 r; c  Q) U# T2 u# X6 u6 m8 k$ d3 Cpassword: ********) |6 r! \( l7 L% `
neo> start consensus* Q& ?; z8 Z7 c0 r
[18:04:31] OnStart& l$ ~! O& [" J$ ]  x% h& M/ ~  o
[18:04:31] initialize: height=1 view=0 index=0 role=Backup/ \3 @. C5 {$ {
[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=2
9 U$ n! a1 D, e% f, Q9 ?7 r[18:05:01] timeout: height=1 view=0 state=Backup
, F6 |0 k& \, d5 s* b[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging+ z* H6 O8 ?5 D/ q
[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1) M& n' ^& ?7 N
[18:05:58] send perpare response, L# t9 t8 v6 B! B
[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=28 @2 w4 |; ]7 j! v. f9 a
[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
4 v, F) n# K% m! b[18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
. M5 j9 |4 |, v; b[18:06:01] initialize: height=2 view=0 index=0 role=Backup2 v$ w4 y' K# d+ d; ?, v) }! v
[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=16 a: R  w" c! k- m
[18:06:16] send perpare response2 Z3 p( ?/ j, Q' y: U
[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=1) m, o( D' R! R- \) d4 E
[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45  k# q* {1 Q2 U" O7 y1 \
[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
+ k. [7 z& a& |- }: r2 ^. l[18:06:19] initialize: height=3 view=0 index=0 role=Backup- P5 x7 G& F$ t, m; ~9 @; S7 G
[18:06:49] timeout: height=3 view=0 state=Backup: M. S, i- V! s4 Y* D3 V3 n
[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging
, H* A7 o! E' {% e[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1% i; T" \% M5 H9 m
[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=1
, q/ H6 ~0 K* E$ a3 g. x  x4 D: T7 V[18:06:53] initialize: height=3 view=1 index=0 role=Backup, ^9 W% j& @+ M$ v0 m% y
[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=1$ U9 G1 q# \! S2 [
[18:06:55] send perpare response
. G' i# ~$ p% V# {[18:06:55] OnPrepareResponseReceived: height=3 view=1 index=16 g$ o* A# F, M
[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412' ?( f$ ^  y, K/ B" w
[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412; U; w/ j) a: _3 T+ p6 v$ l/ G
[18:06:55] initialize: height=4 view=0 index=0 role=Primary
) C3 n3 D" Q8 N  h6 |# Y[18:07:10] timeout: height=4 view=0 state=Primary2 k; i! ~8 S6 a0 ~  `
[18:07:10] send perpare request: height=4 view=0/ A* G% `% k' o; b( D
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=31 R% {& Q$ u6 y& V. z, V
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=27 f: s6 V! K% ~5 s
[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091, {8 j9 f+ z* m
[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
& k0 Q3 P4 R( N[18:07:13] initialize: height=5 view=0 index=0 role=Backup' l7 L4 B+ }4 w/ P- {
! P2 K9 X! _, Y! {
1 m! F9 V7 s$ m
提取Neo% w% r4 g4 P1 `) F6 [
原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171& a% @2 d+ H' I9 H) n
希望Neo社区的大牛能解决一下这个问题。! a* B( \+ V- u
一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包, B3 c, u( F+ M# {
结论# X4 `4 P' M4 D  j$ i
虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13