Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

5步构建私链,7步Neo过亿

蓝天天使2017
114 0 0
是否,参加了各种Neo活动,对Neo颇感兴趣,希望从源头了解这个世界上为数不多的支持智能合约的公链?5 r! U, U7 s. U- F7 g. w. V2 P  o
是否,总是想参照Neo文档建立一个自己的私链,但是总是没有那么多时间去昨晚,抑或没走几步总是会遇到各种拦路虎?2 G" w( k* O4 L7 u9 y" V
是否,想研究Neo智能合约,但是苦于主网(mainnet)gas太贵,测试网(testnet)申请又太麻烦(而且一般都不那么慷慨)?
, i$ n9 m1 {8 M5 m$ m5 w9 t1 i是否,希望给大家炫个富,“嘿,看,我有1亿Neo!”?
7 y; B3 r) T  e恭喜你,阅读这篇文章就能解决以上问题。请跟随笔者一步一步进行操作,每一步都是笔者的成功的操作记录,请放心食用。本教程已经预设了多项参数,在一般情况下,按照本教程操作就能立即坐拥1亿Neo并供你尽情挥霍。. d4 d9 |# W$ }8 l/ ^$ h
本文面向私链体验者,5步构建私链,7步Neo过亿。
& ~: w7 F8 R/ m如果大侠需要详加参详或者只是想体验更简单的快速搭建Cli节点,请详阅https://github.com/NewEconoLab/neo-cli-docker
! `$ ~. U* ?2 a2 m) r! n  I3 x* _以下操作以Linux指令为主:
: g2 ~& B& Y. g1 L第1步,建立Docker环境0 f: m0 o$ ]5 o1 q* Z5 q0 G9 B7 Y
建议参考Docker官网https://docs.docker.com/engine/installation/构建Docker环境,具体操作不再赘述。9 a) R) {; J! N* s& O7 x1 z& e6 Y
Docker支持所有系统,包括Linux、Windows、Mac,Linux为原生支持。
% m* m$ _2 f% ]# t( J笔者以CentOS 7.4 x64为实验环境,但是其他系统亦可,最终Docker层都是用CentOS的。
( u( o& U$ I3 K( w3 m服务器或虚拟机建议不要低于2u4G。8 f  m5 I- }& m+ Y+ \2 T5 y
第2步,引用笔者编制好的dockerfile构建Neo Cli Docker镜像,后面将以次为依托派生容器。
8 l* q. b7 X. n7 Y6 [  b打开CentOS终端或使用SSH远程,输入并运行如下命令:
! {- H, r: w$ s6 N1 Adocker build -t neo-cli:v0.3 https://github.com/NewEconoLab/neo-cli-docker.git#:dockerfile/privatenet
4 z+ t7 `' f/ r& u7 @8 N) V1 B这条命令会从NEL的github自动应用私链镜像构建脚本,主要进行如下操作:
3 J) K4 Y/ g* \! c8 l& y  y构建CentOS Docker镜像6 s9 d4 i5 `! y7 W$ L  _, ?
安装dotnet sdk环境8 x5 p' P/ ?7 u  s: A( v
安装Neo必须的leveldb-devel库
8 _! ?9 e4 G: z2 ~安装git
0 w) @! ^4 i9 ^4 ^6 U从Neo官方github克隆neo-cli项目最新代码4 O, V9 f9 [) o; D( f3 W
使用dotnet sdk编译neo-cli
+ a& W# q2 Q3 s从NEL官方github克隆neo-cli-docker项目) S, n4 f* _" A4 u- ~& a3 K
将neo-cli-docker项目中预先配置好的私链版config.json和protocol.json文件替换到neo-cli根目录
, v1 C  o) L2 ~/ d( |. |! i4 q$ b第3步,安装Docker官方容器编排工具docker-compose,为后面一键派生4个记账人节点容器做准备。$ D7 G' @' [9 E) v" g' i7 J/ ~
输入并运行:+ }6 e7 j/ X: l5 }. ^8 K
sudo pip install -U docker-compose
& F# p7 ^1 ?6 u, \# d5 i4 W3 o) q( hpipuninstall urllib3
& h3 r9 G9 n: [4 ~) C% dpipuninstall chardet# D/ C6 ?2 f; ?1 p
pip install requests
. h2 @  Y3 y/ D" `0 A: _; idocker-compose –version
  g9 S/ @8 q( K; y7 B" j' G5 S; B第4步,引用笔者预先设置好的容器编排模板一键生成Neo链最小规模的4个记账人节点容器(实际最少3个仍能继续共识出块)
7 G, \4 c' `1 B输入并运行:
- r. J" _/ c0 t6 ?5 u+ X, fcd /home
) n2 j+ ?0 R: ~+ R* fsudo yum -y install  git
) q$ J' y+ f- D8 f% h$ f( mgit clone https://github.com/NewEconoLab/neo-cli-docker.git( q8 O1 q' c# W/ n  o+ R/ a
cp neo-cli-docker/dockerfile/privatenet/docker-compose.ymldocker-compose.yml
) V/ _9 |6 ?+ ~9 a; y2 e. Kdocker-compose up -d
0 {1 {, M1 @) h5 T6 Odocker-compose ps
% G2 J! ?7 H( Z9 I3 |3 }) Y& o/ [% t
. ~3 O, B4 m: p, u( Q% w7 K; }看到这个样子就表示4个记账人节点的容器已经成功启动(此时节点还未启动)
/ v8 M) `6 X& ?: X; V1 Q+ M6 d第5步,分别进入容器,启动节点,打开记账人钱包,启动共识& F8 z' u' M4 ?, s
输入并运行:
: C1 z& [6 Z' U- B  F7 Ldocker attach cli0进入第一个容器,其后一次为cli1、cli2、cli3
& Q9 Y( A% B# f这里开始是容器内部环境:3 D4 ?+ J3 I, h' }7 d( I, k* J
cd /home/cli && dotnet neo-cli.dll /rpc启动Cli节点- I: j7 k& C: ^4 p
open wallet ./docs/neo_private_net_0.json打开记账人钱包,其后依次为neo_private_net_1.json、neo_private_net_2.json、neo_private_net_3.json* D: j" ]: D) o6 {
钱包密码123456
* d: R% G1 x0 Z1 x. `start consensus启动共识4 o* F5 g7 c& x6 A- h+ a
最后切记使用特别的组合键【Ctrl】+ (【P】->【Q】),即按住【Ctrl】再依次按【P】、【Q】,退出并不停止当前容器。3 Z; L( @# v$ f; h) [7 @, Y
其他3个节点容器类似依次操作,不在赘述
3 _1 Q0 d# P5 P3 O最后一个节点启动后,稍等片刻,可以看到私链已近开始运行:
3 v  p7 c4 j$ f$ W! |  E) O
' d* y- v$ t% v/ Y4 {可以看出,主记账人角色是交替承担的& R8 l" A, v/ O/ s2 P& \4 `- _
至此,私链已经搭建完成,后面2步是私链的应用。
2 Q7 v& P% G$ F' s; l* u: A**, K. V+ ^7 i- [2 L6 o
第6步,通过Cli jsonRPC api查看私链运行状态**
5 h0 f, d* ]# t+ h安装postman等api测试程序! @0 l% ^$ W3 `* _& V+ ]
使用get方式请求:
# G- U4 w/ I8 ~6 y3 v/ bhttp://116.62.160.38:10332/?jsonrpc=2.0&method=getblockcount¶ms=[]&id=1& q# ?$ x/ F: L4 u. x) c  w0 m5 j
其中IP部分要替换成你的电脑或虚拟机的实际ip。
9 h# k5 s( B. a$ I5 r- X. P
5 _& g& X- s1 R3 e; o% m0 B然后就能看到当前私链总的区块数,要查看其它信息,可参考NeoCli api文档
$ D$ H" c2 ]0 e& v. K6 p3 K第7步,从记账人多重签名合约中取出初始块中的1亿Neo转到一个非记账人钱包中4 x+ `' V$ \- P9 z# N
构建能够连接当前私链的config.json和protocol.json文件# }9 b: M6 X9 N1 q/ @& }' f9 I
config.json参考:% m# ~% @% F& T* w; L) I! I
{( t0 s2 f2 S) Z, l9 d! D: y
  "ApplicationConfiguration": {
0 w+ S3 F  k+ D% y$ t    "Paths": {! u2 F  f/ I4 h, b: n
      "Chain":"ChainPrivate",
3 r: T. s+ m% d0 S! c( V" E& |      "Notifications":"NotificationsPrivate"
6 M6 U3 G7 k1 U6 v0 P    },+ C2 ]5 H- b# N, ~
    "P2P": {$ a1 p# _' V- g2 L
      "Port": 10333,$ w$ |1 `; H! I1 O' s
      "WsPort": 10334! @; j+ L& @6 O: |; [
    },
2 Z6 v  i9 b( @% J' f. y  V9 H    "RPC": {; [) t! o5 n3 d9 ~$ b9 W) W
      "Port": 10332,
/ Q" K  K( d$ a9 n! g9 J0 z8 K      "SslCert": "",9 ]0 P, i1 Q' E; b$ l
      "SslCertPassword": ""1 s! Z, {8 K: ^  l' H4 u  W# Z
    }, m4 |7 h( m8 `4 V5 x. L
  }
9 u2 @8 q) V* R  u' f( S}0 q% Z  u- l& P. Z2 M8 c% t
protocol.json参考:3 ?$ R; a& o4 _3 e7 x1 h( b
{! Z, z8 C" _! G3 l
  "ProtocolConfiguration": {. E7 V' L* \: p* h
    "Magic": 9726190,4 Q3 {1 X5 F/ r5 G" o8 ]$ n
    "AddressVersion": 23,
* D1 B0 Z5 h1 |- E    "StandbyValidators": [
: v0 ^7 ~, K1 @     "0249b419692a17fb519c3b42ffbe82ae34855a45e54783a9bc940135b1c2753ece",+ c( ^) y+ t; K1 c
     "03298a54cdfb2b5ffae0638c60633de24e3956b76a44867475e81db5ce87b2a16b",
$ R6 J; A% T) X      "02b795b3322f0a171c7e7658371131c0caa77a9279818b85b9d0728a5a63452ff8",
# Z9 D! O- V" @     "0366440bd2a1fe4e0d1dcb9bf35995c5c6e858af846abef145064ab2b5e8ebfce8": ^2 S7 z9 o; g& J1 A" R1 ]- C3 h* ?
    ],: r/ L! a% I$ ]9 }- Z- x& H( P6 H
    "SeedList": [
! D' B" c& i1 o8 D4 |8 Z+ k- p      "seed0.nel.group:10333",' F+ ~% O( K6 q
      "seed0.nel.group:20333",- M3 L) w) w0 p4 K( y; k& ~
      "seed0.nel.group:30333",6 n  r  S& U# w0 ?; J+ a- W
      "seed0.nel.group:40333",
( M8 y" m/ ?" m3 L    ],
9 C  O7 R/ F* L3 i    "SystemFee": {) }: d0 g) m4 B' S) N: G
      "EnrollmentTransaction": 1000,
9 U) F8 I" w% q) V! a      "IssueTransaction": 500,: O1 ~( O4 L. \
      "PublishTransaction": 500,- s; w' j/ z. B. @9 R, D+ n, f
      "RegisterTransaction": 10000
0 q, K; f8 p* _& b# @    }/ ~& }- R' u/ T' M, N3 `6 i+ \
  }
