Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
145 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
1 \6 ?/ v# F1 {; [1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。$ y) F9 z" h# i+ g+ R2 ]
2、安装 dotnet core,使用命令:1 o6 R+ l' ]; |% k
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm, z9 A: b5 O/ q! K$ |8 Y- C8 z
sudo yum update# j8 E/ J+ \) t  v) p; c
sudo yum install dotnet-sdk-2.1
6 I! Q, t% i, E9 g. E3、其他必要的依赖:3 N8 q7 {# V8 ~- T) Q' p
安装 sqlite:
8 y& }/ z; P" k4 F7 n0 fsudo yum install sqlite-devel
5 ]$ y7 ?* h; t% O$ W安装 leveldb:
! K2 C* S3 T: L8 b$ P3 msudo yum install leveldb-devel
* ?* q- j$ d( U% l1 \安装 libunwind:( {6 _4 \2 M. O6 Y: A/ S$ h8 V
sudo yum install libunwind-devel
# W  U$ l/ k8 Q% S) S& X+ n4、下载 neo-cli:
5 Z) Q7 o9 h* f1 psudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip( j+ N0 @- D3 U" p& f. K9 ~- s) \8 e# n! y
解压:+ G0 g7 X7 c" F$ f- n! @
sudo unzip neo-cli-linux-x64.zip
; \# F  C6 S4 j% v$ ?0 ~5、下载插件:4 Q. F' v6 S+ v  k) c6 B9 l: J
进入Plugins目录:0 O$ i, ?6 o( L3 }
cd neo-cli/Plugins( V9 b- Z& f& n: B! p) @7 e% A) }
下载 ApplicationLogs:, B$ f' W4 Z% X$ a& P6 A
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip1 {/ F4 g& A/ S3 V/ D  `
下载 SimplePolicy.zip:, v  u+ w% h- K; x
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip
- Y3 n" O0 Q% r3 v下载 StatesDumper.zip:0 Z2 p7 O0 b8 t2 `6 I) ~% n2 |4 a( c
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
8 `5 A' ^% S* g' {6、解压插件到 Plugins 目录下:
. m8 }0 t5 @9 \sudo unzip ApplicationLogs.zip -d ..
! Q7 C# C/ ^. B7 X( U! Usudo unzip SimplePolicy.zip -d ..
! \1 ?; t& I/ T; I0 rsudo unzip StatesDumper.zip -d ..5 r6 r; h' T) z9 X3 I3 Y. D- i0 W
解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
/ L2 u# X. x) O2 o! orm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip
( }  J9 o7 M+ G7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:
9 }; ^% H6 a- Bcreate wallet 1.json
+ I3 j& P7 c+ C0 i! i& ~- S* R' M4 _password: ***   
; I' O, U2 N, T& ~) hpassword: ***    # }( F5 E$ I6 B6 Y; L  S- r4 H) @
address: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    5 u% `  N( O" l: [$ n5 p
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87
! z4 ]6 q; `; k2 b4 screate wallet 2.json    . Y& }0 A2 _, Q8 ?! ~" j
password: ***   
# d1 D3 V' S8 M  U1 e+ Qpassword: ***    : u0 k. h* ]+ S/ c/ u' X
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    % z8 ]& c  J7 l, P
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367
4 E: \; u5 f7 V0 V6 D% P( X8 fcreate wallet 3.json   
! _  I- ]4 e4 P2 I  @% mpassword: ***    9 B+ }" ~# Z! f0 S/ w; a
password: ***    & U2 p. P( ~+ E' Z
address: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA      q. H+ G, g" \% e8 @
pubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591
5 X% f: P& b6 A8 _3 M) Zcreate wallet 4.json    % p* R9 q' ^- [5 L; X% y
password: ***    / H) x' `8 k# f) m+ ^5 i7 p
password: ***    1 y0 j' ]: I6 Y$ D, c7 s+ p0 c
address: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    ) O& \: O, \; F1 y9 Q. a
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91# m. Q" ]; p) w9 M
创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
) L& d! ]4 Q% b4 f9 K创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json
0 \' |; n  \) b" i4 E' B8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
" S8 B, m- o7 s( n9、修改节点配置文件:
2 K1 i) M4 m2 X/ k, a( f& m, ~在本地编辑好一份配置文件 protocol.json 。2 B4 K! p9 V9 |, h& r' G) x& g
首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。1 y5 E7 x- ~0 b7 u
Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。7 W. X8 G1 ]  D- R/ o0 O
然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。& G; j5 p( B: f' J+ Z
最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。
2 j, T5 W, L  ]! ], t{( G, Z; ?3 d$ e2 f2 A( u
"ProtocolConfiguration": {
5 V: t0 y1 k5 B0 A"Magic": 123456," h( [& U- @2 D/ A
"AddressVersion": 23,( m5 I9 H6 \# }( D5 g0 t  M
"SecondsPerBlock": 15,
# q" r  j( o" Z9 X3 ?5 Q! {"StandbyValidators": [
" N9 V8 M2 }; C) G"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",
: Y8 a$ {$ I3 E% S5 u"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",- {8 b0 c8 H# A. ?# N0 C
"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",
& e4 O, l; K# R"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
: Y* w; Y  w& m* ?% B6 O+ W],+ Y: D' m  e  D, M9 `! N) J% |  }6 v
"SeedList": [
9 x: C! b$ c# h& u% W# H# f' S"13.75.112.62:10333",
: u9 |& z+ v! E"137.116.173.200:10333",
: V1 @: D; i1 h$ K! K5 u4 f"168.63.206.73:10333",$ D- O) R1 s0 Z% |2 W$ i
"137.116.171.134:10333") g; v7 L" H9 f" a% p. i) J2 `2 {3 n
],3 n9 Y) K9 Z# Z
"SystemFee": {
; r! s5 N. r0 m. \0 x"EnrollmentTransaction": 10,- X5 \" T, D( `* O+ o; ~) L6 B
"IssueTransaction": 5,( `$ t; M0 t4 T9 R
"PublishTransaction": 5,
( k) l: ]& p3 u' ~  S5 ^4 D3 l"RegisterTransaction": 100
( U# X0 ^& c7 C4 ~}% C% v: r; V/ j3 u" p; q
}}
3 e* \. y. _: X0 s10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。' P& Z( K  l; J* m
这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去
7 i# @, `8 A0 R% x6 Y为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:
+ u( E+ k8 f. J! H1 g使用 vi 编辑每个节点的 config.json 文件:9 O! `0 F$ |3 ]2 [8 f  w( W
  vi config.json& v: \3 v! Z) r
  ) x, G7 a3 i  M  j( d
"UnlockWallet": {) d' a0 M7 ^& X7 X* D3 @
"Path": "1.json",
! ~, u9 A. i# ~$ r" j"Password": "11111111",) J3 }0 F6 T/ @% E
"StartConsensus": true,5 q9 Z8 V0 V; T9 J+ C' K
"IsActive": true
5 |+ M6 ^9 ^! ?7 {* I5 S2 {}
. `+ L; M( y* l* \  k% K, C其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。
/ a3 Q" V; p6 s& }, F, X" D6 P9 ^+ y最后开启节点开始共识:" g" p! t0 v2 H' \$ D. U
使用命令开启节点:dotnet neo-cli.dll
4 j( d& q% Z3 }/ ^- K" S节点会自动开始共识:
- x* t* x* S2 W; |; mshow state 查看共识状态如下,说明私链搭建成功
- O! v* X: f: q% N  c+ m- A) H8 z9 T
提取NEO
# x* y5 _4 S, U3 ]安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。- s$ R1 a2 Q2 ~$ G& i
打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。
9 b' V5 q' P7 H- s2 }( [/ f( b2 z在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。- s  Z& X( T7 y
打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。
8 Z. O4 ?9 }6 L/ z然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。
; I, q! m# J4 l" Q大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。
" Z/ Y2 P3 W9 O# \7 _2 t提取 GAS. `$ Y5 p" s' `3 I8 R" f5 l+ V+ e$ p
在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13