Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

李悔之2015
82 0 0
配置虚拟机
; V, L3 _- g" ?# kNEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点。在阿里云上可以买按量付费的虚拟机(机器都是window server)。! N2 Q- v/ Y) K" X/ Q4 d. \
记录下四台机器的内网IP地址,后面要用。
/ t. m& B  ?  _$ w0 B+ }. M) A172.xxx.xxx.1422 J! c) B, z! d: G6 R
端口
8 N# G7 I) v* H如果你想让外部程序访问该节点的 API 需要开放防火墙端口:10331-10334, 20331-20334
+ E* ^3 \/ R- m8 h阿里云的vpc如果在一个安全组内就不需要设置。也可以通过安全组开放所有入口。& s6 F2 J7 [: x8 a
+ c; W6 k- x9 d2 f6 p" N4 Y
阿里云安全组
7 D' {! k! K" i. K3 \/ n安装运行时/ u7 n' l8 k7 G
运行环境, e% }8 [" r( y% X# f/ u
$ }- Q! G! t. M8 h
运行 NEO 节点需要安装 .NET Core Runtime,需要安装 1.0.1 或以上版本
, |) F# b4 n3 }# _% H3 mWindows 系统下的安装方法- ]9 H6 E  n7 a9 E% m7 M; g
7 P/ v) G! a5 I$ o0 m: B
在 Windows 系统下安装 .NET Core 非常方便,直接下载运行即可。
: I" W  q* T9 X2 r8 @3 MNOTE
8 x8 v: u+ H3 Q9 GWindows可能还需要安装Microsoft Visual C++ 2015 Redistributable Update 3(https://www.microsoft.com/en-us/download/details.aspx?id=53840) ,否则后面无法启动Neo-CLI。
/ H) Q; g4 b& P创建钱包
1 U$ \) A2 W( s9 y9 v9 M1 F$ R) w在四台机器上分别创建钱包数据库,数据库文件会默认生成在neo-cli的目录下面
/ ^5 Z: o2 }% h6 z' ~/ { create wallet wallet.json' @/ D! r" O* B+ t# D$ I, w
db3后缀名的数据库文件不支持了
4 Z! Z# C* u" }% t& |# r

