Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
137 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
2 j4 J& W! K0 ~3 S4 {1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。
. i& g3 U9 F, q/ ?2、安装 dotnet core,使用命令:
- H/ v8 [  M" }* Csudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm0 {3 q' e% \& _/ N# V/ \0 w
sudo yum update- \& j- G5 H" q* T+ o- I! M
sudo yum install dotnet-sdk-2.15 }$ s$ |+ h5 b. {/ ^' H. p
3、其他必要的依赖:* f5 T) ]2 L! A4 N; ^
安装 sqlite:8 H' m4 q! O9 \5 N6 _0 P
sudo yum install sqlite-devel" n9 ^& m1 K: f+ _' [4 `( G6 v
安装 leveldb:9 O! I5 ]$ Q- e6 V8 l
sudo yum install leveldb-devel
( q( i% y- \" ]3 p安装 libunwind:/ Q( p* n' Z/ Z' P1 b) m
sudo yum install libunwind-devel
! F: L( g. Y  z3 I2 @+ I) D1 E4、下载 neo-cli:$ a! }+ m3 m, }1 |( u3 `# j
sudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip
: j, z8 t- r/ D! O0 x9 H解压:* m. j$ J+ f/ [) ]( F. G
sudo unzip neo-cli-linux-x64.zip$ I0 a/ \! L2 {* w, q; {/ P! O: I
5、下载插件:1 u+ S- L: q  I8 A. m6 ^. I+ p1 x
进入Plugins目录:
1 x: L1 i' u; B" r( ?8 n2 ~: Icd neo-cli/Plugins% k9 G) K3 Z1 K5 \0 g, W8 r
下载 ApplicationLogs:
9 x% E! \% I/ r4 P$ S# e. u2 jsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip
6 G8 P) y3 |6 J9 A+ }6 ]下载 SimplePolicy.zip:
" C8 F5 w; x( L) Y4 R9 I/ Lsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip
% Y& F1 {, @* `1 n" e  Y- Z% z下载 StatesDumper.zip:
) L# C# U5 v. c) Isudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
4 }7 D* n: B8 F9 A% g9 W6、解压插件到 Plugins 目录下:
7 E! B/ T$ A; W! [3 o+ usudo unzip ApplicationLogs.zip -d ..1 i$ Y- }  ~8 x- m7 E) Z9 j
sudo unzip SimplePolicy.zip -d ..
' R  s( M( [' `  Gsudo unzip StatesDumper.zip -d ..* v$ |3 p$ ^( _7 i6 l5 q$ W
解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
: M- \  c5 F# Z6 I$ n9 m- irm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip
* }3 _. ^" C' v9 n7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:
6 W0 ~+ d  a; u/ Ccreate wallet 1.json
4 D  ^: H# w6 Q3 I  q5 t' {& jpassword: ***   
7 e4 R" o. w& opassword: ***   
: E( @; _6 g, {9 H, Jaddress: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    * ^# x& M; T) _+ y% _
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87
) p8 d+ Z1 _* Zcreate wallet 2.json    , i+ Q- g4 Z7 b1 M: _- d
password: ***   
& @& P" M. _: p0 {' v0 @5 ^/ y1 Bpassword: ***    & C0 n0 c2 }$ p6 l  w
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    3 r- B, }8 Q6 Z2 r) l
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367
% p9 [4 ]5 V  |  h8 Fcreate wallet 3.json    0 k7 n( r3 l2 ?9 k5 e
password: ***   
5 i5 ^6 \7 V$ b# b1 L. ^6 c/ Wpassword: ***    4 |( z, l- |) `: W6 c
address: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA   
5 D- y5 P8 L4 F4 p' r; c8 ^" Opubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591) C% g5 Y' j, @1 h2 ^  k. i. v) p
create wallet 4.json    + a* o0 d+ P! v
password: ***    $ E- |" O9 x. m6 D8 q
password: ***    , H) S' I$ r# ]0 \
address: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    / \" K4 g  l7 ]7 L# A4 H  Y
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91
* ~$ T- W' u) Z  s" B: M2 D创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。' z2 k$ k: U3 `7 W
创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json
* m* L: P, x) U: g  D$ U- R8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
+ s; C& i7 |$ T& g: t2 X0 g9、修改节点配置文件:
$ A' ^! I8 H! X1 J$ ]在本地编辑好一份配置文件 protocol.json 。+ `0 Q- F  i" W5 Y, ]
首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。
  f6 d0 _! y. o& R, jMagic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。9 P0 B2 I6 l$ w- B
