Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
89 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
. t5 G9 R2 y& v8 c7 e1 T1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。7 `/ V1 K! w9 F  P) \+ g" F5 T
2、安装 dotnet core,使用命令:
- H* |6 D5 e3 y' N' `/ g: a% Wsudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm* x- a( q' a% |; M! y" w/ W6 c9 [4 [
sudo yum update
1 K! S; k6 \/ j2 s& C! ssudo yum install dotnet-sdk-2.1+ k5 H& ~4 S  Y0 F
3、其他必要的依赖:- B7 b8 _' o( O' @
安装 sqlite:8 H; `/ a+ w- _# M
sudo yum install sqlite-devel
$ E7 f3 N9 r, F, M安装 leveldb:
1 h/ u* z7 B1 M1 Z0 V" g; lsudo yum install leveldb-devel4 \( a9 B, @( u3 I: @) I
安装 libunwind:4 ~- D4 o1 S& z' ?, Z
sudo yum install libunwind-devel! Y8 y% B* c& f4 }8 }! R
4、下载 neo-cli:
0 |- v2 ?7 u0 R, E4 U0 Dsudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip) m! p9 z3 U- E3 d2 _
解压:
+ E4 h0 l6 j- g# H5 S* d sudo unzip neo-cli-linux-x64.zip
4 N' `+ k$ ^/ q! \+ @6 s, [5、下载插件:
% j; D5 F# z) e. Z' W进入Plugins目录:# [1 m( a' {. L  B  _9 }* R
cd neo-cli/Plugins
4 W& D3 i% N5 o1 D- X下载 ApplicationLogs:
# W) k; a; Z8 F- X' w% p1 Ssudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip$ N( b4 a7 y- P1 a7 \
下载 SimplePolicy.zip:6 z/ S+ a% Y# A+ G
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip
0 m8 o1 P5 y7 M! k. d下载 StatesDumper.zip:
" ]# ?! H3 b+ s, E8 t' S: [3 qsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
3 n8 {0 J/ u/ T1 L( X6 s3 d; [' u6 _1 L( D6、解压插件到 Plugins 目录下:
6 C3 z! V7 x& A# R+ U/ Isudo unzip ApplicationLogs.zip -d ..4 ^) k& u5 J8 p& m( m% f* l' _* A" w8 j
sudo unzip SimplePolicy.zip -d ..
. b: b8 f  e& f/ ]/ Usudo unzip StatesDumper.zip -d ..
( Y6 h3 U3 {8 z% V* X解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
. {$ G6 S  I5 y: H. B& Q  O9 Wrm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip
  w1 P' g: g& _' P7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:3 a9 b  C% ~% s- m% `0 U6 g
create wallet 1.json
/ `7 P! N  {" R0 hpassword: ***    + ^$ y( d- P( X- P) Z; Z, Z) _, d
password: ***    % y! m" u5 J, ~! P0 E' |
address: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    2 h6 h# p& J: L4 q
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87
, o/ |- i  {* ]# i; Q% bcreate wallet 2.json    ' k% a; K. I' [" A$ ~
password: ***   
8 Y$ P% d5 e4 L: m6 v  V) B, v4 C8 bpassword: ***    ) i) U/ J6 L( X7 T
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    4 L7 I3 \% G" w+ Z4 d
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367" h2 b8 r: A7 w3 q  q
create wallet 3.json    8 n8 h- h+ t& `( l' S: o7 \6 u6 {' _* d8 r
password: ***   
- ^, s$ [, w7 @. I5 e& {1 |password: ***   
* c; K. x9 E0 {3 `( I$ Yaddress: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA    8 F+ D. t3 `+ K& R1 l. p
pubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591
! F* ?2 s6 k( R" Q8 e, `# Fcreate wallet 4.json   
/ M3 U6 p4 B0 l9 cpassword: ***    - p  ~( B1 p0 d, k2 m" c
password: ***   
& G; \+ g/ }# P" s: ]address: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    / A0 D/ V* j, P9 p! F4 u' U
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91/ p7 c) Q( X$ `: Q8 w
创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
9 V2 w6 P* x, O4 P1 Q创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json
  ~* ?# v1 S0 X) Y8 q7 C/ r8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。. a+ o9 j# [8 O/ w8 H
9、修改节点配置文件:
) b5 T# n# \& f, e  N, T在本地编辑好一份配置文件 protocol.json 。1 Q3 k: n/ i& w; D5 z3 ?: B
首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。
0 f/ U0 M/ x) N7 I0 E( L& r$ Z/ Q; QMagic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。9 e. R9 Z+ `6 d! m
然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。
/ A( m; G- J0 s7 e最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。
; }! W4 A5 X( C; W" l" P{+ j# t: ]8 N, ?# }3 d
"ProtocolConfiguration": {
0 y, I8 L8 U  @/ {4 I( I7 L"Magic": 123456,
/ N% I* h( e1 ~"AddressVersion": 23,0 o3 Z) b: m& t# y# a
"SecondsPerBlock": 15,
# p/ V, A2 ^! M: E" t2 o"StandbyValidators": [
' R! a$ q/ Y. Q% W% ~"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",
! b/ t4 v/ R8 b% i% Z"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",
. O7 e/ @2 y6 c7 R"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",' f, M2 e1 ?3 m( U7 \
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"0 u/ e9 l. N' _8 ^5 x# J5 ~+ e
],2 b8 }- Q! e- u$ A& r
"SeedList": [
8 X: d& }7 J# F"13.75.112.62:10333",# D7 l" Z4 g$ N$ c1 F# R3 ^
"137.116.173.200:10333",, y5 Q( x- v" b
"168.63.206.73:10333"," x7 M# K$ H. F
"137.116.171.134:10333"% v* }4 R" r! O! S* U$ q
],
3 [6 S: E; H) t0 o- Z3 @/ Y"SystemFee": {5 W: P6 K6 w0 @) k) l' I/ a; m
"EnrollmentTransaction": 10,
0 X% [+ }1 j2 [& \$ w2 U( V9 f"IssueTransaction": 5,
4 y( P3 C+ D- W( P" i"PublishTransaction": 5,9 C0 B- t, R0 q" e
"RegisterTransaction": 1007 p9 P* F% A) Y# ^( K6 ?
}
$ l7 C' }2 [. P6 _, E}}- P) q$ J  u2 l. [
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。
. ^  E$ y; c2 O2 Z% X, s/ t1 f这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去
& z$ }4 K1 k' C" B) q% i为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:
" s7 n3 c3 [0 [1 I6 m使用 vi 编辑每个节点的 config.json 文件:, Q. K* F* I% o/ G& T7 [9 r
  vi config.json& z  a8 D+ x: e+ N3 K. _6 S, [8 |
  
/ i; I! d* g6 |$ Q. i5 K' B"UnlockWallet": {# E  w0 J7 @( f
"Path": "1.json",7 l& u) r5 }2 v! Q. B. @/ Q
"Password": "11111111",
' ]& e0 u% z5 ~* d) I" _" K9 f7 P"StartConsensus": true,
! E. m6 j0 w( R: B: p$ V' ]) ]"IsActive": true1 e/ E$ l+ ^( ^2 l" z* N- z
}
' {6 k4 R& s+ ]" W! v& h4 u" D( \8 e其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。
3 c( {' S$ D! Q# v- U1 L最后开启节点开始共识:
5 n1 }2 f' w1 V4 O使用命令开启节点:dotnet neo-cli.dll4 j# f6 A' J# u8 A
节点会自动开始共识:
& C! \2 q' m# V/ J2 Y: i: w0 Y# Tshow state 查看共识状态如下,说明私链搭建成功
7 B; g* q$ r* c; U. `4 b. b% G, ~
8 k6 h1 z" s! W5 [: u  S8 B! @7 t提取NEO1 l2 K  U' D$ e7 G
安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。
' g3 X( y5 n' l4 Y$ k打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。
! r1 l6 [- S- i: }' w在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。
! I0 v5 ?, H& k4 @  y打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。
3 t- Y( w+ L3 G: J4 O$ u然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。
$ m- K) m1 e; b( Q  Q% u大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。
: U6 P) C# @( q提取 GAS
# L) d5 m) [+ \在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13