Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
141 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
0 ~* q* y3 |/ T2 ?; g8 m! }% y: e6 _1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。
0 }; H- z3 b& C, s; E; o4 o& ~! L- x2、安装 dotnet core,使用命令:4 \7 j. O! j0 ?) M) T" r: B8 |
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm  d  a! G  P; }0 Z
sudo yum update
  `# T# w" y* `' v: tsudo yum install dotnet-sdk-2.1
& U" P/ ^1 t& U. \6 z( w3、其他必要的依赖:
( ^; r! L- T' o- l安装 sqlite:+ ?- B+ ?- ?) i  f1 M  H! U# b2 M
sudo yum install sqlite-devel
$ E2 K& T6 k5 k. T安装 leveldb:7 N) Z3 |. |# Y( p2 g
sudo yum install leveldb-devel! a9 F7 X0 e6 ~; W' K
安装 libunwind:& M' t$ _5 C% X2 x2 D
sudo yum install libunwind-devel
2 u/ R' ~! Z" _6 k" u4、下载 neo-cli:
, B# l: K& B1 o  `/ qsudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip
  t8 k% W+ E7 F- C  l解压:& D0 F0 M9 P/ G( L$ ?* D% r
sudo unzip neo-cli-linux-x64.zip& M3 n. y% C5 _0 u: F" T
5、下载插件:
7 c0 t6 M0 u- X进入Plugins目录:( n+ Q  o4 c. u# v7 _$ N! ~
cd neo-cli/Plugins
/ c& I5 g. K, @+ j- d3 g下载 ApplicationLogs:
! E# m- y5 P: e. N5 I9 G* esudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip% D; J8 Z* F, B, y) q3 x
下载 SimplePolicy.zip:
6 ]. K  g6 b' o0 J$ Vsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip/ u6 j* F1 ?7 V# B* |: f
下载 StatesDumper.zip:8 i) t# y& O# g/ F. M$ g
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip# J5 V- w- B( W3 w; Y7 T1 x
6、解压插件到 Plugins 目录下:& G* @. p. [4 b
sudo unzip ApplicationLogs.zip -d ..
- C( ^9 g9 Y' W0 Osudo unzip SimplePolicy.zip -d ..
( N# B1 S( ]/ _" f$ o6 I' isudo unzip StatesDumper.zip -d ..
0 R/ X0 h; w+ e解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
2 M2 Y0 v6 f8 R. s7 V1 R; Z  crm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip/ J6 I2 {  n6 U9 T9 A" [
7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:/ j" E5 M' {; h  J
create wallet 1.json
1 W8 h% `: }8 j, z+ @, Mpassword: ***   
( t3 D, F- d" _8 h! k/ M% spassword: ***   
- ^" E, Q+ c. [- B; [1 n; vaddress: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq   
- {8 o! _1 F4 o( y; V3 R, T8 M& dpubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87
4 e; j! y. Z4 h2 ucreate wallet 2.json    / g" L7 \+ h% L9 ~  _
password: ***   
% `8 J7 g2 w2 y% m9 B& W/ ]' Z9 Mpassword: ***   
2 _( P- \. t, g$ Iaddress: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN   
. V7 t' \8 J) M$ _$ P; E0 Bpubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367! n8 ?# @9 W: k1 C1 T% r. ^/ U
create wallet 3.json   
9 Y8 e, X) E6 v1 v$ p2 Zpassword: ***    1 d" _) ]  ]1 v- c( H# j
password: ***   
7 o, U+ B+ Q* T* }address: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA   
5 B. d" @/ B) p  V% k9 Bpubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591% v9 U  b3 t- y, [! l- ~( [) @1 S: X% h
create wallet 4.json   
. H0 X; x# m; ^; M: {password: ***    0 ?6 D; y% d1 [5 P+ o+ L" h- [
password: ***    3 d# e) Z. A% m- Y$ h- a( y
address: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd   
. Z7 ^5 L9 L: k$ F! |pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91
( `6 \2 f: {% R+ y创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
/ M6 _+ ^$ x4 o0 i2 `8 |# w: _创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json4 q" \0 ]7 w! A. M' O8 d1 J! e$ Q- C& ~
8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
3 S, w2 E/ Q4 i9、修改节点配置文件:
5 M5 s9 ?6 m; i" p在本地编辑好一份配置文件 protocol.json 。
2 q( L" w; G( v0 F0 E首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。( F+ F- H+ b3 ~" m0 B) A+ w
Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。
; m5 q* H6 ?! R, Z4 {* Z2 [然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。# S; g3 H! M7 w/ |8 `/ Q  l
最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。
* M- g3 I/ U$ g( @{. X( ^( ^* |0 _9 e
"ProtocolConfiguration": {7 ?# y( {. ~+ r2 x8 C
"Magic": 123456,
5 w! ^' z" P; [- c+ i+ J  P: I  J"AddressVersion": 23,
$ g% W1 H: u( Q( L; G"SecondsPerBlock": 15,9 x. Q$ m/ Q: F8 b( ]3 D
"StandbyValidators": [/ @6 ~6 h/ w: y2 Y2 X7 C
"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",0 V; E0 d* r3 @2 \
"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",/ g. n( U$ Q! v: |: \: h: I/ H
"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",8 z7 M4 F7 g/ |* h
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
, k. ], S. f8 _% g% F' e2 t- g],$ t( J4 W/ f  K! i5 v
"SeedList": [0 N  T6 ?: ]( X/ I, Y  G, {
"13.75.112.62:10333",
6 v3 ?8 p3 g' f( D7 {/ Z"137.116.173.200:10333",
3 z4 u) P- J- X0 u"168.63.206.73:10333",( N; g1 q, p# O0 b7 }* Z  t- U
"137.116.171.134:10333"& p2 Q# y7 y6 o' j- `
],, A$ y! ]1 w/ m: l( R/ T# I
"SystemFee": {8 w. Q7 Z. R8 \, f) U
"EnrollmentTransaction": 10,* W# i" X% Z  E& G8 t
"IssueTransaction": 5,
" g1 L9 `  Z# @8 t. r; X"PublishTransaction": 5,
1 Q" ^  U$ N* N: ^5 d$ M* |"RegisterTransaction": 100  a$ U7 j* n" c) v
}
9 ?; v- f' t6 Y: `& M' s- M}}  u) d! K+ E, J$ {; n
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。  d+ O0 p3 ?4 Z( p; j( k9 I- \
这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去
# H: }0 x, W' M8 p为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:. V4 X5 C. }2 o3 e. ?0 M
使用 vi 编辑每个节点的 config.json 文件:
2 z5 u$ y5 v1 b4 g" @  vi config.json
4 a7 p9 h1 O  h& R  , y3 {% W. @& d( c3 g, b# D# _
"UnlockWallet": {
- }7 M4 i9 g- G"Path": "1.json",8 ]1 E+ b& ^8 W: Z; A( \
"Password": "11111111",
6 x8 n1 B- c! J/ e1 w" p"StartConsensus": true,6 m& b5 J7 C, {$ z
"IsActive": true6 q- o5 E+ C, v& b
}: `1 g- R( s- J5 B
其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。
$ z4 f0 z, r$ y# x9 H+ u最后开启节点开始共识:$ u0 _" M- g7 b" J0 f$ B4 W
使用命令开启节点:dotnet neo-cli.dll
1 s) S, d5 R2 v9 F. n; A节点会自动开始共识:) v* Z/ [9 y) E# y4 S
show state 查看共识状态如下,说明私链搭建成功
$ [6 M: }# |) }( F6 v
+ h5 e8 o/ s# |% Z* l提取NEO4 I5 E1 }9 L" e( l1 I6 J) g$ L
安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。
: a2 `/ o; |+ t- C( B' p5 i打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。
7 l. g' G" Q' N. ^8 ]+ k/ Z" a2 }在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。  |' l& P" W- @9 ~- y, C& g; Y7 }
打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。& H7 Q5 f. ~/ i4 A3 s
然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。
& y; c+ \$ E" ]. @大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。5 \7 T" Q( `4 V) t  R
提取 GAS0 @& @8 C' c# q3 C: ]. r
在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13