Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
82 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
( ]1 p  n0 H, |, R* v6 ~1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。6 N4 X; Q7 q8 L5 x5 F* T
2、安装 dotnet core,使用命令:
$ u5 p* U/ S& m1 o7 S& nsudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
* Y! m# @5 Y( i7 k  `4 H) x; ?sudo yum update
" g1 E) I' T0 osudo yum install dotnet-sdk-2.10 p. T" p3 r4 n3 p7 @
3、其他必要的依赖:
: C* [# |/ d$ A+ h安装 sqlite:
4 u% a' G8 @/ O5 v$ Q( m% Y4 H: Gsudo yum install sqlite-devel
& x3 `+ i7 H9 q) U/ _安装 leveldb:7 l# z5 O# ]) M7 i, `0 f% u
sudo yum install leveldb-devel+ f& [4 i/ J4 n
安装 libunwind:
0 a) k7 p* U3 |& ysudo yum install libunwind-devel
' `3 L3 T$ j2 e: v7 M' h4、下载 neo-cli:3 Y' M& O- F  n8 o1 r2 L
sudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip3 P& ?0 E) H6 Z4 |# V
解压:
1 v+ G; U7 M$ i: T  L sudo unzip neo-cli-linux-x64.zip0 K, K; I6 S5 N
5、下载插件:
" x/ `6 c$ ^6 U  c+ M进入Plugins目录:
+ t: Q) Q5 N+ R7 U  U- Ycd neo-cli/Plugins
% W1 s' C2 _" R0 |下载 ApplicationLogs:1 O) P/ V, Y+ i" ?. \% A. `1 F
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip
. u7 j4 g- \5 n  w8 _7 s- V7 J6 `下载 SimplePolicy.zip:$ C- v7 V2 j4 b6 v: c
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip' T. A) j8 U' h+ `% h
下载 StatesDumper.zip:
6 F4 ?, ~# O" M: g0 nsudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip: i0 N( |7 M* C* d
6、解压插件到 Plugins 目录下:
: M0 B" [3 L% ~sudo unzip ApplicationLogs.zip -d ..
7 A0 @7 D3 v' @( I0 Esudo unzip SimplePolicy.zip -d ..
$ Y: f( F$ v, t/ w8 Ysudo unzip StatesDumper.zip -d ..  I9 ]1 B: }% ~
解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
% G- U2 ?: R. a. Orm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip
" M7 }& f1 W/ T" e7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:
' _" N1 ?) u) E! B! J* Bcreate wallet 1.json& {0 G1 m% j+ E  _; _
password: ***    6 {# |' U+ l( T& Y
password: ***   
8 W" w/ p3 ~* G7 O9 G# l7 D4 [5 ^address: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    $ a8 n+ ~# p8 ]0 O( j8 F
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87. y# S& V8 C( i7 B7 t
create wallet 2.json   
9 ?9 O2 J, [: h: L! Opassword: ***    ) X: Z; I( V! o# K# @- Y" {
password: ***    - Y2 [9 [* _! |/ Y
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    9 s7 m7 H7 ]% n7 N) O. p' y" ~
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367
# T; l  Q5 D# e0 ecreate wallet 3.json    ! o- H1 I/ W, Z. G9 m
password: ***   
- y6 l6 y- s2 C4 O! W, }/ G8 Y  |password: ***   
9 ^% y4 G, I( Y4 z  }address: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA    ; `& C$ b3 V1 k, j! ?
pubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591
  \7 f" Y" S/ b5 V4 qcreate wallet 4.json   
% u2 d4 I( t5 l- N/ J8 S8 Bpassword: ***   
& x% F9 n3 E9 s0 |password: ***   
/ P. _: b0 b$ K* P. e' w  G3 taddress: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd   
( H% W/ p& F  \2 D: Zpubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91" N, K1 W/ A3 N2 |2 u* w! Z9 t/ e
创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。
  c) y, m7 E% _- C创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json
* F7 |) ^+ u% }' A) A/ Y& v+ K; ^8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
4 F+ K1 p- v* h( _+ ?1 s8 D, U! c( m9、修改节点配置文件:
6 N8 ]" e. M  L: F在本地编辑好一份配置文件 protocol.json 。: \" _8 l) p5 a! l# O
首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。6 N- p5 ?: I/ I  |$ b
Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。4 U% a9 \1 f6 ~% ^2 B
然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。- u1 e/ i6 a0 J$ E
最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。) g. o4 i) v; A0 s, @! ~3 ^
{
  p; y( l; Q9 j* v& e& M"ProtocolConfiguration": {' B1 g' V. o: b1 b4 \
"Magic": 123456,0 L0 ^. m! E. C0 T) a0 L
"AddressVersion": 23,
7 q1 ?6 Z$ r- G: ~& [& F"SecondsPerBlock": 15,
3 r- `6 a; @- k& F"StandbyValidators": [
% `# N  l% c- ^1 x/ A' D  l1 U"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",9 \. t( r" p. l' k3 W' w1 \
"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",
+ b% }. Z! p1 u# k"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",0 J4 C1 _4 L! y7 E4 g2 N& x
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f": Q' A6 G% K# w2 l
],8 ~' S$ _+ A1 Y$ F7 q* L" M
"SeedList": [+ ?; x' }6 q3 q& R5 H
"13.75.112.62:10333",1 f9 X  f1 n* _( D
"137.116.173.200:10333",
% A0 w+ C- ?6 U"168.63.206.73:10333",
! g4 |& f2 g* x* r" J2 b"137.116.171.134:10333"+ C2 y9 n+ p. A6 i) E' j
],
# M6 h; a! S5 b3 V5 E4 y( ~"SystemFee": {3 x3 S6 D- z$ ~& W
"EnrollmentTransaction": 10,9 D" v+ B& M4 m. x# g
"IssueTransaction": 5,
3 S" M: ^3 s: `* y( M4 u"PublishTransaction": 5,* g" E; r+ U6 k, J2 A! t% {
"RegisterTransaction": 100
" A, q# Y2 f, s  y( `- ^  l}
1 O$ d- U$ W4 c}}* Q4 ^4 j, W9 l! G4 f, l
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。& e- m) [$ _. x% ^0 ]. ~
这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去
- }: t; h* ?' d为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:& y+ \/ }. n! ~
使用 vi 编辑每个节点的 config.json 文件:0 s) _8 f) {2 p6 r' A9 \$ }
  vi config.json
7 H4 o0 a6 V, w* e8 S' y  % v/ |" q3 v% f, A1 k
"UnlockWallet": {: c, H( i' r# J' i8 G
"Path": "1.json",6 U4 n3 l3 F. ^$ v8 P
"Password": "11111111",
9 v% X1 m- p$ T& G5 y( N4 \"StartConsensus": true,! o$ l4 z. g* i$ K
"IsActive": true5 ^2 r9 s  \! |0 c& f, D7 o7 t/ ?9 e
}
, V& a# \8 h/ k- n$ o) e其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。
* P3 P/ [7 E9 z. E最后开启节点开始共识:
) H# q9 M2 ]* o使用命令开启节点:dotnet neo-cli.dll
) j4 e$ ~. S+ L* e节点会自动开始共识:
9 Q+ `9 o, D4 G4 R& rshow state 查看共识状态如下,说明私链搭建成功
# z( @$ l) j# P& z9 L) b
2 W+ {' S' s' a$ I2 |+ Q5 p提取NEO
$ S; X& x) T+ i  q6 ^( z4 T9 W2 o安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。
* V, q  E& j* D/ |# V4 j9 K7 k  K打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。, E; q+ M9 w, \! z* y; @- @( u
在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。
# c) I9 J2 [- E! r. M' b/ f# W7 f7 p打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。
/ F: T# I9 K; p然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。
+ }* V  k* D. q! h  b4 b) l: q( R7 C大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。
* A5 V) L2 S( A; c: v提取 GAS
7 z% Q0 @6 i; J" w) G0 Q! v在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13