Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

蓝天天使2017
184 0 0
是否,参加了各种Neo活动,对Neo颇感兴趣,希望从源头了解这个世界上为数不多的支持智能合约的公链?
/ j0 ^) x4 l4 A: C5 |( X9 B是否,总是想参照Neo文档建立一个自己的私链,但是总是没有那么多时间去昨晚,抑或没走几步总是会遇到各种拦路虎?( N- @3 N( m( v. i+ s
是否,想研究Neo智能合约,但是苦于主网(mainnet)gas太贵,测试网(testnet)申请又太麻烦(而且一般都不那么慷慨)?3 r' q' w% B) B5 |( S, H( Y: b& ?
是否,希望给大家炫个富,“嘿,看,我有1亿Neo!”?
# ~; e6 P$ o7 m4 k' {1 P; _恭喜你,阅读这篇文章就能解决以上问题。请跟随笔者一步一步进行操作,每一步都是笔者的成功的操作记录,请放心食用。本教程已经预设了多项参数,在一般情况下,按照本教程操作就能立即坐拥1亿Neo并供你尽情挥霍。8 D0 y& H1 O$ E7 i6 H  z- z
本文面向私链体验者,5步构建私链,7步Neo过亿。
5 R; y9 {5 N( J. w- @$ ?! t如果大侠需要详加参详或者只是想体验更简单的快速搭建Cli节点,请详阅https://github.com/NewEconoLab/neo-cli-docker( ~" J5 G. s) c- @: X8 t
以下操作以Linux指令为主:! S8 T! D7 ?  f- j- N$ x* `
第1步,建立Docker环境
( O; I6 H  \6 J' b( A4 g# g. o建议参考Docker官网https://docs.docker.com/engine/installation/构建Docker环境,具体操作不再赘述。% |' S6 L. v# _9 j4 r8 ^2 m* U
Docker支持所有系统,包括Linux、Windows、Mac,Linux为原生支持。
" O1 O. p1 L8 H9 F2 M' V笔者以CentOS 7.4 x64为实验环境,但是其他系统亦可,最终Docker层都是用CentOS的。
: P/ G, m' E) M9 X; g' }服务器或虚拟机建议不要低于2u4G。
- S( `3 S1 k& E, e3 m" S第2步,引用笔者编制好的dockerfile构建Neo Cli Docker镜像,后面将以次为依托派生容器。
! a6 |7 B( l, T打开CentOS终端或使用SSH远程,输入并运行如下命令:
7 {  t+ R3 A& tdocker build -t neo-cli:v0.3 https://github.com/NewEconoLab/neo-cli-docker.git#:dockerfile/privatenet
" G, ?3 T5 a/ _) q$ L这条命令会从NEL的github自动应用私链镜像构建脚本,主要进行如下操作:+ r; y. k9 g8 ]0 H2 l
构建CentOS Docker镜像
) H+ l3 v9 q5 g- ~( o7 P安装dotnet sdk环境; n$ Z, O2 z! }  t8 L9 v
安装Neo必须的leveldb-devel库: j6 S) G4 B3 w; Y4 |
安装git" ]/ \" \1 X' B' f0 `
从Neo官方github克隆neo-cli项目最新代码  Q3 Z$ [4 e# l3 y4 W/ B
使用dotnet sdk编译neo-cli, g. B  r0 _, W6 L
从NEL官方github克隆neo-cli-docker项目
% t4 f% \' z8 S/ x" ?$ y6 A, k) U将neo-cli-docker项目中预先配置好的私链版config.json和protocol.json文件替换到neo-cli根目录; B# u& h/ I0 a; G* }0 ?* p9 v
第3步,安装Docker官方容器编排工具docker-compose,为后面一键派生4个记账人节点容器做准备。% `3 c! O0 W7 e, F
输入并运行:" _( A# B% h2 t0 M0 V& r- e6 x: S# g
sudo pip install -U docker-compose  ]3 }$ S) `5 F
pipuninstall urllib3
+ f; Q7 n6 }, w% v; g+ mpipuninstall chardet
7 S, s4 V0 G! v* d6 lpip install requests9 Z, I# H! I% e7 w1 P/ `
docker-compose –version& \6 H" Q; |6 D7 j$ v
第4步,引用笔者预先设置好的容器编排模板一键生成Neo链最小规模的4个记账人节点容器(实际最少3个仍能继续共识出块)
4 a" H, [2 W- J: C输入并运行:5 V9 r! Z0 J: }% N4 L
cd /home
& f' A5 n6 G$ M6 j4 Ssudo yum -y install  git
1 @' h1 b; T/ T' q+ J) |git clone https://github.com/NewEconoLab/neo-cli-docker.git) S; K. s5 \! ~3 F/ K% O4 E- V
cp neo-cli-docker/dockerfile/privatenet/docker-compose.ymldocker-compose.yml
, U' y/ m* W# }; k  r, @docker-compose up -d
  G5 b# g; b3 f7 O) B. b" edocker-compose ps
+ P" g& @* e+ q% d3 V( O  \; G
2 v# h6 H" p3 L4 R9 L- I. B看到这个样子就表示4个记账人节点的容器已经成功启动(此时节点还未启动)
' W" v7 i6 Q0 ^+ T* J6 |第5步,分别进入容器,启动节点,打开记账人钱包,启动共识+ ]3 [9 [9 o% W) q; Y  v
输入并运行:3 ]% E+ o" E& V- E* M
docker attach cli0进入第一个容器,其后一次为cli1、cli2、cli3! a7 p) X3 R, ]8 T5 n5 S2 ?+ ?
这里开始是容器内部环境:. ~: r5 b7 `7 g& d, w+ t
cd /home/cli && dotnet neo-cli.dll /rpc启动Cli节点
9 Z" S! p$ o  C5 h! yopen wallet ./docs/neo_private_net_0.json打开记账人钱包,其后依次为neo_private_net_1.json、neo_private_net_2.json、neo_private_net_3.json
9 o% l8 @) `* x' l) Y2 s& R钱包密码123456
" y9 d8 \$ k( z0 @0 A$ v5 ustart consensus启动共识% f9 ]( T, r- s( y, A! K
最后切记使用特别的组合键【Ctrl】+ (【P】->【Q】),即按住【Ctrl】再依次按【P】、【Q】,退出并不停止当前容器。1 \3 x1 w' W: ^  D" x8 M+ s
其他3个节点容器类似依次操作,不在赘述
* k+ D: t) e8 {6 y最后一个节点启动后,稍等片刻,可以看到私链已近开始运行:
/ G8 h7 I  h8 W) _. u: J7 ]6 z; m7 J; @7 A
可以看出,主记账人角色是交替承担的
; Y9 g, }  x3 q8 X/ B至此,私链已经搭建完成,后面2步是私链的应用。
% ^8 c9 T* _5 P1 Y# W. u  s**
0 W, Z1 }) I; b+ j7 `) C, X5 b& G第6步,通过Cli jsonRPC api查看私链运行状态**' e5 I! [" p9 n5 u8 x
安装postman等api测试程序
" c3 q  e1 f/ Y0 t使用get方式请求:1 L3 _3 `& l2 g$ F
http://116.62.160.38:10332/?jsonrpc=2.0&method=getblockcount¶ms=[]&id=1* f8 @" j7 D% U" S4 c& z
其中IP部分要替换成你的电脑或虚拟机的实际ip。
+ t: O7 w+ p, r' N1 }8 [# S
0 P0 t' N1 N- J( t; l# h* N& l然后就能看到当前私链总的区块数,要查看其它信息,可参考NeoCli api文档9 Y( O+ L6 t6 y" g
第7步,从记账人多重签名合约中取出初始块中的1亿Neo转到一个非记账人钱包中1 v: O0 Y. w; \5 a8 J0 h3 p
构建能够连接当前私链的config.json和protocol.json文件
6 O. R+ I1 m- K( o9 Wconfig.json参考:' |- k/ h/ u8 X
{! d6 T$ T! ~& `& ]! `5 f
  "ApplicationConfiguration": {
$ H% |8 ~. X6 e5 w    "Paths": {
; n) o" t$ Z6 U1 n& U      "Chain":"ChainPrivate",
+ p& v8 t4 b' u, ]. N1 k      "Notifications":"NotificationsPrivate"  U+ \; _+ j( p8 x4 D0 B3 b. t
    },- b% E, H: F2 A
    "P2P": {
. b8 u: d4 `& r4 C3 E+ b0 N      "Port": 10333,( G5 h7 I- R, t$ D- O$ T
      "WsPort": 103346 o& N5 |" X9 g6 |1 F) A
    },( r1 k$ j+ h7 Z& f2 r( p
    "RPC": {( j+ _+ d3 P; L$ r
      "Port": 10332,
: p$ t, l. B  v- A      "SslCert": "",2 f% a; t8 f; r8 Y. G# b0 y
      "SslCertPassword": "") V& ^: B2 ]: `) K4 J
    }
2 O" B4 L- w$ v5 P  }; k& W) I- s) s  L; D; b
}
# n' U& b% U0 {  Q% V$ L# `& zprotocol.json参考:5 x# s& B( d1 x7 ~0 j
{
# j; S; P9 }( Q6 q- S  "ProtocolConfiguration": {9 j: Y+ j# m5 U: s8 E! G3 y
    "Magic": 9726190,
- |. g1 B5 N9 v! ?9 q- e    "AddressVersion": 23,- p: a+ p, T5 F8 I
    "StandbyValidators": [
; V* V1 R" w9 w7 n2 u. N2 h2 h     "0249b419692a17fb519c3b42ffbe82ae34855a45e54783a9bc940135b1c2753ece",0 @+ A' ~1 Z) _6 H+ M; _/ L! X
     "03298a54cdfb2b5ffae0638c60633de24e3956b76a44867475e81db5ce87b2a16b",4 r0 k. N/ I  _
      "02b795b3322f0a171c7e7658371131c0caa77a9279818b85b9d0728a5a63452ff8",4 F; V5 ~: x! X; E& R! b
     "0366440bd2a1fe4e0d1dcb9bf35995c5c6e858af846abef145064ab2b5e8ebfce8"  Z( f! a9 `" ^( m
    ],
" g4 I1 K+ Z+ @6 r' ~( ^    "SeedList": [$ B: ^0 r6 u& Z% m0 B
      "seed0.nel.group:10333",! Q- r# j6 q. ~. l6 @
      "seed0.nel.group:20333",
, n4 Q3 A* B' Q" O      "seed0.nel.group:30333",: [( O  Q9 e+ H: Z0 O- w# @; x
      "seed0.nel.group:40333",
6 T8 r5 _/ H! P% S+ b    ],5 D/ T$ w2 D8 D: h3 f
    "SystemFee": {
; B* M2 b# N6 M, M* T/ E( W! [      "EnrollmentTransaction": 1000,
2 U3 S6 p. J* S3 u, S8 _      "IssueTransaction": 500,: P  V: ?2 i  T2 d; L
      "PublishTransaction": 500,
% ]4 l( r( T- Y3 f% A. W      "RegisterTransaction": 100009 \8 ?% a% e+ Z' Q. N2 A9 L: o
    }# T  r9 m# ]5 \
  }
  N% H' {& A8 u" `$ D/ @: b5 C}
& O' f9 S- p/ a( t( t; ?9 B* Nseed0.nel.group需要替换成你的电脑或虚拟机的实际ip
! s+ l: o8 C; r# G8 u0 ~( X下载笔者预制好的记账人钱包和非记账人钱包
4 K% K- X. e' Y' b, s4 J下载 https://github.com/NewEconoLab/neo-cli-dockerZIP; V  w- ]# S8 P5 y' U
在/dockerfile/privatenet/docs可以找到相关文件, \9 ?- w! N. N, D. h; m+ ^
下载Neo官方GUI钱包,建议是2.6.0.0以上将其中config.json和protocol.json替换成以上内容,然后运行。打开neo_private_net_0.json  0号记账人钱包,密码1234568 L& f; R" j' ]! M6 Z' _
/ V: O" M" o: F1 A% ^# S
可以看到一个合约地址中有1亿Neo(是不是有点小兴奋啊),这个合约地址是由4个记账人公钥构造的多重签名地址合约,需要至少3个记账人钱包签名才能转出。: }# d3 s9 R: q! a8 k0 E9 m" ^2 |; K
最终转出
& A6 S6 F/ _1 G8 T! N% y% k0 ~! d新建一个新的非记账人钱包,比如neo_private_net_test_0.json
5 |0 q) Q, l0 }: c) |% a记住它的地址,比如AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6! b: F" ^1 }: l+ c
打开0号记账人钱包,并【交易】-【转账】到上面地址6 Z9 R. w0 n) `# L
) q2 ^/ k) o( x; Z! v" {/ X% d; J# G
确定后会提示签名不足) X: x! H1 D7 u
; h4 J1 E$ }0 Y" N. A. [
没事,我们先把整个内容复制出来,然后打开1号记账人钱包,【交易】-【签名】对这笔转账交易进行第二人签名。9 a. q8 l8 m; i* i* E2 f/ X

' W, q& c1 f4 ]* k' ^1 b) h) G复制输出,然后打开2号记账人钱包,【交易】-【签名】对这笔转账交易进行第三人签名。
; i: ?0 S0 S# g  I: v5 I5 o$ Y- |4 h  U. _
此时,左下角出现【广播】按钮,代表交易签名已经完备。
# j8 k1 P$ c3 e2 l. _4 ~3 ?点击【广播】将交易发送到私链上进行共识) V' n3 ^: {) X
等到15秒左右,1亿Neo就到你建立的那个AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6地址中了。. z" b6 \7 K3 S; h

* J* }1 \: A: w1 H6 A; \  QGAS是通过生成区块,按照Neo持有量,不断产生的。0 t) w9 U2 ^5 ~7 ]
通过对自己地址转账,然后【高级】-【提取NeoGas】就能将GAS提取到自己地址。9 G. k+ Z/ y6 `
好了,至此你有用了一条新的Neo链、1亿Neo、无数Gas,开始你的表演吧。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

蓝天天使2017 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    10