Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

蓝天天使2017
97 0 0
是否,参加了各种Neo活动,对Neo颇感兴趣,希望从源头了解这个世界上为数不多的支持智能合约的公链?0 }+ M6 @- Q. y
是否,总是想参照Neo文档建立一个自己的私链,但是总是没有那么多时间去昨晚,抑或没走几步总是会遇到各种拦路虎?
6 Q9 l: e. y* Z+ H+ ~8 a是否,想研究Neo智能合约,但是苦于主网(mainnet)gas太贵,测试网(testnet)申请又太麻烦(而且一般都不那么慷慨)?
4 r6 J% a9 }# m! Q$ x& ]2 k8 E是否,希望给大家炫个富,“嘿,看,我有1亿Neo!”?
8 T8 X. ]+ q) ]' w" R8 o- w" j恭喜你,阅读这篇文章就能解决以上问题。请跟随笔者一步一步进行操作,每一步都是笔者的成功的操作记录,请放心食用。本教程已经预设了多项参数,在一般情况下,按照本教程操作就能立即坐拥1亿Neo并供你尽情挥霍。7 q2 X6 S/ o( O
本文面向私链体验者,5步构建私链,7步Neo过亿。
# g9 T; Q0 P) H% e. h& q7 |2 g如果大侠需要详加参详或者只是想体验更简单的快速搭建Cli节点,请详阅https://github.com/NewEconoLab/neo-cli-docker
, |4 x9 |6 B0 ^9 g以下操作以Linux指令为主:; A/ r3 B/ @5 q: n3 ^2 n& c
第1步,建立Docker环境
* j. I2 x' d0 b, n+ G建议参考Docker官网https://docs.docker.com/engine/installation/构建Docker环境,具体操作不再赘述。9 l1 E; q2 l, X! k: A7 x. N
Docker支持所有系统,包括Linux、Windows、Mac,Linux为原生支持。. o( t3 z7 F( E
笔者以CentOS 7.4 x64为实验环境,但是其他系统亦可,最终Docker层都是用CentOS的。
  C! p! D( |. s" e5 b* w- t: V服务器或虚拟机建议不要低于2u4G。
" }# v; f9 p  Q3 c4 C第2步,引用笔者编制好的dockerfile构建Neo Cli Docker镜像,后面将以次为依托派生容器。) t1 I! f4 A4 s7 e. s3 }
打开CentOS终端或使用SSH远程,输入并运行如下命令:
8 y4 B; B$ P5 g2 odocker build -t neo-cli:v0.3 https://github.com/NewEconoLab/neo-cli-docker.git#:dockerfile/privatenet: e. \2 i* f3 n( U- g4 Q/ x+ S
这条命令会从NEL的github自动应用私链镜像构建脚本,主要进行如下操作:) N7 E& z" Y- x7 f4 G6 k
构建CentOS Docker镜像7 G/ c% e* Z) I& ?; ]
安装dotnet sdk环境
* _) b! g9 z# P# N6 N; u$ y安装Neo必须的leveldb-devel库2 O5 x, {8 {! v
安装git
# X8 C+ M- S" P从Neo官方github克隆neo-cli项目最新代码
% a" h! u6 H/ g* O使用dotnet sdk编译neo-cli
( \- ?! ^# u0 {: [% q" x从NEL官方github克隆neo-cli-docker项目
0 m+ v1 z- \# _将neo-cli-docker项目中预先配置好的私链版config.json和protocol.json文件替换到neo-cli根目录
2 f7 P0 s& p8 O1 e  z- A, a第3步,安装Docker官方容器编排工具docker-compose,为后面一键派生4个记账人节点容器做准备。% H: C$ w% t, a0 R: j9 s
输入并运行:& K& s% g/ s' C8 V
sudo pip install -U docker-compose
  g; {! z/ O  kpipuninstall urllib3
8 t( s- {: \- f, F5 I/ Spipuninstall chardet
' G% z9 H4 H( [2 p7 [pip install requests
1 U( v% X, S+ R8 P3 D1 W3 |. kdocker-compose –version; _- h( E' B) ]1 E+ z$ i8 P
第4步,引用笔者预先设置好的容器编排模板一键生成Neo链最小规模的4个记账人节点容器(实际最少3个仍能继续共识出块)
' s4 z$ |9 K( l$ s$ o% r! h6 @输入并运行:
6 k0 n- ^: @5 D1 m3 ecd /home
4 o$ s" h0 N- e2 r; z, Psudo yum -y install  git& Y9 m1 k. k* I8 I
git clone https://github.com/NewEconoLab/neo-cli-docker.git2 c0 R! k2 m  B
cp neo-cli-docker/dockerfile/privatenet/docker-compose.ymldocker-compose.yml- t3 W* j; O4 f% T( U1 v. D
docker-compose up -d
1 g+ f# k, f/ @" k# F( l* pdocker-compose ps' o* u, }" F3 C3 W

# s  V% Y) d* U# T; v, i看到这个样子就表示4个记账人节点的容器已经成功启动(此时节点还未启动)
. L5 d7 Y% ]6 g+ M7 G8 A4 V第5步,分别进入容器,启动节点,打开记账人钱包,启动共识
5 l4 I& ~) Q+ s% z0 l. d, D输入并运行:2 a! n- ^! e. }: h! Q- W* G( L$ J8 n( a
docker attach cli0进入第一个容器,其后一次为cli1、cli2、cli3
& s* {0 ~$ n' f8 X这里开始是容器内部环境:
3 Q# P/ F# b8 Q& K3 |cd /home/cli && dotnet neo-cli.dll /rpc启动Cli节点; R! ?* Q2 f9 m, ?( r' O
open wallet ./docs/neo_private_net_0.json打开记账人钱包,其后依次为neo_private_net_1.json、neo_private_net_2.json、neo_private_net_3.json
1 ]" M" v3 O! G5 h钱包密码1234568 P# c, ?6 c# e1 @9 S8 S
start consensus启动共识
. y0 s1 E. `/ H0 ~最后切记使用特别的组合键【Ctrl】+ (【P】->【Q】),即按住【Ctrl】再依次按【P】、【Q】,退出并不停止当前容器。
4 d9 d* \+ F" l; s' Z0 x3 _. f其他3个节点容器类似依次操作,不在赘述
9 v2 z* ~- l+ E( u4 ~最后一个节点启动后,稍等片刻,可以看到私链已近开始运行:8 Y3 W5 O' ^4 K
  L+ W" }' M, @/ y
可以看出,主记账人角色是交替承担的# q8 x* U& `/ \& s5 w
至此,私链已经搭建完成,后面2步是私链的应用。: M/ m5 C4 ~  E4 T3 S7 m
**: B3 L0 L* n, A- \" c4 ]) u& |3 d
第6步,通过Cli jsonRPC api查看私链运行状态**
; P3 F% R0 l5 C. O. j+ f安装postman等api测试程序9 a: b4 P# Q2 l! f
使用get方式请求:$ X! ?% m; y9 z9 u0 w
http://116.62.160.38:10332/?jsonrpc=2.0&method=getblockcount¶ms=[]&id=1
9 T3 l9 J) T  \其中IP部分要替换成你的电脑或虚拟机的实际ip。
) e& N3 g5 K0 \
- W: k9 ?  B; U# `4 L. r: l然后就能看到当前私链总的区块数,要查看其它信息,可参考NeoCli api文档4 T8 ~% f8 |/ b% t; o: P7 i
第7步,从记账人多重签名合约中取出初始块中的1亿Neo转到一个非记账人钱包中
7 p3 l, H# S% j3 X构建能够连接当前私链的config.json和protocol.json文件
) U6 x% A0 ~! v3 b$ Hconfig.json参考:1 V/ t6 G+ t! M- A
{
* g: Z% v" S/ L7 M$ P  "ApplicationConfiguration": {
3 W3 T. M/ j) E. G$ k% n9 D    "Paths": {
4 d- o6 R- x" Y2 N- r" ^      "Chain":"ChainPrivate",
; f6 K5 n7 c5 G' {4 y3 t      "Notifications":"NotificationsPrivate"
4 x+ F. t$ r+ W, t- d    },1 }* X$ l5 ]' ?# L: M
    "P2P": {4 s4 [2 P' v7 W
      "Port": 10333,
4 ^. j7 k+ B5 Q9 a( z      "WsPort": 10334
# I) f, {1 U8 k- ~% C    },% L! D6 w$ p4 Y; e
    "RPC": {
: I3 M6 V5 p8 I) p7 n      "Port": 10332,
0 l1 {0 F' T% O2 _4 V. A/ G      "SslCert": "",) l8 G6 U7 R( T( g0 s, c
      "SslCertPassword": ""8 I( U* |* d; M! u3 K3 S6 T: i
    }# L) }. U& I$ q, _
  }
) H- }; X6 f; ~: B}! p4 x0 h" u3 ^6 S
protocol.json参考:
4 ~% s6 ^/ z' Q9 i{3 g. M( p5 x  I5 p$ a7 L2 {9 N
  "ProtocolConfiguration": {. f( U6 M# a0 l' h" W
    "Magic": 9726190,
3 O! W' y8 [& @: g% g) \    "AddressVersion": 23,6 n  ?" f# z4 ^
    "StandbyValidators": [
2 o/ b. U& f& @$ X0 p- g     "0249b419692a17fb519c3b42ffbe82ae34855a45e54783a9bc940135b1c2753ece",: `- j; d& B, l$ H4 J- `3 p
     "03298a54cdfb2b5ffae0638c60633de24e3956b76a44867475e81db5ce87b2a16b",
8 v" W5 n! V7 ]      "02b795b3322f0a171c7e7658371131c0caa77a9279818b85b9d0728a5a63452ff8",
0 {) t4 H  Y* V2 s& \- {, U     "0366440bd2a1fe4e0d1dcb9bf35995c5c6e858af846abef145064ab2b5e8ebfce8"
' u; k, O& d0 V2 F: ?5 `4 t    ],
2 _8 {$ q- E" U# u. J' E7 `1 Q) T" K    "SeedList": [! ]1 @: t! i2 Q" N# t
      "seed0.nel.group:10333",; w: o0 O4 S- \
      "seed0.nel.group:20333",0 n. g) u6 Y/ L3 U( I# T4 G0 o
      "seed0.nel.group:30333",
; R! o6 t* J' Y      "seed0.nel.group:40333",
" e, h; Q; x" M, L    ],% r0 k  n7 e9 C$ [8 F  [' C0 I7 k
    "SystemFee": {( O) {6 P# `2 [& g
      "EnrollmentTransaction": 1000,: U) x7 C1 }/ R' v
      "IssueTransaction": 500,1 ]6 s. X# R) W* V8 }9 H$ e9 ?
      "PublishTransaction": 500,
1 z+ k+ T% k; \  p  x      "RegisterTransaction": 10000
( ^! p+ G& o% `" s/ S/ n    }1 m. s% F' c: {/ D7 \" Y, [
  }" E5 e5 ~. X; `6 f
}
* P1 [' W4 w! S9 \seed0.nel.group需要替换成你的电脑或虚拟机的实际ip
8 k8 W& F9 o' \' \/ p下载笔者预制好的记账人钱包和非记账人钱包( y6 A5 W3 q2 e! T0 d' V3 H
下载 https://github.com/NewEconoLab/neo-cli-dockerZIP
9 q/ y3 b) Z* f% @在/dockerfile/privatenet/docs可以找到相关文件  E- {" _7 {3 M) v( f
下载Neo官方GUI钱包,建议是2.6.0.0以上将其中config.json和protocol.json替换成以上内容,然后运行。打开neo_private_net_0.json  0号记账人钱包,密码1234566 g; B  y. O7 z  ~4 Y  |6 B1 r4 e
/ T; f( G1 C2 ~0 r$ N6 H
可以看到一个合约地址中有1亿Neo(是不是有点小兴奋啊),这个合约地址是由4个记账人公钥构造的多重签名地址合约,需要至少3个记账人钱包签名才能转出。
$ d) [0 o2 o: r/ k最终转出' v- ?3 [) ]% ?& E* _
新建一个新的非记账人钱包,比如neo_private_net_test_0.json
1 C* C2 V0 E$ z7 C记住它的地址,比如AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6
8 r8 E, g* m! H8 C打开0号记账人钱包,并【交易】-【转账】到上面地址  [# M" e* h) u. ?& J. A9 o0 S
: Y6 n- ^7 {! ^) U; Z
确定后会提示签名不足
- G) @. S7 X* e4 m8 @
, c0 D" y( p* n9 b没事,我们先把整个内容复制出来,然后打开1号记账人钱包,【交易】-【签名】对这笔转账交易进行第二人签名。
2 T4 L# @5 o* H# ]. ]; w. h0 T- m! u# e& s9 |+ I6 @6 B
复制输出,然后打开2号记账人钱包,【交易】-【签名】对这笔转账交易进行第三人签名。
! p, Z' m# l4 q( I, w
9 V, }) C& n, E! u, b5 K, M8 h此时,左下角出现【广播】按钮,代表交易签名已经完备。% D  @# g* {, k7 x* A  ?
点击【广播】将交易发送到私链上进行共识
8 W8 k- b7 A/ `4 Z等到15秒左右,1亿Neo就到你建立的那个AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6地址中了。
  [# m# _. U) {+ d9 A
& D% d- C! Y. K7 Z) D; oGAS是通过生成区块,按照Neo持有量,不断产生的。* E1 \2 }5 A/ Z" ?  t
通过对自己地址转账,然后【高级】-【提取NeoGas】就能将GAS提取到自己地址。
* ?2 p* h3 {! c# _& V6 p好了,至此你有用了一条新的Neo链、1亿Neo、无数Gas,开始你的表演吧。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

蓝天天使2017 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    10