Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

蓝天天使2017
185 0 0
是否,参加了各种Neo活动,对Neo颇感兴趣,希望从源头了解这个世界上为数不多的支持智能合约的公链?6 U2 `) y8 u1 V# x- S) ^
是否,总是想参照Neo文档建立一个自己的私链,但是总是没有那么多时间去昨晚,抑或没走几步总是会遇到各种拦路虎?: L5 @4 O6 ~% C# c! d  n
是否,想研究Neo智能合约,但是苦于主网(mainnet)gas太贵,测试网(testnet)申请又太麻烦(而且一般都不那么慷慨)?
' _6 ~9 w8 W% |4 m' E) U/ k* U是否,希望给大家炫个富,“嘿,看,我有1亿Neo!”?( L( T) t4 v: t% }5 K! T3 q
恭喜你,阅读这篇文章就能解决以上问题。请跟随笔者一步一步进行操作,每一步都是笔者的成功的操作记录,请放心食用。本教程已经预设了多项参数,在一般情况下,按照本教程操作就能立即坐拥1亿Neo并供你尽情挥霍。
8 e- W; M. Q+ p1 h5 [本文面向私链体验者,5步构建私链,7步Neo过亿。% o! b7 b2 L1 v- k3 \" D, y
如果大侠需要详加参详或者只是想体验更简单的快速搭建Cli节点,请详阅https://github.com/NewEconoLab/neo-cli-docker9 q# I5 J( A7 c( F9 q. D- n* i
以下操作以Linux指令为主:0 R, y! Z* B+ O$ f
第1步,建立Docker环境7 m& W( F; K' Q7 @' _; C
建议参考Docker官网https://docs.docker.com/engine/installation/构建Docker环境,具体操作不再赘述。
2 V& |7 I5 F7 p, xDocker支持所有系统,包括Linux、Windows、Mac,Linux为原生支持。8 q  I) d3 h  X: C; u: O9 ?' W2 a
笔者以CentOS 7.4 x64为实验环境,但是其他系统亦可,最终Docker层都是用CentOS的。
1 v' x7 v7 t# ~# y服务器或虚拟机建议不要低于2u4G。
# y) U% \; ~. ]第2步,引用笔者编制好的dockerfile构建Neo Cli Docker镜像,后面将以次为依托派生容器。, ]. j. l8 [/ c: w
打开CentOS终端或使用SSH远程,输入并运行如下命令:$ r# y' B. w7 A# _' m, e2 g" r" [
docker build -t neo-cli:v0.3 https://github.com/NewEconoLab/neo-cli-docker.git#:dockerfile/privatenet
9 J  B) V2 i+ k: Q, w* Q这条命令会从NEL的github自动应用私链镜像构建脚本,主要进行如下操作:
4 L' x4 r4 t( ]7 d构建CentOS Docker镜像
- i  G6 K4 E; g& g  ~5 _! A5 d安装dotnet sdk环境
% ^5 Z/ j' h0 H: ]+ E! Y安装Neo必须的leveldb-devel库; s! D* A1 Z# |/ k# h: [
安装git  E( K8 s( S1 x" R+ F6 N$ V# x8 n
从Neo官方github克隆neo-cli项目最新代码
  _' ~5 \9 w* ^/ q% M使用dotnet sdk编译neo-cli6 p- t0 M/ K7 ^' |
从NEL官方github克隆neo-cli-docker项目
% p% w& U3 e8 u( M* z: C2 d+ Y将neo-cli-docker项目中预先配置好的私链版config.json和protocol.json文件替换到neo-cli根目录
% v  ~- D& W) ?; X8 F% A第3步,安装Docker官方容器编排工具docker-compose,为后面一键派生4个记账人节点容器做准备。5 ]5 f# F& T% P0 X2 f. n
输入并运行:; N( ]2 X6 v  B8 a2 M
sudo pip install -U docker-compose! W! I4 C) r& h8 c
pipuninstall urllib3
$ e2 V5 B' D9 v( x8 ypipuninstall chardet/ F& Y, R/ |9 k7 {1 k
pip install requests
# Y' P$ W5 W) wdocker-compose –version
  c, K. h9 u. D+ d第4步,引用笔者预先设置好的容器编排模板一键生成Neo链最小规模的4个记账人节点容器(实际最少3个仍能继续共识出块)
) A6 j  i# |: a2 H/ }; g( S输入并运行:$ }; }! N& I; ^  k; w+ t
cd /home
  H' C: V0 x- G0 {sudo yum -y install  git
% g" Z' K$ X1 e! O( ]( Sgit clone https://github.com/NewEconoLab/neo-cli-docker.git
* T0 e" P/ q# b) A+ S4 r2 Pcp neo-cli-docker/dockerfile/privatenet/docker-compose.ymldocker-compose.yml0 \* I# i) d7 E$ Y1 d, q; J
docker-compose up -d/ Q+ D! j% M6 y9 R  o  ~/ K
docker-compose ps: c# h5 l1 J& N1 M$ }2 n& e6 V

% A! W4 l0 G1 d) b1 s5 Q看到这个样子就表示4个记账人节点的容器已经成功启动(此时节点还未启动)
" u8 Z( m/ V9 d  V4 \第5步,分别进入容器,启动节点,打开记账人钱包,启动共识) ]/ b) I& z; c3 s5 |9 T) w
输入并运行:
; u% @. r, A& ?3 Y+ `! |docker attach cli0进入第一个容器,其后一次为cli1、cli2、cli3
3 X7 }2 v3 N6 A. T" T8 Y0 ^这里开始是容器内部环境:! h: Y3 H. S2 {9 B4 h
cd /home/cli && dotnet neo-cli.dll /rpc启动Cli节点3 I7 e6 D6 U2 T( ?
open wallet ./docs/neo_private_net_0.json打开记账人钱包,其后依次为neo_private_net_1.json、neo_private_net_2.json、neo_private_net_3.json
& t% |3 {% Y* k& f0 F2 h0 V钱包密码123456) e$ y. j+ f6 S2 ]
start consensus启动共识
+ Z% z$ d2 i9 F/ R( N8 x8 h# g最后切记使用特别的组合键【Ctrl】+ (【P】->【Q】),即按住【Ctrl】再依次按【P】、【Q】,退出并不停止当前容器。0 Y8 B- e) U& L( f$ ^' n* e
其他3个节点容器类似依次操作,不在赘述
3 T' i* O# l) q$ v+ p最后一个节点启动后,稍等片刻,可以看到私链已近开始运行:; r3 L7 u7 W- ~+ X6 s
" d8 l8 s6 u& Z  m
可以看出,主记账人角色是交替承担的
. b, l+ q7 R4 ?* H$ f至此,私链已经搭建完成,后面2步是私链的应用。
0 C' L; C1 i' u" Y$ z1 Z; n**
7 e. j" Z  P* `# s# h& G第6步,通过Cli jsonRPC api查看私链运行状态**
) h6 _0 m" Y6 l6 ]/ C安装postman等api测试程序' i( B: l. W% w/ Q" I
使用get方式请求:. N1 w- ~4 ^2 o4 y& U
http://116.62.160.38:10332/?jsonrpc=2.0&method=getblockcount¶ms=[]&id=1& W$ R/ I) Q( K$ M
其中IP部分要替换成你的电脑或虚拟机的实际ip。+ s5 p. S4 a+ f3 n) `9 n
$ w' k) o+ o. E, B
然后就能看到当前私链总的区块数,要查看其它信息,可参考NeoCli api文档6 v$ r* k; B( V+ [/ N* P% ^
第7步,从记账人多重签名合约中取出初始块中的1亿Neo转到一个非记账人钱包中5 b, N- k. r- Q) s
构建能够连接当前私链的config.json和protocol.json文件
6 L& r& k+ A1 R6 n3 O( M( Gconfig.json参考:
' p+ c" Z: H- h. h$ i6 h- E! {{
. p! V% ]1 j) B5 n' \$ v& ?' j  "ApplicationConfiguration": {
: C& `& K5 _+ \- E+ {    "Paths": {0 D2 ~  v( G; V5 y) U/ {
      "Chain":"ChainPrivate",
: T% f, F* C  Q, d2 s      "Notifications":"NotificationsPrivate"
( k. r! `- R' p& B# x: a. o    },4 X0 F8 w4 M2 }- y- D5 B5 ~  |$ R
    "P2P": {! A" k  H9 i0 H
      "Port": 10333,
% N  g" x* L# N. b      "WsPort": 10334
% U+ i! l/ E  T4 _# f9 t    }," _; j' v) C) ~. n' D2 Q
    "RPC": {- ]8 \/ ~3 ^( j  z2 X  U
      "Port": 10332,! ?: q' I! E6 s- G" ?- Q
      "SslCert": "",
8 {- H5 g+ k) {( L* l! W; C      "SslCertPassword": ""
& m  g  s: G6 q& X1 ?0 Y    }* R9 J/ A' d/ N* Y  K
  }
3 \% H, G; R( x# U3 i) m- f}
& _' C! |6 G# R6 {6 Mprotocol.json参考:
. H- @+ }$ p: j  t0 G& Z! |! a{+ O* F( U9 [; p1 S9 ^4 A9 R2 q
  "ProtocolConfiguration": {
- j5 B2 x2 Q' j% [2 h; v& Q    "Magic": 9726190," s! @" Q( R2 P3 ?3 a5 d
    "AddressVersion": 23,- H' q/ m! k- M
    "StandbyValidators": [
% d5 n5 _+ T( I, S. q     "0249b419692a17fb519c3b42ffbe82ae34855a45e54783a9bc940135b1c2753ece",- Z8 T' n3 C* @5 C& x. d
     "03298a54cdfb2b5ffae0638c60633de24e3956b76a44867475e81db5ce87b2a16b",
  T% t. L1 F1 F      "02b795b3322f0a171c7e7658371131c0caa77a9279818b85b9d0728a5a63452ff8",7 r" e& f/ a, D. D; ~: t. b
     "0366440bd2a1fe4e0d1dcb9bf35995c5c6e858af846abef145064ab2b5e8ebfce8"
: T* q$ C& ^% o3 s    ],
* F! N) o+ @! P' E- S7 N- `    "SeedList": [6 O0 [, y2 k4 |  _# h# }
      "seed0.nel.group:10333",
& |. i! k: U8 o! O      "seed0.nel.group:20333",% W) k8 K! d0 o
      "seed0.nel.group:30333",
# \/ G6 ]2 ?9 }) I      "seed0.nel.group:40333",) X, v- y* G& F8 C  ?  O& Z6 `
    ],
4 m) C9 p3 H  r; y; {  o  y  \8 F    "SystemFee": {( W6 o6 i: Q' `$ M
      "EnrollmentTransaction": 1000,
7 Q: @( ~: {5 a  i% H$ J) _+ k      "IssueTransaction": 500,+ B1 k0 E# _9 c! s
      "PublishTransaction": 500,  a9 f# I) j7 u9 E3 v, U8 D
      "RegisterTransaction": 10000
6 i& t3 Y* Z5 p! U9 U0 I    }
4 ]% j% T4 j4 V  }0 p" O+ O1 g7 R$ P  E7 q& Q
}
3 O  y) C( G+ x/ eseed0.nel.group需要替换成你的电脑或虚拟机的实际ip3 f) T# ~+ d: o# C  I
下载笔者预制好的记账人钱包和非记账人钱包9 i  U9 h" U6 ~( I, f8 H
下载 https://github.com/NewEconoLab/neo-cli-dockerZIP
. d; i. w7 N. Z) I  P8 W在/dockerfile/privatenet/docs可以找到相关文件1 d: b" r+ `2 ?
下载Neo官方GUI钱包,建议是2.6.0.0以上将其中config.json和protocol.json替换成以上内容,然后运行。打开neo_private_net_0.json  0号记账人钱包,密码123456
) z* v( _& ?( ^( L! x- T" M/ d) j: P& G% M8 \  M6 R- a) k
可以看到一个合约地址中有1亿Neo(是不是有点小兴奋啊),这个合约地址是由4个记账人公钥构造的多重签名地址合约,需要至少3个记账人钱包签名才能转出。, }" h7 i/ P* e% J# ~
最终转出+ c/ X% y6 f3 m5 C4 K
新建一个新的非记账人钱包,比如neo_private_net_test_0.json
; ?8 X' [2 e: S9 b记住它的地址,比如AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6
& X  l+ z* ~. y# j1 ~. C打开0号记账人钱包,并【交易】-【转账】到上面地址
  D5 E6 e+ }; W! F& K; t5 W9 O
0 Q) |7 h& y3 R2 @确定后会提示签名不足1 O/ v4 X9 z9 o5 I3 R

