Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
88 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。0 w2 j( v2 q  k1 D* n
1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。' U* c1 H) I3 A4 u- I/ P3 k
2、安装 dotnet core,使用命令:8 W  }5 [! b6 e$ k% |
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm( W4 q7 k+ U4 S' M- |  J( N  M
sudo yum update
: ]! I+ \  K5 H. A* U& F5 t  Isudo yum install dotnet-sdk-2.1% ~& L/ W; b) R/ ^  h
3、其他必要的依赖:* U! i/ j( J* M; G' F
安装 sqlite:2 O/ N1 n6 p. W, ^, Q( x
sudo yum install sqlite-devel3 }* q9 Z  e! Y
安装 leveldb:0 {3 U2 b3 B# X, b6 ?
sudo yum install leveldb-devel
: y6 q/ ?0 O9 F+ ?5 d3 [安装 libunwind:
$ h7 v8 g- n& u3 G9 Esudo yum install libunwind-devel1 ]% M: A3 J! }% b' G" d- ~
4、下载 neo-cli:: j! ^6 X8 ^& K9 L1 k
sudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip
7 T3 K" G0 O& N解压:
2 h: d3 V& [' v  l% I2 q% D sudo unzip neo-cli-linux-x64.zip
6 ~8 g' |5 j# r( U- _: ~5、下载插件:$ X8 F: ~0 }5 a# M
进入Plugins目录:
, U6 u& ^/ V. c! S7 ]+ r) fcd neo-cli/Plugins  y. T' |% A& M+ {7 D, U
下载 ApplicationLogs:
4 [- Q- k( A% ssudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip  g4 {% {  m2 y6 x9 R8 A: _+ F
下载 SimplePolicy.zip:
; E% G8 p& }) n# J( P' ~sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip
& c1 X/ y/ ^3 n) N: U$ C下载 StatesDumper.zip:
! d( w  g% c/ M* m+ a' [' j7 rsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
) U% L# H8 p2 o& t: s: C6、解压插件到 Plugins 目录下:
( c/ s3 t% o( Z& v- n3 }$ `# V- ~: isudo unzip ApplicationLogs.zip -d ... M+ z- P0 C7 K  `
sudo unzip SimplePolicy.zip -d ..
( `; J6 E; a- p) S6 Msudo unzip StatesDumper.zip -d ..
" {: W/ L. P% B& h6 A& I解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
* T5 }& p+ g9 ~. [rm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip6 q1 i+ f& W" e7 P. @% u
7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:
7 y5 V& j# m; j7 U) G4 n" q- ~create wallet 1.json
+ P8 i) J5 Z" \: g3 }" Fpassword: ***    " b, e3 V' B& P8 \2 B0 v  C
password: ***    3 I# r* J( S) }% d/ r' v
address: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    ; ~. M& p' }, u* D+ h! j" z
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87
7 r. B3 ~  `( N; v% Ecreate wallet 2.json    - J, F( l( U! E- a. z
password: ***    2 z! b5 {# V) P* J' L7 h
password: ***    3 `, y# L3 `# a, n  Z* R7 n' T
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN   
# ^  [( _% b" kpubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367
" b9 ]4 k1 t1 K# `! W8 c3 S: tcreate wallet 3.json   
: e% x5 }: l; O# Bpassword: ***   
0 I4 M, [9 t( f  b3 Rpassword: ***   
' n( @+ D" {/ n1 y1 }, i1 naddress: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA    * z+ T1 f5 i* w; n9 U& s! R
pubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591
4 B! }- K9 k. R/ n( o. I) U  a1 Ucreate wallet 4.json    6 X+ S1 c$ b7 ]5 |$ Q9 Z
password: ***    ) j: I+ i$ T% h$ s, l% e; t
password: ***   
8 X8 X/ A$ C& ?, j9 T+ Jaddress: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd   
, r! u. p5 j; j, u: d, e% ^pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91
7 u$ s0 E) V1 k& E创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
9 G4 n) E; v1 P) u, X4 q创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json
+ I! ?! \2 z2 [- A9 t8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
' N  s3 l$ h4 U9 q2 d9、修改节点配置文件:
2 h: w: M& E4 t# l% |6 ]2 u# g在本地编辑好一份配置文件 protocol.json 。2 J7 T6 k4 h* R( p. G" e
首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。
# p$ |% `: g5 p& {Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。
( m0 r5 ?' s" g. F然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。
, I6 N6 n* X* ~% [, T, s6 J0 ?最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。9 p+ u1 S% Q7 K3 k/ m, a
{
, v, N' ^  \3 Q7 B& U"ProtocolConfiguration": {8 t- j( F. ]9 v1 e+ H' Y3 d
"Magic": 123456,! o+ v. G) y4 W0 t6 C
"AddressVersion": 23,) l7 ^8 F/ C5 n3 `$ i/ T. k8 @
"SecondsPerBlock": 15,
* x/ x  H) C9 h4 I"StandbyValidators": [( i- s" i# p* m, ~; v$ F, k
"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3"," R# A9 I0 r$ c* _/ `2 Q7 F
"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",
/ O) P" J7 z" H2 b: J9 @; O"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",  V( ~% \0 I; \$ F: f; w. V0 r
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
! F6 j" S' V) \$ R8 N8 T( x],
/ i, h5 ^- X4 y& ]6 v( N"SeedList": [9 a8 X, {: d/ Y. n# k  p: X
"13.75.112.62:10333",- j* W' w  k% R; k
"137.116.173.200:10333",+ M5 B- y3 O7 E; e
"168.63.206.73:10333",4 M* o3 R! h7 Z2 \/ C
"137.116.171.134:10333"
: ~5 Y4 p  S# l],
6 R5 Y( {# z( V( [7 t# y! {; d. ~"SystemFee": {, e1 {" u3 h/ V& p
"EnrollmentTransaction": 10,
: [, t% Z/ q$ g$ K"IssueTransaction": 5,
" u" M, w6 E5 G"PublishTransaction": 5,
7 l6 F. i1 v5 H3 U"RegisterTransaction": 1007 c* V! m# ^- ^% H! k/ \9 w( p
}
# M9 @) ?+ I/ g  D}}9 ^7 v+ ]# I, s1 W2 \
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。
# V6 h' [" D; D) J8 a这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去" s& w9 n; c/ _' b8 Q% C% I. V! o
为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:7 S4 n6 A: i" W# e/ ^1 B
使用 vi 编辑每个节点的 config.json 文件:
/ g8 x* z. d1 n: ^/ L9 ?9 P5 l  vi config.json; A; T& X3 L$ ~$ K2 S+ L# [
  
. C, B5 O# [# [+ u7 \3 \"UnlockWallet": {
3 Z4 X; x% G% V: g% q# g"Path": "1.json",8 ]+ _* U( m( G+ a
"Password": "11111111",
: D0 D: g8 N' V* A. @: J! j3 M/ R  v9 l"StartConsensus": true,; Y5 B% R, s% e
"IsActive": true: Y" J3 ~0 p' n# v+ \  R
}
$ [$ l% m/ w5 s4 k) p  @其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。: J; g1 t7 q" X0 y( \* e
最后开启节点开始共识:
/ E% I( P0 E8 T) C# Y使用命令开启节点:dotnet neo-cli.dll
, S4 n5 I. k) q) h- z6 s节点会自动开始共识:
0 J# P& v' P+ a, F* A, T# P6 @2 r1 xshow state 查看共识状态如下,说明私链搭建成功
7 Y9 ~( c3 S5 N% M- A% S! E) v4 `! z6 F; M- e! v3 r5 J9 K
提取NEO. l9 T" C2 L- I' V1 K" w7 z4 U
安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。, v& w! ^9 k7 P" L$ k, D
打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。
$ l0 \( q( B3 S" Q; l1 r: f在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。
  x  I; X& S: Y/ w+ A/ k# [+ `打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。0 ?: D! p- M* e9 P& S0 k- u  d8 y7 L3 B
然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。8 c5 n6 G+ a; G7 y& e7 ^& ]+ M9 L9 C
大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。
, u( c% f0 }8 x5 n  t5 A: n提取 GAS
" z; H1 w  s  e6 q在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13