Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
144 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
- `! ]  ^6 s3 t. V9 H1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。$ _2 ~" t$ p( E
2、安装 dotnet core,使用命令:& N8 c# ]' s) e5 I
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
( P5 U4 D; X; \+ u0 |sudo yum update0 `: X6 H1 u. _9 M
sudo yum install dotnet-sdk-2.1
) O" n: _8 U/ ^3 N+ ^3、其他必要的依赖:+ L9 e6 Q* s5 R
安装 sqlite:; n+ n# f) M" t+ o8 g
sudo yum install sqlite-devel
8 a. q' H* Z% K7 I( d' B7 h+ d安装 leveldb:7 N: \* Q( |+ n$ T% g9 `
sudo yum install leveldb-devel- M, R/ [! [: ]* Z2 Z  F
安装 libunwind:# U8 m; `3 ~, N0 l/ g; T1 H
sudo yum install libunwind-devel
) C* A( c- W3 h. u) M& k4、下载 neo-cli:
7 F2 ?* s; n  Z4 R/ Csudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip
1 x/ C+ _6 l) T) x) ]解压:8 r0 _3 g$ D) W% S; B
sudo unzip neo-cli-linux-x64.zip
( G6 {  C- K# a+ M* Z5、下载插件:
7 H8 o% Z" T+ q0 j进入Plugins目录:+ g: p. I* Y0 K! _- g; e
cd neo-cli/Plugins
/ S6 @6 r& ^! Z9 b6 Z- l下载 ApplicationLogs:
7 m% N# y+ C7 I6 o: Rsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip, y& E1 F4 }0 Q2 u4 C& N/ _! |4 H6 F) l
下载 SimplePolicy.zip:. y* M, [: e+ t% I
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip
- g" [0 w% g3 j8 b* o; C2 V下载 StatesDumper.zip:0 b" p2 K  F4 s2 W
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
4 X- k+ w/ E; @6 H/ J7 |2 Z" Q6、解压插件到 Plugins 目录下:
( ?7 s4 h/ y( {2 g: Esudo unzip ApplicationLogs.zip -d ..) Y" e9 ?8 T: B# [0 e1 Q6 s" c
sudo unzip SimplePolicy.zip -d ..
) T. s9 {. _2 Q& I2 T) esudo unzip StatesDumper.zip -d ..
* m, L, f" n& R8 M解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
# m1 M* l" U1 N  {$ K' j) z5 nrm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip( |% d) r( q' o% U- \+ n  O
7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:2 e6 |. K3 a% ^+ {( V/ |* s, H  o
create wallet 1.json
, m3 ~" k1 [7 I! ]. }password: ***    3 P( j: u; @# f3 ^/ T4 l/ @5 D
password: ***   
' G# e" v! ^& A' i; s, Haddress: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    5 \) v5 s" R% U$ t' `
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87
: \8 S1 Q& V) Vcreate wallet 2.json    ! S% r! p$ ~: y& S/ ~
password: ***   
* C& W9 A. }5 p  |! [2 X0 ipassword: ***    " J. Y" V* u2 G
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    / h; Q2 e4 @- T* Q5 _- L' r0 ]3 F' T
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d1273677 ~2 L2 d- k0 B
create wallet 3.json   
- k; c: V4 o% ~, Mpassword: ***    & m, t) _' s- M; J9 r6 d) R2 G
password: ***   
4 E. v' N) J: t# e( ]3 o# caddress: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA    5 z8 z, m* n3 a$ a# J6 S( R  `
pubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591
3 s6 v3 z/ w" j: Icreate wallet 4.json    3 F+ t! J4 g% B6 s
password: ***   
; L2 k' k- L/ C- R6 _password: ***   
4 l( T! Q' m0 K* H' l- Naddress: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd   
+ \3 J# K) W9 z$ `, m, U8 rpubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91
  O0 V3 z! J) h. n5 q, a) ?' n创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
5 C& c% k  y) z* ]- ^9 c创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json2 J4 u) q. {4 R0 N( Y* [
8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
: r- @7 D2 @" D* k$ a) \9 u. S9、修改节点配置文件:7 F) }. ~) v& ?3 g2 t7 u
在本地编辑好一份配置文件 protocol.json 。* I9 O2 |! O7 C) R( a
首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。- p) _% T3 m0 J4 Y
Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。6 t; ?  a! `, N. m
然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。3 V! X& n+ f7 B& k. H/ ]# L% a
最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。& Q) t& p! j5 S7 w0 F& z
{
9 l8 }) r/ i4 e1 A"ProtocolConfiguration": {9 s6 A& G4 y# b7 X
"Magic": 123456,
6 q0 x. Y) |1 |3 k( q! o% o"AddressVersion": 23,) p  S2 v) v2 V& b3 {
"SecondsPerBlock": 15,
5 x" g8 _9 v- G2 m2 B' r; n"StandbyValidators": [5 C' g( `3 U9 c1 @3 T$ B8 \
"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",* P. F+ L1 B- }8 p
"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",# L; `. h% w1 x  G$ {* ^
"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",
5 X3 t- n! m( n( P' y"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
$ \4 i* I+ `! t5 m/ {],# [8 o5 a6 r2 b; ]" v8 C
"SeedList": [5 R! u4 |& R! d3 ]; F
"13.75.112.62:10333",
: d& y) n& {! U( z5 K$ w"137.116.173.200:10333",
0 ^2 S% O, R# z8 N6 }1 E"168.63.206.73:10333",6 I8 F8 w3 {, z) Z1 o
"137.116.171.134:10333"
' F" j: P5 ?& _- b, c+ {],
* q( @( R0 Z- k4 z, j4 N+ U8 J6 |$ Q"SystemFee": {
" B$ B5 d0 w2 O"EnrollmentTransaction": 10,; f; v/ Z& l- ?: F/ j) N
"IssueTransaction": 5,
' M5 e2 p! d$ ?* j" o) o"PublishTransaction": 5,  l- G8 `- S" s& K
"RegisterTransaction": 100
4 c- q- t! @* V: u! i1 n/ }' {}8 l* W0 v- I) a$ U
}}
* Q( m& _4 N9 s: N' W7 X: f0 r10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。; w" w, q) Y+ H8 Y* Y# \& `
这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去
6 B/ S" N' j* b/ t为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:
+ N8 p9 o# u$ K# E( s, g使用 vi 编辑每个节点的 config.json 文件:9 I$ _/ y" m1 {/ c
  vi config.json
1 f# B5 V6 [! P0 j3 Y: ~% V7 }  
' U. \2 B- N, y0 B" p+ d: A  j"UnlockWallet": {! p( l- T/ z! k+ T
"Path": "1.json",$ S6 J% p- @5 u2 `- E# c6 z, D7 y2 K8 Z
"Password": "11111111",
; ^0 e! |$ ]" L' S6 A"StartConsensus": true,' o/ `: I8 O* n9 x' B" S; X
"IsActive": true; m* j8 u2 Y9 u+ X: M0 B' W
}
. c" P7 y9 q1 Z/ w! Z) r其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。0 H9 ?7 _: A. T; t3 C
最后开启节点开始共识:
1 x2 q1 i  y6 i: x& w5 B+ Z# f使用命令开启节点:dotnet neo-cli.dll
5 \- ?5 M1 Z2 X节点会自动开始共识:! j5 R' H0 X9 ~. q! X6 N
show state 查看共识状态如下,说明私链搭建成功. @4 r% l; h) ?% b

' _6 @# l" J9 h1 M4 X& N  A提取NEO4 Y- g: X+ Y- Z: I
安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。
. m2 ]% @, l- B打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。& v2 E3 ]& j, a& |- H8 M
在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。  ~. l  W- f( y4 s# s/ ?$ d
打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。
% w# l7 L- W$ J, ?- D然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。+ V3 `& c) {/ O' A- ?1 [
大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。
- A' u9 ^! h1 _1 ^. Y5 j. W提取 GAS( v0 [& [1 E8 F- p
在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13