. ?5 @, _" u! K" e6 o4 }. q4 \! v没事,我们先把整个内容复制出来,然后打开1号记账人钱包,【交易】-【签名】对这笔转账交易进行第二人签名。
' T) d8 _; h* d3 t" x, K' r4 b
5 x* D$ e) J& q7 l4 C复制输出,然后打开2号记账人钱包,【交易】-【签名】对这笔转账交易进行第三人签名。0 b7 f4 `3 [# }% M3 K

) P* c' x) P1 }此时,左下角出现【广播】按钮,代表交易签名已经完备。) h0 M  a" X/ d) D
点击【广播】将交易发送到私链上进行共识# I9 j8 u! Q1 C7 ?2 q. I% F
等到15秒左右,1亿Neo就到你建立的那个AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6地址中了。
1 F: _) ~4 p4 o2 J' Y5 W9 U3 f2 F+ X, h* e% Y2 J  `1 M/ g
GAS是通过生成区块,按照Neo持有量,不断产生的。
3 e8 g; R% O  m, I; D通过对自己地址转账,然后【高级】-【提取NeoGas】就能将GAS提取到自己地址。7 }8 {% X9 g6 H
好了,至此你有用了一条新的Neo链、1亿Neo、无数Gas,开始你的表演吧。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

蓝天天使2017 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    10