Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
85 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
* U' U) P. M% A! X8 @+ m# X1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。
1 a3 ^' x" c' i: x4 z  b2、安装 dotnet core,使用命令:8 R. \8 d4 `, I8 f$ P& o. _
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm) J, x1 r( U) `# U
sudo yum update4 h% C5 `1 z! _" ?$ Z
sudo yum install dotnet-sdk-2.1
. X! f# O& h! `6 i' \  _- H3、其他必要的依赖:; F/ r/ B( i9 A  `( a; q
安装 sqlite:/ r( U7 D5 h! h% k/ Y3 h& `
sudo yum install sqlite-devel
* @/ Z% e- ^' N( |安装 leveldb:
7 Y) Z1 X! J# A5 h0 C7 X! i7 |sudo yum install leveldb-devel
1 S/ L6 _  |1 p8 [& t1 u安装 libunwind:. M; |7 I- Z, Q4 c
sudo yum install libunwind-devel3 L+ N/ [" E+ t' ?/ L
4、下载 neo-cli:* _3 R; U& @- `- e; i
sudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip! O: r1 a& W* ]; \  N2 p
解压:
' T; X5 T/ t, o' O! Q( L) y7 x sudo unzip neo-cli-linux-x64.zip
9 C( y5 q  }- T/ U& Y/ E5、下载插件:# J2 e5 u# P3 v0 O. q
进入Plugins目录:
* S0 }. s( H* |" mcd neo-cli/Plugins$ o0 L5 F* \) h* [
下载 ApplicationLogs:5 d' h* E3 A. o5 Z9 T4 u* }
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip
$ o7 w" k4 m3 x5 A7 e( c下载 SimplePolicy.zip:3 E$ d, a8 a; f: u1 q/ K
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip
# h2 C, ~0 C6 r, |$ ~/ c# |: P下载 StatesDumper.zip:
+ j9 S4 a) P$ T5 ysudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
& h+ I( t4 |$ ^- N! ?2 Y6 V6、解压插件到 Plugins 目录下:
" V( B3 X8 J9 t9 D+ C" Xsudo unzip ApplicationLogs.zip -d ..
3 Z6 B: w' a% F! rsudo unzip SimplePolicy.zip -d ..
% e( ?  `$ D0 [! Dsudo unzip StatesDumper.zip -d ..0 x* \+ e5 @* O; l4 z, C4 C7 s
解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
6 H# z5 d1 N0 p3 Q- I4 ?! ?' S0 Mrm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip
5 o7 N3 f% i, G$ ~, z, f7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:: H; [4 ^9 _% D8 _/ O
create wallet 1.json
0 ]3 E1 n9 ~/ i) y0 d0 f- _* x( xpassword: ***   
' }; z  v) F- u/ Qpassword: ***   
' ^6 D% }- T* E# ]: Laddress: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    5 j' _& V$ ?, F: F  F7 t) Z/ L
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87$ z# ^: w: C' G3 \
create wallet 2.json   
& s5 H7 E8 y; V* l: U  fpassword: ***   
% N4 |$ {0 S1 i& R* V0 Bpassword: ***   
1 v7 L2 [) O. [) @$ j6 eaddress: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN   
" w# m' e! X1 gpubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d1273671 s* [# }) ]' r' G: z6 K
create wallet 3.json   
( c  h! ]- o$ Y5 D- Q9 |8 vpassword: ***   
0 D5 P1 ~6 S4 lpassword: ***   
# v3 W4 v' Y: T) y: B; X* ~6 Caddress: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA   
% m/ n/ W4 m; V0 o- Q# upubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd9082315917 I1 H4 u# P* w
create wallet 4.json    : T+ _; e8 W3 n$ C9 u
password: ***   
9 a' ~9 y+ _. f+ j$ tpassword: ***   
5 Y& t( c/ t0 K% Vaddress: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    - b7 Y: r' H" c( I2 Z5 p  h$ \7 D( B
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91. [" }9 k) \& h5 M  v# a$ D6 n
创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
, i) A# E) G8 K创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json& p. Q" G" @! `! n1 y
8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。7 _$ C- l" W1 Y5 i. A
9、修改节点配置文件:' A4 B- v" S6 y# n
在本地编辑好一份配置文件 protocol.json 。
* R! ^- x% P$ I  m3 ~首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。
& s$ V  I. {) [# S5 w& I% r- H& M$ {) ?Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。
7 e4 V+ f$ d. l3 d8 S然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。3 ~; \5 G( V6 l& l: R1 x8 I. f- A7 K
最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。: L; L. l3 M$ G
{4 C" z! T: z, f8 D
"ProtocolConfiguration": {5 m! ~. c* [8 W& Y
"Magic": 123456," G) r$ ~) G8 P5 o# }% V
"AddressVersion": 23,7 N! i! W0 t: i$ S
"SecondsPerBlock": 15,
0 a) T- g- v# X, ~  R& t% w"StandbyValidators": [
8 a1 W" q! k+ O1 ^, ["03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",
  [2 l3 O' }2 Q1 a3 z% B) t- I"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",* H! W1 u2 L# s) F! P$ i, b
"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",3 j: {5 _, B) ~
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"
/ g! C$ ]# C8 K: V& g+ I],; r8 f: X& t, ]* _
"SeedList": [
7 s) a4 V% l1 Z8 C  U/ c. |"13.75.112.62:10333",* h8 _4 z% m0 @; n. u3 T
"137.116.173.200:10333",3 V. z( R$ d  }5 _
"168.63.206.73:10333",
1 I$ Y! o; T& K: r* t$ b: s"137.116.171.134:10333"! p8 q, L. V. y% @0 ~1 s
],
  I7 o) h* C5 j# [4 t"SystemFee": {7 Y% M- E$ M* q% a1 e
"EnrollmentTransaction": 10,
0 e: w% T" e8 G0 V) U"IssueTransaction": 5,: Y  o1 |  D; s& e+ w
"PublishTransaction": 5,! z+ n- R& u+ ?; k* @
"RegisterTransaction": 100
7 G% l! M4 K: t' c7 b4 V  U! a' I1 g}
3 ]0 i/ m9 x% {! @; t/ M7 G+ a( ^1 g}}- d5 _# p1 B1 Q4 q' k# B
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。9 S- b5 F% b  X8 D
这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去8 }3 C5 {% I& X8 E4 E9 ?/ W
为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:9 o5 @) @  ^" O$ t' e/ k$ {
使用 vi 编辑每个节点的 config.json 文件:3 T3 ~8 W3 x: j6 T' J' R9 T  I, J
  vi config.json
; ?1 W" A/ `5 [( Z9 E  
- u+ S, s. r* F' y"UnlockWallet": {. h. R0 m, v# m0 O
"Path": "1.json",9 R7 ]! r2 W5 |
"Password": "11111111",
8 x: u# u' L  s"StartConsensus": true,
. c( E4 t4 p1 F! A5 f4 i: W3 U"IsActive": true
4 m6 j/ G0 [0 |" C" |( K}
, T( D7 A3 m0 a- a& _& h其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。! K0 Y7 P- R; Y: d
最后开启节点开始共识:4 ]( W5 `5 e2 Y& h& @2 a
使用命令开启节点:dotnet neo-cli.dll
, l$ ~( E8 [: k" P, s节点会自动开始共识:
" e# u! e! f( w7 N2 V  [show state 查看共识状态如下,说明私链搭建成功" p( r/ _3 \6 d$ T4 b" q& T% L2 Q
  B6 R7 Y( L4 ~! w9 r
提取NEO
" q2 x* w* s" g3 Y7 q安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。# {: E: G  t5 G6 A. Y3 V4 f
打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。# m  t( T' ]- M  Y
在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。
" [" N6 V& G# l7 K" v打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。
. h2 S) G- s' F然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。4 {3 s1 {6 s9 `
大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。& f3 n& |" E; B& M" \5 j$ {4 ?- ~' e
提取 GAS
' N) C* n/ f5 [在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13