Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Linux 环境搭建 NEO-CLI 2.9 私链

华胥
84 0 0
NEO 2.9 将 ApplicationLogs 等改为插件机制了,较以前的版本有较大改动,搭建私链时也有部分变化,这里就来详细介绍一下 2.9 的私链搭建过程。本次使用 CentOS 系统。; u( P) b  ?5 t- U4 m- ^7 e
1、准备四台 Linux 环境、我这里用的是腾讯云的四台服务器、配置:CentOS7.4 系统 2 核 4G 内存 40G 硬盘 1M 带宽。
$ V* h$ K% X$ y) Y( j2、安装 dotnet core,使用命令:+ v5 n) f  y$ y8 }& V, q3 M! L
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
4 k7 o( s  h( y' t0 W$ V7 O3 t8 ~sudo yum update6 w+ W& ~3 V9 E" R1 n1 C# y4 c
sudo yum install dotnet-sdk-2.1! I6 S) x7 {4 t# j
3、其他必要的依赖:
+ c5 m; F7 P' j+ W安装 sqlite:6 Y' b, k) v' Q
sudo yum install sqlite-devel' ^9 V7 N; M) O. ?; W
安装 leveldb:
* y2 P7 [. m/ I! q  w/ l3 E4 Csudo yum install leveldb-devel
# J8 e( G7 r, p) P安装 libunwind:8 a& R- U  n- a/ B/ [3 ~$ h* T
sudo yum install libunwind-devel- Q  ?. @! S" M4 P
4、下载 neo-cli:
/ b) H# `4 L% k' |sudo wget https://github.com/neo-project/neo-cli/releases/download/v2.9.0/neo-cli-linux-x64.zip7 e- A/ h; w; d' Z2 \+ T7 ^) k
解压:, [1 {" E- a. ]8 _* j' g
sudo unzip neo-cli-linux-x64.zip
; A% R  Y' C0 ?( m$ g5、下载插件:7 a6 L$ [, A" W/ k7 k
进入Plugins目录:
' C" M/ b" W& k9 G9 Scd neo-cli/Plugins
: \) f  s! O& ?$ ?2 Y8 m7 k下载 ApplicationLogs:1 L9 ^  S( n( K: M7 r! s# B
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/ApplicationLogs.zip
* U( m0 o7 e, {% S下载 SimplePolicy.zip:
3 d6 m- ]# Y: G% U: f/ Msudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/SimplePolicy.zip7 q9 s! Y% v9 p9 b
下载 StatesDumper.zip:/ r, O# P+ V1 J# L
sudo wget https://github.com/neo-project/neo-plugins/releases/download/v2.9.0/StatesDumper.zip
6 E8 f9 @( u, u5 w# A' Z6、解压插件到 Plugins 目录下:0 u! b& Y2 f# m2 l
sudo unzip ApplicationLogs.zip -d ..
& n) H: j9 N* [& r. L5 Gsudo unzip SimplePolicy.zip -d ..
' m1 N( s- d% k  ?& D# f$ xsudo unzip StatesDumper.zip -d ..
3 i" ?; g' K3 A解压完成后删除 Plugins 下的压缩文件,不删也可以、反正留着没用了。
9 Y+ J* V  g) `/ K; S/ Srm -f ApplicationLogs.zip SimplePolicy.zip StatesDumper.zip
$ }& U9 D- v" f7 }% v0 Q7 ^* H$ h7、使用 neo-cli 创建四个钱包文件 使用 PC 版钱包或其他 neo-cli 命令行钱包创建均可:
9 d, p, d# a8 a+ Lcreate wallet 1.json
5 ~2 |( {6 Q) D' F7 A  l# W2 w& }password: ***    6 b& V# n4 r2 C4 K+ t
password: ***   
5 z. v' o. r1 ]address: AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDq   
- c3 g( Q  `' |1 tpubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d991163a87( Q$ R* S2 X0 d6 j/ p1 ?
create wallet 2.json    & p$ }7 E7 m4 g" o
password: ***    ) \7 ?$ c+ D' G# v- l6 i
password: ***    / |  a, I" J9 Z0 [
address: AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdN    0 H2 V6 r, w" ~
pubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d1273674 |  H* j2 v7 o7 E6 ^# H
create wallet 3.json    & l% m! j+ t% N( w4 X! u
password: ***    & A: r+ N- V: |, q$ R2 f
password: ***    & L* j1 f6 |9 Z- _" |" E7 P. @$ ?+ z" K
address: AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaA   
' j' D9 G  |$ s9 x+ H; S; E' ]1 ppubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591
4 X3 l, X* j" Z9 P$ Acreate wallet 4.json    $ {' c# T/ c0 |0 C* K6 g- @
password: ***   
) w) g. J& s. k* z6 C. Y; n/ ~/ vpassword: ***   
- x' v& \( i2 D! K/ Raddress: APRyAAXy1y6upwjs4ijv6efts8PcnG5uWd    / l7 V3 Q8 ?4 ^: w
pubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91
5 o6 U' Y8 L' I% x$ ^创建好钱包后将 4 个钱包的公钥保存下来(保存到一个 txt 文件中即可)以备后用。直接复制上面的公钥或者用 CLI 命令 中的 list key 命令查看公钥再复制均可。) c9 w3 t0 Y* [
创建好的钱包 json 文件在 neo-cli 目录下 分别为 1.json,2.json,3.json,4.json
9 F% x% N6 O* z. M8、将 4 个钱包文件分别复制到 4 个节点的 neo-cli 目录下,这里要复制生成的 1.json 钱包源文件进去,如果只是新建 1.json 再复制内容的话会打开钱包失败。' I5 b9 g2 Y9 r2 E6 I0 K
9、修改节点配置文件:
& F2 W) J# i& V  @1 h% r在本地编辑好一份配置文件 protocol.json 。
  r8 ]4 T3 R" m4 m1 ]; p- H首先修改 Magic 值,Magic 用于识别消息的来源网络,指定不同的 Magic 确保 NEO 区块链中的不同网络信息在传输过程中不会发送到其它网络。7 Z% Y2 Z0 p& Y