/ W: j# X. ^8 D4 {$ x}0 Q" l3 }0 l  H: N, S+ B
seed0.nel.group需要替换成你的电脑或虚拟机的实际ip* B/ j  V. H9 [9 Q8 U; K: Z& u8 y
下载笔者预制好的记账人钱包和非记账人钱包* @. B; R! A; w: q3 E' b: [" n1 F
下载 https://github.com/NewEconoLab/neo-cli-dockerZIP
. }2 S  |0 J1 e* o; f在/dockerfile/privatenet/docs可以找到相关文件- r8 s$ c1 ?' a3 H
下载Neo官方GUI钱包,建议是2.6.0.0以上将其中config.json和protocol.json替换成以上内容,然后运行。打开neo_private_net_0.json  0号记账人钱包,密码123456
4 x2 ^9 W. N/ F! O% p! Y$ s
) ?6 i" D3 g8 s) q) _0 l  o可以看到一个合约地址中有1亿Neo(是不是有点小兴奋啊),这个合约地址是由4个记账人公钥构造的多重签名地址合约,需要至少3个记账人钱包签名才能转出。. @3 L2 A7 u; d  ]' B+ W
最终转出
0 p+ r5 t/ {: V2 t新建一个新的非记账人钱包,比如neo_private_net_test_0.json: R0 v7 L. `+ h' q& h
记住它的地址,比如AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6
$ ~9 h; z+ A/ R1 [0 G$ a' E打开0号记账人钱包,并【交易】-【转账】到上面地址* h% X6 h) f$ I2 \8 U: p* J7 ^2 o

  I+ W9 g2 V& R- H确定后会提示签名不足
/ h2 k- ]& s1 R$ @: t: Q
( r( V9 q6 M* U" B% O& j没事,我们先把整个内容复制出来,然后打开1号记账人钱包,【交易】-【签名】对这笔转账交易进行第二人签名。
* E1 m9 P- }4 ?; [% a& y
6 n5 |8 E  ^) k# ^2 v% ^% U复制输出,然后打开2号记账人钱包,【交易】-【签名】对这笔转账交易进行第三人签名。# ^: L2 W( Z, U. K+ p* G3 B. p! H
( @: p: D) C! o. g9 P9 F
此时,左下角出现【广播】按钮,代表交易签名已经完备。
( m7 p; Z& d# q) k* C$ g6 z点击【广播】将交易发送到私链上进行共识
/ b5 i( o0 P+ k6 q等到15秒左右,1亿Neo就到你建立的那个AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6地址中了。0 a) F2 g, ^* c! q) H+ N, Z

% r; e1 N8 N1 g3 _/ |GAS是通过生成区块,按照Neo持有量,不断产生的。. J' ^9 i: Y& @4 y0 a: Y! T* I
通过对自己地址转账,然后【高级】-【提取NeoGas】就能将GAS提取到自己地址。& I: Z7 q/ `) d
好了,至此你有用了一条新的Neo链、1亿Neo、无数Gas,开始你的表演吧。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

蓝天天使2017 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    10