: c" F" X4 V0 t8 M/ tneo14 T) G' g- o# u+ C
neo> create wallet wallet.db3- {1 s7 l5 b& q! d9 L
Wallet files in db3 format are not supported, please use a .json file extension.
" B! H) t% Z, m$ O( D) x1 Vneo> create wallet wallet.json
9 v% y0 h7 E7 y0 s! J4 g: ~password: ********! H* w8 i& y& x" h5 e0 P, \
password: ********
5 W- E% p$ L4 W+ {address: AS43TUy7VtuGpNJh2YC2NM3asTv3s6piyk. h1 Q" S' y& e. V1 X
pubkey: 02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c+ m$ d5 }) g0 z' @8 i8 h
记录下另外几台机器的钱包公钥
* }. A7 ?/ A6 t4 L7 ~5 S) C6 Y, V. e4 sneo2( d4 y' [$ w8 B% P/ m/ P/ h
address: AY35ZjJayg9JfmCeHg1nySN4LSMntFEq2h" E7 U- |# p1 A
pubkey: 035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb
" L1 {6 R& p3 J" xneo3
$ Y5 z2 l, ~; C( ^1 P( taddress: AQZNtdGVXbfot5fSaR4ijBqrEwbnFQspmH' E9 v9 \4 R6 G' x; _
pubkey: 029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1
9 X% N3 k. V: {; Ineo4! {7 Z* A3 i, w% C5 r3 a9 h1 t
address: AXctyT8ctWTXtWaUFM9o5FJas8BWdBbiqe) Q  e( V" h. e
pubkey: 02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d
/ G; Q8 e3 Q. p7 S6 H修改节点的配置文件$ G+ Y% [+ u9 A, _& h+ u
{
+ s( O4 a" o& O* l8 r2 Y3 |  "ProtocolConfiguration": {
5 c& h" g7 {. J    "Magic": 1,, w& ~' n/ E, M: q" g0 s
    "AddressVersion": 23,9 q/ |- W; O7 I$ T  a
    "StandbyValidators": [$ e# i- \. U& {2 F/ P6 n$ \
      "02d57c9bbc42b45943867dff0180cb9df266b46db7d027a283eabc7c4b8819c86c",
: p, G; |: |2 A6 Y5 o; |6 ~      "035022ce81faca930ebe6b9f8e830526150e47692f19f58affe1311e42cd0d43bb",3 b2 l0 i* @3 a2 J" {
      "029f21d56f9422e55f0ef7cf75c092854e01c99aeee73f0effeaa489a96fc7d2b1",
8 w  A, G7 I5 }  ]; O/ \      "02dc0e750e21c386537618079d89836eea39fad396206e2e56cfba16bdc014dc5d", X$ e, k) L8 U  \7 [, _6 b3 w
    ],& o/ q2 q1 Z3 n. \/ I, c& c
    "SeedList": [& K2 n) T+ w0 D
      "172.24.198.142:10333",
5 W7 \. p" T3 Z( C4 i      "172.24.198.141:10333",
, P; S* }" V5 F+ Y/ e      "172.24.198.140:10333",
1 L# j3 a* ?( `$ j      "172.24.198.139:10333"
4 `% F0 N. a8 T$ Z    ],1 X. c# T1 I; O% k
    "SystemFee": {
9 ]8 Z, l8 h% P9 W- s      "EnrollmentTransaction": 0,4 K0 }4 G- c% f. h& m9 d: Z
      "IssueTransaction": 0,
& d; ]) S4 L" ], q& B      "PublishTransaction": 0,
8 j. `7 m' l* N9 i& g/ R      "RegisterTransaction": 02 ]' e5 U+ l$ A/ ^) n7 ?- ~1 S7 a3 H: S
    }, Y# G4 W& Y* g8 q, y% D7 u9 ?
  }3 T; h9 P3 D7 [- v
}
4 F; ]! n7 }6 Q7 Z2 E- T9 @打开钱包,开启共识
* A$ P3 ?& H9 m: h) K& Nopen wallet wallet.json start consensus, l/ w1 a+ Z& Q& a5 h9 r
如果前面打开过cli,请删除chain目录下的文件,这样区块链高度会从1开始。
- a$ G* K  a: O) [6 W: c% ?. g# H7 J. R( q3 u2 r3 X+ |
截取其中一个打印,后面方便调试的时候研究
- W! n4 {' D$ o. `/ xneo> open wallet wallet.json
% E0 X- T" U, g" R0 Wpassword: ********# X$ N1 Q6 }2 \* U* d. y' {
neo> start consensus
2 ^' j8 n9 K. F7 w/ A& Q- [1 V) J[18:04:31] OnStart+ Y( [" F' G$ g
[18:04:31] initialize: height=1 view=0 index=0 role=Backup
4 V. g- U* Y0 E' h[18:04:47] OnChangeViewReceived: height=1 view=0 index=2 nv=2
% Z# q' }( ~: l+ w# p7 K[18:05:01] timeout: height=1 view=0 state=Backup$ f7 Q( x4 _' I# R* f2 e
[18:05:01] request change view: height=1 view=0 nv=1 state=Backup, ViewChanging' h7 O$ q+ }, j- Y3 t. h4 z, F: |
[18:05:58] OnPrepareRequestReceived: height=1 view=0 index=1 tx=1% R) e: P5 m8 J% q( R7 }
[18:05:58] send perpare response8 `% x! }- {# r  ^, `
[18:06:01] OnPrepareResponseReceived: height=1 view=0 index=2
% @& O- k, b; Q; D& I8 |5 o- L' y5 l[18:06:01] relay block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
( I' _+ l. E9 u2 K. l6 [. r4 Q[18:06:01] persist block: 0x8515184285fa2e454b0eca441580b5cce01cc0e5cb5dd6d7ff53ef13ec7f665e
/ z) E, j, W/ R, ]- n! y2 d" o4 R[18:06:01] initialize: height=2 view=0 index=0 role=Backup
1 q$ L* c% }" v8 }5 s' R) V[18:06:16] OnPrepareRequestReceived: height=2 view=0 index=2 tx=1
) y1 l$ W9 Z4 l: `! Z) y, s[18:06:16] send perpare response
5 ^8 ~% V9 y0 l  b[18:06:19] OnPrepareResponseReceived: height=2 view=0 index=1
) Y% j7 b7 W2 h' W+ ?+ K[18:06:19] relay block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf45
; k( j. u# a  G[18:06:19] persist block: 0x35b163f4f524a1ebcc1ef3053e878f9bb37b1f4a8531a060ef18cfd6efefdf452 T7 p) v9 N8 B) ?$ X  S: @; V
[18:06:19] initialize: height=3 view=0 index=0 role=Backup& Q% v2 J1 s- |
[18:06:49] timeout: height=3 view=0 state=Backup
/ @1 f  J( N8 `$ F+ G[18:06:49] request change view: height=3 view=0 nv=1 state=Backup, ViewChanging+ [0 G6 I: k  R9 @' o( |1 f+ I9 a
[18:06:49] OnChangeViewReceived: height=3 view=0 index=1 nv=1
+ z% h- t% b1 g[18:06:53] OnChangeViewReceived: height=3 view=0 index=2 nv=1) A9 a  z% |" @, X/ o- M, c
[18:06:53] initialize: height=3 view=1 index=0 role=Backup
! F: k- i" H: @& r" l[18:06:55] OnPrepareRequestReceived: height=3 view=1 index=2 tx=1) J1 U$ C1 r3 q) _) {6 d
[18:06:55] send perpare response
' V& D& C; f! n1 ^- [[18:06:55] OnPrepareResponseReceived: height=3 view=1 index=13 l" R: a  O* _* f5 R& }' W+ j
[18:06:55] relay block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
) J* B2 N* I. _% @/ p. S8 x2 z[18:06:55] persist block: 0x1766a0602903f513f76561c93fddf312f70d30801310abfecacc89feace5c412
! x/ h3 O, b+ ?! I, o8 f[18:06:55] initialize: height=4 view=0 index=0 role=Primary" k) y  q$ A) h2 _
[18:07:10] timeout: height=4 view=0 state=Primary
" G' a. J# w' R/ |% O- g[18:07:10] send perpare request: height=4 view=0& F1 E$ y" `8 a/ v
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=3; l7 _4 G5 A2 g8 y" x
[18:07:13] OnPrepareResponseReceived: height=4 view=0 index=24 W6 N( l( Y$ Z: i& U
[18:07:13] relay block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091- _8 I! k# M2 J
[18:07:13] persist block: 0x5233d9086db97e59f86d73e8735093c1b3fe4569759697ff8a04e0eb8f389091
* |  Z- c0 k( `[18:07:13] initialize: height=5 view=0 index=0 role=Backup
  h# l  A4 ~( b4 g$ W0 j8 ]% B, d! r7 A5 f
" z+ |: Q: S( g$ p+ G
提取Neo8 m$ I- H4 U( {8 d9 ]
原来文章中有提取neo和gas的方法,但是我现在还不知道为什么要提取Neo,有什么意义,先跟着文档跑着看看。我用的window server会遇到crash,详情请看https://github.com/neo-project/neo-gui/issues/171
( a7 X! Q" \$ h希望Neo社区的大牛能解决一下这个问题。
% L; m' {& R: R) x. i7 C一天后,社区给出的解决方案https://github.com/neo-project/neo-gui/issues/171,需要下载两个包$ g, M  [) x( C+ I
结论8 v2 r% u" j4 V8 F
虽然配置成功了,但是还不知道能干吗,需要进一步研究。提取Neo也遇到崩溃的情况,发现这个问题,也算做贡献了。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13