Magic 的类型为 uint,所以注意所填写的数值要在 [0 - 4294967295] 区间内。
: k6 P9 m. b4 s  |7 ]然后修改 StandbyValidators,将第三步记下来的 4 个公钥填写在这里。
6 b; V, L5 J; I, C7 b7 E* x" v: c最后修改 SeedList,将第一步记下来的 IP 地址填写在这里,端口号保持不变,例如我修改成下面的配置。' C. k2 f  j$ j* W
{
, e& Y6 U( y2 p, d2 N1 u"ProtocolConfiguration": {
- s1 o/ p% ?4 w( |, Y"Magic": 123456,
; o: a+ F* a  w2 D, y"AddressVersion": 23,& k" Y( `. D$ `0 X: M: X
"SecondsPerBlock": 15,) t- Y2 e7 B/ {. u/ M
"StandbyValidators": [
6 W. }( I0 c# T5 T( z"03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3",
, E6 m+ z& m5 W1 M! H! b3 P7 S"0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4",
+ B8 U) i0 c2 ]: a5 U; i3 m"026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b",; L* b: Z+ K* y; l8 k3 X
"03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"% m& N  ?/ T4 l4 n! C5 [% E  j
],
: _. V6 _: P0 q2 C- r"SeedList": [
/ J2 a! e$ D0 H' `4 Z# y) W0 o"13.75.112.62:10333",, Q3 c+ R2 G" x; V% J+ Z
"137.116.173.200:10333",
: q( B8 e6 c# I- j% L; |9 o"168.63.206.73:10333",( g' E( H" v3 _! {7 w& T
"137.116.171.134:10333"- x& X% g; G/ q7 L) |8 ?% ~1 v
],
2 n0 V& E' F' r4 n"SystemFee": {
  @; e$ y6 F$ N! d"EnrollmentTransaction": 10,
: u$ M% _  F6 p0 Z" L! _5 v"IssueTransaction": 5,- m/ D/ T5 R9 P3 j
"PublishTransaction": 5,
( K9 w) ?' W# ?/ q0 t1 l) F  L& R2 U"RegisterTransaction": 100
. n7 p% C. T- n$ B3 e5 Z}
2 y5 G6 N" a$ Q# H7 T! \}}. {6 z& t+ o! q0 D  @5 u
10、将修改过的 protocol.json 复制到 4 个节点的客户端目录下,替换之前的 protocol.json 的文件。
7 B) Z, h8 d) k2 s% I这一步可以先删除每个节点的 protocol.json 文件,再创建、复制内容进去
/ D5 w1 A/ P  z- G# Z$ [( G) r为了更方便地打开钱包,开启共识,建议修改每个节点下的 config.json 文件,将 UnlockWallet 配置改为如下:0 i0 K+ N: Q0 J
使用 vi 编辑每个节点的 config.json 文件:, y, H" C; y* h; d3 f9 W) B
  vi config.json
8 M9 O+ k# x. F/ E, o0 O1 h% V  # G; |: `% Y$ Y7 A/ u
"UnlockWallet": {9 v  F0 v1 c$ P9 u. Z/ U
"Path": "1.json",4 T* A- Q) Z- ~& z4 X, q
"Password": "11111111",4 l+ }+ P0 z  }! i4 c7 k) I
"StartConsensus": true,
: c* Y* g5 d8 [2 b; ]6 [; n"IsActive": true- B! h  M3 T! h, g
}2 f! _* R5 h6 N9 A
其中 Path 是钱包名称,Password 是钱包密码,修改成你自己的钱包名称和密码就可以,其余两个不变。然后在 4 台虚拟机上依次输入以下命令启动节点,这时程序会自动打开钱包并开启共识。
  W7 P+ S6 i1 K; X7 q* B0 s2 g  S3 R最后开启节点开始共识:
- w/ G4 p  i5 h7 J+ m使用命令开启节点:dotnet neo-cli.dll
+ _6 m% `' Q- D9 }节点会自动开始共识:6 _0 j- h1 R" w0 ?
show state 查看共识状态如下,说明私链搭建成功
; L9 c5 h+ j% d" n! L  A) n5 V9 Z6 E
提取NEO" V- E  H6 u1 e% s4 q
安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 与 4 个节点的配置文件相同,使其连接到私有链中。  B! K: K, D( E& Y2 K- L; Z8 p
打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。' a! R$ n" H# r$ U& `/ g* e
在 PC 版客户端中打开钱包 1.json,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),你就会看到在合约地址中有 1 亿的 NEO 了,分别打开 4 个钱包文件,进行同样的签名操作。. o. u* [( L  E, D1 g2 j
打开钱包 1.json,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。
( G  p! Y1 Q' ?0 S) C9 D然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击 交易 签名粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,这时你会发现窗口中出现了一个 广播 按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击 广播 后转账交易开始广播,约 15 秒后转账成功。
& X2 [  @8 E) p) S: c* m+ ^! f大功告成,拥有了自己的链,还有 1 亿 NEO,可以愉快地玩耍了。, O7 O: Y, r. A  u
提取 GAS* p5 A! }, k5 t* ?  W
在 NEO-GUI 中打开四个节点钱包中的任意一个,点击 高级 提取 NeoGas 提取,接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

华胥 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13