Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
109 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
' X. v; X0 y/ e9 \6 |1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。, ~& A- i# ]: w! ]  M# B" `( \* @
2、安装 dotnet core,使用命令:
2 ~  Q$ Y8 C% V5 q# bsudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm% f% w/ Y  n/ V1 B, x$ s9 t' T2 c
sudo yum update
: c% s$ o. L1 @. }sudo yum install dotnet-sdk-2.1* E& }) @! P; L
3、其他必要的依赖:7 g5 E$ }. I* j: }
安装 sqlite:. z- i, A' T" {; m+ i
sudo yum install sqlite-devel; w6 Z+ T3 a2 ^$ r
安装 leveldb:
) Z, S2 k$ G* N3 `& A$ W  ]' S' Csudo yum install leveldb-devel
  g0 }) E6 J4 ~% r" b& h安装 libunwind:/ V2 D0 Q( u2 d9 K  c( b3 F" l
sudo yum install libunwind-devel* ~0 m. u) h- l  ]
4、下载 neo-cli:
# ^5 Z1 U, ~0 K5 z0 csudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip
. i/ n1 b/ }+ L6 d解压:
( n  [* @( p4 |% U0 a0 X+ w5 J. _ sudo unzip neo-cli-linux-x64.zip
1 w- B7 d! B) O2 E5、下载插件:  i: u% e8 d" F# l8 v" b3 n3 M( F
进入Plugins目录:3 v5 l4 F. ]* D1 ?! u/ B
cd neo-cli/Plugins
# O9 l/ |: y, f下载 ApplicationLogs:
2 D1 W3 B2 G$ s6 D$ Isudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip+ m. ?" E4 \2 @, `9 L
下载 SimplePolicy.zip:
% k0 i& o' t5 U0 w! Vsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip
& @" E" N3 `/ R  N) M9 F. Q, O# t8 {下载 StatesDumper.zip:6 B* x; X- `' w4 ~+ {8 s, k% A! W
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
2 q7 C( [! O" ?* c- A6、解压插件到 Plugins 目录下:
/ D9 i6 I, a' p% Q4 J+ P0 Gsudo unzip ApplicationLogs.zip -d .." B5 Q# `  B$ J; A# m* O& C
sudo unzip SimplePolicy.zip -d ..
8 e* z7 r( e. usudo unzip StatesDumper.zip -d ..
& J9 S0 \4 p$ g7 Q0 y7 V解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
6 c( |: z# B9 i( G0 T5 erm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip
- G% c* a) L( t' Q# m' r2 f7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:
# L, r* ]: p8 Z3 U$ `create wallet 1.json
$ j# H* ?( V" F) y  Rpassword: ***    2 e$ ?, p9 J1 K" B
password: ***   
2 K5 W5 I0 T  n( O8 X% S$ H8 \# Xaddress: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq   
4 q, J- m# N: b! Fpubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a874 `3 h- A9 {7 O: a5 S; g( \) N
create wallet 2.json    + r& |0 i6 U$ B; P, T( w
password: ***   
! q6 C6 @5 d* f6 N1 x1 C, A( fpassword: ***    + P5 a) U: Z& w: G! `
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    , `$ R. E/ D, n$ o" [
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d1273670 O/ [! K& ^+ K/ ~4 }* G4 g
create wallet 3.json      G4 f5 g% P5 y5 e
password: ***    ; x# g0 a. H& j7 a$ j9 p" S
password: ***   
3 r5 [: k  n  d3 A3 \6 B2 w4 ]address: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA   
! u* S5 Q; n. g/ m3 Hpubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591! H1 z) c- |$ M0 j1 `8 l
create wallet 4.json   
& x1 \4 l/ g; Z1 K6 Xpassword: ***   
8 X; M) @/ _$ I+ J; h9 Gpassword: ***   
& F! l! L* a( w7 j0 h: p, F" \address: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    1 w: f# X  B& X
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb912 |' T" F! B' f
创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
4 [3 C+ V( t; w' t  k2 z! ?创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json1 ~, K# V8 G* l8 t7 i8 M# r
8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
% _! }$ f- `4 j" |; o9、修改节点配置文件:& ~# E4 D$ T9 Q5 K9 L/ {' P* u& K
在本地编辑好一份配置文件 protocol.json 。
% z! W4 K) w+ j  G# q! g5 [  z" x( z" h* n首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。
! ]# M' s, \, HMagic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。7 G8 k) A/ K- u
然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。
3 P+ q- x4 p7 F7 R2 u; h8 [最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。9 _1 T7 u* e  E3 C+ I/ M  V8 o, K6 ?
{
5 A: I; x9 w5 g. l2 Y  p$ b"ProtocolConfiguration": {
" P2 \, o" v" S2 _. j! m. m& K"Magic": 123456,  p& x8 C( @* A  _& F0 D. y
"AddressVersion": 23,
( t5 z$ j; d% |: A& D1 u"SecondsPerBlock": 15,2 c2 }6 V4 K$ |) i- l2 x
"StandbyValidators": [7 N$ c- G& g( B3 V5 F- J+ Q
"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",
+ Y/ M  f; n7 r"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",7 k5 Z- m: _6 M8 u2 o
"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",1 z; [2 x; V) e0 v- U: {9 G1 M
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"0 g" U* \: f$ G  H3 s+ n* t0 {
],! R9 ]0 [9 a. `7 y" k
"SeedList": [+ Y7 w( V5 D7 Y1 b( y/ M3 X
"13.75.112.62:10333",' W+ @5 \! ~# t, y* S; F: A$ `7 D
"137.116.173.200:10333",2 L1 M- w* c/ Y
"168.63.206.73:10333",
; l5 P+ }) N" u$ x3 n"137.116.171.134:10333"
4 S7 z% l! w9 z7 _  ?],
. V: Z2 l. ^# f- |$ D2 F" I"SystemFee": {
+ |. i4 V6 w' y/ s"EnrollmentTransaction": 10,
; k0 P9 U( T, W2 Z; A8 t$ h"IssueTransaction": 5,
4 v; K- [$ N! V: r1 T% I"PublishTransaction": 5,, E& [1 W3 S4 k) Y" V9 G
"RegisterTransaction": 100
* {; v0 t9 e; W$ y! `( _* _# ]}
" B0 ?$ x& p, R2 {3 v: E5 p}}. c  Z; `% X6 m7 @
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。
  I7 {/ h, P1 t; K3 }这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去' I! P; L9 k/ @/ P/ \: w: S
为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:5 H1 q5 ^' m% o) @& D
使用 vi 编辑每个节点的 config.json 文件:9 {7 [5 G  ]" D
  vi config.json
8 h$ U; i- G/ F3 i  
$ N, E+ d' a! o3 A2 g"UnlockWallet": {  e# H& q- y& g2 a+ h9 m
"Path": "1.json",
) U% v% K: R  S5 b; @( T+ [2 E"Password": "11111111",
0 }7 o6 S; V6 p  M! r' j; v3 e& z3 e  `"StartConsensus": true,0 d' c0 \7 B8 E6 @
"IsActive": true
8 P5 E1 X+ e$ n}. U6 J( k, ^& U) Z
其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。
5 B7 ]7 x" L4 y1 P最后开启节点开始共识:3 l1 T1 Z2 Z% j/ B, N6 A
使用命令开启节点:dotnet neo-cli.dll
) A6 \+ r. r0 {: n( W' ?8 s+ h节点会自动开始共识:
+ |0 K2 t# q0 J) cshow state 查看共识状态如下,说明私链搭建成功
) B  _% B* V6 j, k1 z/ z
# ]; [& L* w! I0 |/ S/ M2 M提取NEO) ?& t  d2 @# d* h9 z
安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。# T3 S- _6 a# N
打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。0 {, E; ^( B5 Z/ a/ \6 j
在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。
1 M& M4 I6 x( |! F打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。4 R* d  S4 q7 v6 K
然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。
0 O8 y$ l: j  H大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。$ r/ \7 U: Z& c7 }" T
提取 GAS  ^: W0 Y" q; U: z9 m6 M
在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13