Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

蓝天天使2017
186 0 0
是否,参加了各种Neo活动,对Neo颇感兴趣,希望从源头了解这个世界上为数不多的支持智能合约的公链?) N' {/ L' u  s. y! B2 c
是否,总是想参照Neo文档建立一个自己的私链,但是总是没有那么多时间去昨晚,抑或没走几步总是会遇到各种拦路虎?/ I& T7 r4 x3 l; n2 L- t. u
是否,想研究Neo智能合约,但是苦于主网(mainnet)gas太贵,测试网(testnet)申请又太麻烦(而且一般都不那么慷慨)?! I% p. M5 I* L, j: @" I
是否,希望给大家炫个富,“嘿,看,我有1亿Neo!”?7 N9 m9 G  _3 o
恭喜你,阅读这篇文章就能解决以上问题。请跟随笔者一步一步进行操作,每一步都是笔者的成功的操作记录,请放心食用。本教程已经预设了多项参数,在一般情况下,按照本教程操作就能立即坐拥1亿Neo并供你尽情挥霍。
# s0 a8 `& U+ I, a) J. R本文面向私链体验者,5步构建私链,7步Neo过亿。. D) z3 n: J, e' K* X
如果大侠需要详加参详或者只是想体验更简单的快速搭建Cli节点,请详阅https://github.com/NewEconoLab/neo-cli-docker" N/ w2 Z1 w7 u3 Q4 R
以下操作以Linux指令为主:) r4 W  _  [5 O' P6 H' c
第1步,建立Docker环境1 g' B" [5 B4 V1 G% Z
建议参考Docker官网https://docs.docker.com/engine/installation/构建Docker环境,具体操作不再赘述。
. F, A2 y* r& F  \3 p& pDocker支持所有系统,包括Linux、Windows、Mac,Linux为原生支持。
) B5 M! @) I/ z; k: _笔者以CentOS 7.4 x64为实验环境,但是其他系统亦可,最终Docker层都是用CentOS的。; \8 z! c1 M6 U& N# N+ J0 r
服务器或虚拟机建议不要低于2u4G。
$ O2 W$ @; F% Y/ H/ M第2步,引用笔者编制好的dockerfile构建Neo Cli Docker镜像,后面将以次为依托派生容器。
- C1 J; |# G; k打开CentOS终端或使用SSH远程,输入并运行如下命令:
0 C% s3 s' s0 G# ?% adocker build -t neo-cli:v0.3 https://github.com/NewEconoLab/neo-cli-docker.git#:dockerfile/privatenet: i1 t  C5 f; [* I2 Y- c
这条命令会从NEL的github自动应用私链镜像构建脚本,主要进行如下操作:
0 ]8 g& C7 m/ D$ f( ~构建CentOS Docker镜像
: z& e2 E5 H* Y0 d安装dotnet sdk环境
- \0 f2 D$ E# t, R( H% _3 ^" g安装Neo必须的leveldb-devel库
( T" s9 t# w5 S! N" }安装git  `- `7 k/ j) _0 q% ~
从Neo官方github克隆neo-cli项目最新代码8 t  T) v* A% w4 Q, h
使用dotnet sdk编译neo-cli. U/ h! N* k. n! i
从NEL官方github克隆neo-cli-docker项目% u+ R% A2 \  g
将neo-cli-docker项目中预先配置好的私链版config.json和protocol.json文件替换到neo-cli根目录6 J: c7 }' G* c: o8 l
第3步,安装Docker官方容器编排工具docker-compose,为后面一键派生4个记账人节点容器做准备。
; ~# i/ Y2 `; f8 g/ h输入并运行:' X8 P6 A. p4 B' V; R4 p5 g7 h% G
sudo pip install -U docker-compose
, @# q4 C: y/ [  Z$ b, R' }5 t4 F/ G) cpipuninstall urllib3
% C- j# p( b% opipuninstall chardet
4 Q0 @# U1 R' npip install requests
) h" S1 t3 D1 G2 edocker-compose –version
: _% ~4 M# @( Q* h% d5 I第4步,引用笔者预先设置好的容器编排模板一键生成Neo链最小规模的4个记账人节点容器(实际最少3个仍能继续共识出块)" n6 B: a3 S9 N- i4 C- R$ ]
输入并运行:- F% V* n, e/ D2 _/ I$ @
cd /home; d4 s6 a. }& P! f1 M
sudo yum -y install  git
; v; T/ n6 O6 U1 R- Q( ]git clone https://github.com/NewEconoLab/neo-cli-docker.git
) B& A- }* C% f) ~/ i" Fcp neo-cli-docker/dockerfile/privatenet/docker-compose.ymldocker-compose.yml
1 U$ v* j( }/ ]6 ldocker-compose up -d
' {; Z: l6 F4 l- ndocker-compose ps
0 J6 I: Q. l5 `* m& E2 y
/ o( \, d7 i& H) ?5 h9 y& k/ V看到这个样子就表示4个记账人节点的容器已经成功启动(此时节点还未启动)6 P" t/ X  `2 ^. k5 I  Q7 u
第5步,分别进入容器,启动节点,打开记账人钱包,启动共识
3 S8 g) d$ c5 s: r$ D# k- `输入并运行:$ J& S: P2 s2 R/ a+ ]
docker attach cli0进入第一个容器,其后一次为cli1、cli2、cli3' _) J! |, g  V" j: N8 i! J9 y
这里开始是容器内部环境:
. }9 D4 U* c' h) Rcd /home/cli && dotnet neo-cli.dll /rpc启动Cli节点+ \' Z+ t- \: t. O
open wallet ./docs/neo_private_net_0.json打开记账人钱包,其后依次为neo_private_net_1.json、neo_private_net_2.json、neo_private_net_3.json
. S5 `( H' K! P6 G2 A' P钱包密码1234567 W2 S! R* g9 ^! h! H$ V' c
start consensus启动共识$ K3 {0 X) X# K. N7 H/ c
最后切记使用特别的组合键【Ctrl】+ (【P】->【Q】),即按住【Ctrl】再依次按【P】、【Q】,退出并不停止当前容器。- S% t) {4 D' x- L
其他3个节点容器类似依次操作,不在赘述* T+ o% M5 @, i, O2 |
最后一个节点启动后,稍等片刻,可以看到私链已近开始运行:
% i  \! b" |+ ]0 `- s; k  Y
6 y% o+ Y& L$ m+ J; F2 [" Z可以看出,主记账人角色是交替承担的
: v2 G& Y+ i! d2 u至此,私链已经搭建完成,后面2步是私链的应用。
- K; ]" K+ n( N- y) f" y0 l**
, Q. X1 M1 R$ k+ V# J( p第6步,通过Cli jsonRPC api查看私链运行状态**
/ Z. u: j' `( _安装postman等api测试程序; R: Z3 {4 e% t" z  u. i
使用get方式请求:/ }* _( A, ]& L
http://116.62.160.38:10332/?jsonrpc=2.0&method=getblockcount¶ms=[]&id=1
0 p2 ?6 _5 c6 b其中IP部分要替换成你的电脑或虚拟机的实际ip。) c% O) i+ b  c! r) b$ L4 G
- k, ~' T: A- W$ |
然后就能看到当前私链总的区块数,要查看其它信息,可参考NeoCli api文档4 B4 L9 c, a" b2 }3 e" B9 [+ `
第7步,从记账人多重签名合约中取出初始块中的1亿Neo转到一个非记账人钱包中
3 c# K' V+ ^/ E/ \5 l! i构建能够连接当前私链的config.json和protocol.json文件
! n% z4 r! C8 U- y' w& P; [! `config.json参考:6 U' h  o7 e: H( F8 O# }5 O
{
0 ~5 A0 [, P5 e- u$ F  "ApplicationConfiguration": {
/ E0 L1 J! v4 R    "Paths": {
1 N: U. W2 k0 W5 v9 y      "Chain":"ChainPrivate",
* s" e% Z4 V# c& ^# t      "Notifications":"NotificationsPrivate"
. p1 j' I8 i8 g( F    },
  |/ {5 ^2 l  v- l* K$ B" R    "P2P": {
6 j7 S$ Z, W' p' q8 z* [8 @1 a8 h      "Port": 10333,( S% @8 z4 C/ L3 o1 G2 l
      "WsPort": 10334
+ C; g  |. a. a0 q. I* K    },
& e- S3 N. ~; g" I" V( t1 g    "RPC": {
9 n4 J" R& Y; d4 T$ O6 D/ L2 R; ~; W      "Port": 10332,
) B0 A) N" g, p& ~, k* Z( }      "SslCert": "",! j$ r( w- S  u7 N' f
      "SslCertPassword": ""
+ r% b4 H' S( ^    }! z4 V" v+ {  `# z3 h8 y" h7 b
  }" r$ Q% j  I$ U& v. l
}0 a  C! Y- d# {# P
protocol.json参考:
6 [2 E  i3 z6 N# P# v{
9 t8 h) z) l1 z0 L  E1 d  P% J  "ProtocolConfiguration": {
7 F# c# Z. ~  s, S+ B7 A- \4 `    "Magic": 9726190,% A$ E9 C- v1 r9 X* z
    "AddressVersion": 23,
6 L: c. J. e( z) ~$ ~+ e, W3 R  z    "StandbyValidators": [
" r' \9 p) S( h! ~     "0249b419692a17fb519c3b42ffbe82ae34855a45e54783a9bc940135b1c2753ece",& y" J. [  U) l" o, Y8 Z
     "03298a54cdfb2b5ffae0638c60633de24e3956b76a44867475e81db5ce87b2a16b",
* q5 n1 ^( W4 F2 q6 `: e      "02b795b3322f0a171c7e7658371131c0caa77a9279818b85b9d0728a5a63452ff8",8 k/ a4 ~4 A1 o0 b) o# {7 Z( w6 Y
     "0366440bd2a1fe4e0d1dcb9bf35995c5c6e858af846abef145064ab2b5e8ebfce8": L2 W6 Q7 I0 ]1 |0 z" M0 g+ P) ]" I
    ],
+ K" v$ m7 \9 q    "SeedList": [
$ u& R) h+ `  K# J      "seed0.nel.group:10333",1 Z3 n7 E8 F$ p* Z
      "seed0.nel.group:20333",
1 l1 y2 P+ T7 e      "seed0.nel.group:30333",
! j# E6 ~7 @, {      "seed0.nel.group:40333",
( a( S: e% K3 W7 x4 Q9 g9 j    ],
" f5 H+ G  c, k. V    "SystemFee": {5 }/ u5 Y0 u4 s- k3 ]2 }3 s8 T
      "EnrollmentTransaction": 1000,, X# a% ^( m1 z8 X/ I: s& ]
      "IssueTransaction": 500,4 V# m/ Y5 {' y- I5 W  q
      "PublishTransaction": 500,
# N3 ?1 q) x3 z/ F3 u; J: v) V      "RegisterTransaction": 10000
( R- c5 V0 t/ E% W# D    }
* o( ?  Y- n* E. `% n  }5 F. ]# c: X  K
}
% L1 Z9 Q3 Y( @seed0.nel.group需要替换成你的电脑或虚拟机的实际ip
- N4 {- R# z2 ]8 B2 V下载笔者预制好的记账人钱包和非记账人钱包  S+ {( a4 a4 e* U4 k" R
下载 https://github.com/NewEconoLab/neo-cli-dockerZIP+ w5 C9 W5 r% Z* s7 Q/ y1 i
在/dockerfile/privatenet/docs可以找到相关文件
( o$ t4 `) b9 |# P, K5 R) E3 F下载Neo官方GUI钱包,建议是2.6.0.0以上将其中config.json和protocol.json替换成以上内容,然后运行。打开neo_private_net_0.json  0号记账人钱包,密码123456
" Z! V( w- h* H, S, t1 a4 O% {5 b3 w) J& @" N2 a" X
可以看到一个合约地址中有1亿Neo(是不是有点小兴奋啊),这个合约地址是由4个记账人公钥构造的多重签名地址合约,需要至少3个记账人钱包签名才能转出。
6 x3 G' E- M% i最终转出
. Z: ~+ Y; a, q7 M8 C. m新建一个新的非记账人钱包,比如neo_private_net_test_0.json& }) k$ Y  e" i- R: b! D
记住它的地址,比如AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6, _4 }7 U' Y* f3 T  s& h
打开0号记账人钱包,并【交易】-【转账】到上面地址
. w4 x* B4 T9 J* X3 t% g2 [; R% d, ]
确定后会提示签名不足8 i" H" k, t) R' K$ S! Q! k

+ X* Y" x! D6 y% C. _, s. t没事,我们先把整个内容复制出来,然后打开1号记账人钱包,【交易】-【签名】对这笔转账交易进行第二人签名。
7 U/ ~4 K' x6 H9 l" ^  i1 Y  a$ Y! ~1 `" A
复制输出,然后打开2号记账人钱包,【交易】-【签名】对这笔转账交易进行第三人签名。
5 E2 [& H* P$ y. u' s/ M. W$ F4 p1 k, @6 W/ t9 S6 I
此时,左下角出现【广播】按钮,代表交易签名已经完备。
9 m# Y& K4 D# |点击【广播】将交易发送到私链上进行共识9 F0 c' `6 y$ L% Z$ j( E5 d
等到15秒左右,1亿Neo就到你建立的那个AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6地址中了。
9 b0 L0 D+ Q3 p5 w2 n3 v
$ _! T4 N% F" |$ L& b# ]GAS是通过生成区块,按照Neo持有量,不断产生的。
+ z- Y2 p% {/ w2 z3 p1 A" z* l/ Y7 O通过对自己地址转账,然后【高级】-【提取NeoGas】就能将GAS提取到自己地址。" f' d$ ~7 w- T; |, ?% t
好了,至此你有用了一条新的Neo链、1亿Neo、无数Gas,开始你的表演吧。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

蓝天天使2017 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    10