然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。! k$ }- q9 k; n3 e- O, J( s+ @
最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。( d) _  _1 R" A
{
% l  f0 a, e& O! I( g/ A9 ~( H! P& R"ProtocolConfiguration": {# I# i; y7 z  g, ], G% v, e( c+ M
"Magic": 123456,
  @4 y" t% Q6 g. B! ["AddressVersion": 23," g4 n, q! Z. U6 v& r) t
"SecondsPerBlock": 15,* Z( u( X& m: x/ @5 r' z. [% Q- z
"StandbyValidators": [
0 W! R7 C) i; \"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",
4 O0 a! z- A* X7 y"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",8 c& a( R8 L1 F, }2 ^
"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",
9 R7 v6 j! @' F"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
0 p3 Q8 c2 E+ v7 C. l7 e6 _],% j/ S8 B$ a& E% _7 a6 i# H
"SeedList": [
* x+ U/ G! ?5 a5 h  k  f2 ~7 k"13.75.112.62:10333",
. }# `* p+ i) d+ c# [6 o"137.116.173.200:10333",0 \/ l6 W: {+ N6 [* ]) P; T
"168.63.206.73:10333",
( C1 O5 j5 m( L"137.116.171.134:10333"5 W+ U1 c) k, N5 b3 V
],
) m% f3 |) f, {# b( C"SystemFee": {. \& `' k8 |- u$ P$ w
"EnrollmentTransaction": 10,
. b3 y  c( C/ S; ?# H"IssueTransaction": 5,
- Z& s' s  g5 V3 M"PublishTransaction": 5,# i% |/ `# `3 e, F
"RegisterTransaction": 100" p* L9 X9 `% P  F
}% m* n3 K' s: p
}}
/ C3 r- F9 F( y+ z9 M10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。) \2 Q; m/ O  |
这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去' k; T+ ~: ^6 N( _: m" Y% m5 r3 K
为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:
8 @1 J- `, x% z3 ^5 g% v- `使用 vi 编辑每个节点的 config.json 文件:
" t/ d4 s. W2 c7 F( V! b* Z( L3 f  vi config.json( T4 f) h  M, g- Z
  
7 t9 c3 D0 n; D' e/ _# h"UnlockWallet": {
! Z8 h1 `1 g! S) S"Path": "1.json",
6 v* Y  U2 h  C- X! I"Password": "11111111",
  ?9 R7 R4 h( w. _5 X2 \2 x& u! D' U"StartConsensus": true,$ {4 J/ E/ w. F& l$ ~9 z' g6 W+ I  d
"IsActive": true
0 z2 L* A" @* m! A9 P% f}
) d+ i( c8 l2 n" K. D5 J其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。/ Q, T2 z/ y3 s+ o+ j3 ~# L
最后开启节点开始共识:- J: \' a* B! d6 n$ m
使用命令开启节点:dotnet neo-cli.dll
3 d+ G8 ]- ?0 l" X9 w* r节点会自动开始共识:
6 W5 H& z$ _5 c7 R$ ashow state 查看共识状态如下,说明私链搭建成功
3 ~% J0 ]/ M: s/ u% n& u% a6 l* ^+ V5 J1 H8 m) p. D" [7 Y
提取NEO
7 x# }, v+ r4 f: H8 @' l8 V& B安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。5 o/ C1 i2 D8 f6 Y+ o* e0 ?; n: J
打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。
- }/ D' e2 o7 ]; `4 M$ c  \2 D在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。
5 x$ W2 e' v$ J  {* R3 [打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。! v# K; Z2 G$ e! V0 C, g6 {
然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。
( b( I/ v: D5 p大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。5 A5 K7 n! B: h' W' A3 [6 D4 [
提取 GAS
8 d9 X! V/ J) b% A" t* ?在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13