Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
86 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。
1 |' X8 b6 Q# S: T4 E8 W' N0 H1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。
8 x  N! j8 I' e& N2、安装 dotnet core,使用命令:
1 q9 q* k( p6 `  K" Y* Xsudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm. M2 f. b0 `* z2 K9 e
sudo yum update. p7 ~) D8 k, U. j# Q
sudo yum install dotnet-sdk-2.1
: }( ^& L, N) Z* Q+ b3、其他必要的依赖:
% P9 t3 F1 N9 }# ~$ X& x安装 sqlite:# y6 E( B; P9 Z4 P
sudo yum install sqlite-devel
4 `! H) u2 O  M- W, W3 y9 M安装 leveldb:
2 N1 o2 Z3 ?' h  G- e! z# Wsudo yum install leveldb-devel# `4 M: T+ x1 X5 p$ ^
安装 libunwind:
! F, o! ]& D* K+ u& J5 f, zsudo yum install libunwind-devel( |1 x" t$ Q* F# {9 {+ B" v/ T
4、下载 neo-cli:
, R' v: H) `, u( osudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip
3 D& l8 l/ P+ }# H解压:. O1 h! R. D: W
sudo unzip neo-cli-linux-x64.zip) T! m  n0 O/ s) ?4 s7 Y$ U
5、下载插件:  @; W# l& z5 W' k- T1 P
进入Plugins目录:
8 O1 N: U+ |6 Pcd neo-cli/Plugins
) q: f% Q% S  C, `+ ^6 f. N4 _& d' p下载 ApplicationLogs:$ z  ?1 Y: X6 \1 \/ t9 z* `0 D
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip. V; ~7 k; j0 k
下载 SimplePolicy.zip:7 ~2 b9 M9 J* C
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip4 d; c" x7 e8 X+ v( c
下载 StatesDumper.zip:3 m  w+ [( T" I* m, x0 I
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
& D  O4 m$ |5 w$ R& _6、解压插件到 Plugins 目录下:
$ V% w# J" s' u$ s5 ^sudo unzip ApplicationLogs.zip -d ..; O( s" @' j: D" `" A
sudo unzip SimplePolicy.zip -d ..
  _' A1 U* j/ {3 ~/ S) B8 s9 asudo unzip StatesDumper.zip -d ..
+ m9 t' r4 K) p1 `2 \( p解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
, t7 }7 B0 v6 U" d9 trm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip# h1 n- v+ F7 ~9 |: }; a/ }
7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:
0 o7 T" ]6 j2 w/ [3 mcreate wallet 1.json& s( W; h" G. g
password: ***   
+ z: W# s3 U# h& j; {3 F2 bpassword: ***   
( a% y6 X4 V+ y- q7 }# o2 n* f( maddress: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq    0 {7 ~0 M+ z+ D7 l5 J# E4 w
pubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87
' ~6 ?% X  }6 Z/ ^5 bcreate wallet 2.json    + M  t6 R& N+ g8 d& a6 i
password: ***   
4 o0 E; K! h, m+ y6 [password: ***    % Z: [) ]. v/ ^( @+ n5 S! l% E+ K- E
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN   
. L/ I" k- Z& npubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367, h7 C) o) ?# R/ x0 e
create wallet 3.json    # O  {9 Z, Y& U. C1 s' i2 f
password: ***   
) r, f% m& A3 Jpassword: ***   
8 `$ v2 A* {, s) D; J! vaddress: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA   
2 m( h, k0 K# |# apubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591- F  T( J$ x; d
create wallet 4.json    . U0 ~) {6 _0 G, u) Y0 G
password: ***      k" @" k- ]. o, s4 N! f
password: ***   
+ V) s& Z. y" ]$ P) jaddress: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    ' f+ z0 z5 l. z" U% `! W
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91
) P% d( Y# s" o6 i- g/ _5 M创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。2 D4 o4 O6 o# _; C
创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json
9 S# p" Q: y3 q8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。
! f/ _4 s! f9 N9、修改节点配置文件:! n8 g: G' [9 ^1 ]
在本地编辑好一份配置文件 protocol.json 。3 o9 X: z! J) h. m/ d# `* R% B
首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。( G; |# V" J( D9 i" O6 v3 I$ ?* c
Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。
# A# D' c) G+ ^% W8 e- f4 p然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。( J& q$ V  j9 W8 e" T0 R0 q- m# }
最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。4 K$ I4 c, S. Y0 S( q
{
! W$ _4 [9 q; \. H( d7 Z8 ~"ProtocolConfiguration": {
' P. U' ~' K! E  r3 c" R0 U$ o  d, a"Magic": 123456,
  _0 u/ |$ a' A) i: h; A7 a"AddressVersion": 23,/ J  E" @# O$ K/ I# y7 v$ g
"SecondsPerBlock": 15,$ ~3 Q1 g0 q3 \5 z. l0 O
"StandbyValidators": [0 U% v( p+ c! t+ K: w8 [6 n
"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",
+ H  ^$ X% T- _% _' Q"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",
  [3 t. o2 v8 E+ T( @6 Q"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",/ v1 H2 z2 q1 ]
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"# J7 }  F* Q  p& F$ Q
],% G& ~/ G! H4 T) D9 W2 e1 Y! Z
"SeedList": [
8 l6 o6 f" G2 t& y$ J3 f"13.75.112.62:10333",
) v3 M2 H1 Y' o/ @: O! J7 L"137.116.173.200:10333",3 ]0 v% ]0 f3 W* |
"168.63.206.73:10333",
- _8 H9 j& N1 N( R"137.116.171.134:10333"' P# U- Z5 \; {# {! @/ B$ g
],5 V( v- `0 ~7 h8 X0 ~
"SystemFee": {
# @, R! V* k( ~9 B$ O9 y"EnrollmentTransaction": 10,7 i8 C9 o3 n$ E2 `' k
"IssueTransaction": 5,
$ q9 w% C6 v( m9 c1 P2 G0 ^7 r"PublishTransaction": 5,
- R1 P' k5 _% `/ F1 Z3 N/ k  l6 l; ?"RegisterTransaction": 100
; P2 D( `7 U) l5 y4 _}
% K& g0 y! }6 W}}. F6 ?" v1 v7 p6 {. j5 n
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。
3 \: Z  x5 ?( E' W这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去
. x6 i: P' }& B4 m* R0 Y- @为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:
& f2 {! l2 O: z使用 vi 编辑每个节点的 config.json 文件:8 e1 H- K. W8 ]: F  l
  vi config.json# B* _0 c6 G8 k. {/ X/ Z
  & `4 Q( }# k; w* B! {6 E
"UnlockWallet": {
7 n( w$ w6 V6 E6 ]2 ]1 o"Path": "1.json",2 _3 ^. [! g  d1 i: o8 t
"Password": "11111111",
  ^7 f' Z/ f, C) y& B6 X"StartConsensus": true,
* S! L4 V" A- _) X; I"IsActive": true
- l( T$ M) o9 P+ @& _}
. y& C3 u0 d( _* [其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。
$ O. ~/ U; y( n8 i4 J最后开启节点开始共识:- N; m! ]4 \' i8 a
使用命令开启节点:dotnet neo-cli.dll% A  }+ B4 ^8 X8 v* S, r
节点会自动开始共识:3 j3 A  q' c7 ~4 a. `% l
show state 查看共识状态如下,说明私链搭建成功; |- s0 y1 L* s% M3 u
, \$ |8 y5 G1 d# T
提取NEO& H* i" K. n* H: w# c& J+ P7 E. T
安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。
4 Q9 c% t3 k& m打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。) y. S5 F+ M# ^. {8 Y
在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。% W* C* q! H' d9 e8 x
打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。
4 N+ \/ i6 V" ~然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。6 A) v2 b2 s: w# \, h1 z
大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。
# `0 o3 s0 |. u8 ]$ R# }提取 GAS
* |& \9 ]0 Q2 a- ~* w. u9 o6 `/ _在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13