Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

蓝天天使2017
191 0 0
是否,参加了各种Neo活动,对Neo颇感兴趣,希望从源头了解这个世界上为数不多的支持智能合约的公链?
  g7 [* a( m0 e是否,总是想参照Neo文档建立一个自己的私链,但是总是没有那么多时间去昨晚,抑或没走几步总是会遇到各种拦路虎?! e, }0 U- O1 \
是否,想研究Neo智能合约,但是苦于主网(mainnet)gas太贵,测试网(testnet)申请又太麻烦(而且一般都不那么慷慨)?
! y, \# o; N! r" \1 x是否,希望给大家炫个富,“嘿,看,我有1亿Neo!”?* A/ W* r8 ^. V/ N) Q
恭喜你,阅读这篇文章就能解决以上问题。请跟随笔者一步一步进行操作,每一步都是笔者的成功的操作记录,请放心食用。本教程已经预设了多项参数,在一般情况下,按照本教程操作就能立即坐拥1亿Neo并供你尽情挥霍。7 ?' y. Z+ e* L  J0 S5 b
本文面向私链体验者,5步构建私链,7步Neo过亿。1 A) Q! J2 L0 N2 z' x7 O+ E
如果大侠需要详加参详或者只是想体验更简单的快速搭建Cli节点,请详阅https://github.com/NewEconoLab/neo-cli-docker5 f7 R! K- _8 ~# {7 {/ j- ?
以下操作以Linux指令为主:1 M2 A6 j/ x% q9 U5 ^0 m6 `
第1步,建立Docker环境. {/ t6 H$ B. G) d' e5 L; f! A
建议参考Docker官网https://docs.docker.com/engine/installation/构建Docker环境,具体操作不再赘述。
$ S  g/ ^0 J1 j: m) D2 T6 MDocker支持所有系统,包括Linux、Windows、Mac,Linux为原生支持。
2 X( D# X8 x. m* ~笔者以CentOS 7.4 x64为实验环境,但是其他系统亦可,最终Docker层都是用CentOS的。
; H1 f0 J! H& S服务器或虚拟机建议不要低于2u4G。
6 H1 [6 o0 H& J$ J第2步,引用笔者编制好的dockerfile构建Neo Cli Docker镜像,后面将以次为依托派生容器。: q) q; V, u! _' C' ]
打开CentOS终端或使用SSH远程,输入并运行如下命令:9 E- x* Q2 |8 X- y0 v& ^  t7 F
docker build -t neo-cli:v0.3 https://github.com/NewEconoLab/neo-cli-docker.git#:dockerfile/privatenet! b& b4 N3 l3 w: f6 g
这条命令会从NEL的github自动应用私链镜像构建脚本,主要进行如下操作:' t( j6 W2 z$ H+ }: }0 H
构建CentOS Docker镜像
; Z6 ~# o0 A; w, P3 i2 ^9 W4 t安装dotnet sdk环境) c' F* t5 T/ u) I+ `( A. d
安装Neo必须的leveldb-devel库4 R/ z8 k! Z: G- h
安装git
2 y- [& ?4 V5 l) g0 Y! C: z从Neo官方github克隆neo-cli项目最新代码
$ z( p% ^/ p7 `1 j1 z% N使用dotnet sdk编译neo-cli
: T. ^% s6 ?, P从NEL官方github克隆neo-cli-docker项目& E9 M& o$ }$ x5 @+ \# |
将neo-cli-docker项目中预先配置好的私链版config.json和protocol.json文件替换到neo-cli根目录
% V- g! E& v9 v& x, t7 p第3步,安装Docker官方容器编排工具docker-compose,为后面一键派生4个记账人节点容器做准备。
; g& n0 |, z! d$ }1 }, t* G# }( ]输入并运行:( w! @$ g; i) I# D9 Q
sudo pip install -U docker-compose
$ |; P, L" V$ V% i# V+ bpipuninstall urllib30 i3 v* q: X: M; l! N
pipuninstall chardet( O: U3 F+ d1 U" l
pip install requests! A4 |& C8 r0 ]2 x: M
docker-compose –version, _1 u3 }6 X7 p" x
第4步,引用笔者预先设置好的容器编排模板一键生成Neo链最小规模的4个记账人节点容器(实际最少3个仍能继续共识出块)
' o' L" u; }  E输入并运行:
( |' H' }+ P+ S9 l" q- j3 ^' Bcd /home
$ v; C7 A* t  H$ E1 ]sudo yum -y install  git2 [5 T; k  G2 O& o7 y
git clone https://github.com/NewEconoLab/neo-cli-docker.git
9 A6 d7 M8 q& b7 y' i% B% F$ \6 lcp neo-cli-docker/dockerfile/privatenet/docker-compose.ymldocker-compose.yml0 [$ c5 t8 O0 f: H" O7 g' C
docker-compose up -d9 q/ Z4 |, Y  t! R
docker-compose ps- j& M! c. i# k5 r
9 _2 M: G1 K  C, o4 Q
看到这个样子就表示4个记账人节点的容器已经成功启动(此时节点还未启动)- C5 ?5 {# P( U
第5步,分别进入容器,启动节点,打开记账人钱包,启动共识
3 Y8 ?5 E& ?. q. g. N! g输入并运行:+ ~/ S8 c1 A/ r- J4 Y' z; W) ^5 W
docker attach cli0进入第一个容器,其后一次为cli1、cli2、cli3. V6 O3 ]: z* h
这里开始是容器内部环境:
; [* [3 v7 L8 dcd /home/cli && dotnet neo-cli.dll /rpc启动Cli节点
+ q' {6 @8 T5 |8 H6 g, N- ~open wallet ./docs/neo_private_net_0.json打开记账人钱包,其后依次为neo_private_net_1.json、neo_private_net_2.json、neo_private_net_3.json# Q$ l; o3 ~; X  O1 W6 `2 i
钱包密码123456
3 R* ^9 h; ~; h, cstart consensus启动共识; \7 P: T+ M) R: h, K3 g
最后切记使用特别的组合键【Ctrl】+ (【P】->【Q】),即按住【Ctrl】再依次按【P】、【Q】,退出并不停止当前容器。, i/ V/ P8 s' e
其他3个节点容器类似依次操作,不在赘述
' N$ E* y! U/ i0 b: M6 ]. `最后一个节点启动后,稍等片刻,可以看到私链已近开始运行:
5 t: K. C8 ~8 ~: L1 L$ o: B( d
: F( b/ K2 x7 b0 y; S  m可以看出,主记账人角色是交替承担的
4 X* k. i3 v. `; t9 T至此,私链已经搭建完成,后面2步是私链的应用。
" r, e. o/ Q1 Q3 l) g/ Z& H! ^**
( w! `# a/ C4 c$ d第6步,通过Cli jsonRPC api查看私链运行状态**8 `& S4 Q" u% f6 e
安装postman等api测试程序
3 g1 I6 w0 R/ y5 p1 I5 A0 w- {使用get方式请求:0 Y8 t- F. P- b# Z0 D8 i, u
http://116.62.160.38:10332/?jsonrpc=2.0&method=getblockcount¶ms=[]&id=1
+ P2 ]2 P7 `, a6 Q+ u其中IP部分要替换成你的电脑或虚拟机的实际ip。
( i+ u5 f; l7 E+ {
: o- c8 R% t4 F/ X3 B# H然后就能看到当前私链总的区块数,要查看其它信息,可参考NeoCli api文档. T! G% V. L9 w- e1 O2 e
第7步,从记账人多重签名合约中取出初始块中的1亿Neo转到一个非记账人钱包中& Z( R. w( u& N9 b' W9 s
构建能够连接当前私链的config.json和protocol.json文件
0 a& h* v! @1 A: k+ f; Rconfig.json参考:6 K2 W1 w2 c) w8 s/ D; a
{
5 R2 M+ r+ m# ], Q( ]  "ApplicationConfiguration": {  o9 T1 }1 k7 D/ i* y$ z
    "Paths": {
6 ]: m6 }1 [# ^- c      "Chain":"ChainPrivate",
& q) f* A7 I; X% k$ j. h      "Notifications":"NotificationsPrivate"
7 Z9 C4 ^! L: p  {    },
( K$ L5 D- U- w2 {    "P2P": {
; W( y, u/ ], F. u! \      "Port": 10333,
8 ?# C" p2 C: o      "WsPort": 103341 F% T: u: H# p0 K
    },6 `8 b4 y/ H0 T5 `& i( @! |. T1 d8 v4 Z
    "RPC": {
6 B$ [4 Z0 v9 w7 m, p      "Port": 10332,, n2 M. A1 t4 ^
      "SslCert": "",2 u- l/ y( ?6 e) n
      "SslCertPassword": ""2 B5 Y  M' W' n# F7 P( t
    }8 L7 J  B9 _+ }. W
  }6 ^1 A3 h: T* u
}, O! a* ^6 R( G2 |# O: R8 W' M4 t2 g
protocol.json参考:
) a! d. V- f- f8 {1 O" O# `' e4 \{
2 y7 c0 @' [4 W/ K* y) ?0 C  "ProtocolConfiguration": {
+ C( `' o; `9 l7 i( Y# z    "Magic": 9726190,
- k- ]) f6 H2 H$ d) y3 N) B    "AddressVersion": 23,
2 c0 W8 ^9 {3 ?! @# d  @    "StandbyValidators": [" L2 ^( e0 }2 I
     "0249b419692a17fb519c3b42ffbe82ae34855a45e54783a9bc940135b1c2753ece",
: D8 M* c0 O* Y1 s6 h     "03298a54cdfb2b5ffae0638c60633de24e3956b76a44867475e81db5ce87b2a16b"," q0 v/ H2 j$ \1 u( ]0 W( {# e( p
      "02b795b3322f0a171c7e7658371131c0caa77a9279818b85b9d0728a5a63452ff8",+ `5 R- s  V4 w1 e4 |  ~
     "0366440bd2a1fe4e0d1dcb9bf35995c5c6e858af846abef145064ab2b5e8ebfce8"
; @( l3 m) j$ G) R3 @    ],$ j+ Y( F% q7 c9 M# b2 y
    "SeedList": [1 [6 L! H1 c4 Z; c3 `
      "seed0.nel.group:10333",5 [' G/ T. G& a9 C7 F
      "seed0.nel.group:20333",
+ I8 a2 ^& ], A2 Q, x9 \      "seed0.nel.group:30333",
4 c$ S: B1 W, m# h3 g' J' T2 |7 x      "seed0.nel.group:40333",7 H4 j8 T! e- O. [- M
    ],
* T0 b+ i  x( l. D    "SystemFee": {
8 s9 J6 g+ H- l! K      "EnrollmentTransaction": 1000,
" `- I9 S4 D4 n5 Y, n      "IssueTransaction": 500,
; \1 L! [5 J# P& m1 \( V      "PublishTransaction": 500,: g6 c% E0 t2 F. j0 u5 i
      "RegisterTransaction": 100000 D( m8 ?2 I( s- A1 y7 @" J
    }
' ^& H6 t, @6 l6 u  }8 l* X. D; x; O% U/ E8 m4 y
}. c; ?7 B9 f' {. x$ k
seed0.nel.group需要替换成你的电脑或虚拟机的实际ip% F1 ~" F- x3 r; ]: `
下载笔者预制好的记账人钱包和非记账人钱包
! r+ u9 b. z0 e0 t2 V) o, [$ x下载 https://github.com/NewEconoLab/neo-cli-dockerZIP
" z" b  l& N( n3 {$ |8 i在/dockerfile/privatenet/docs可以找到相关文件
! U* g2 ^3 i' U8 u  d. `9 j5 K% h下载Neo官方GUI钱包,建议是2.6.0.0以上将其中config.json和protocol.json替换成以上内容,然后运行。打开neo_private_net_0.json  0号记账人钱包,密码123456
- Q* c3 B+ A% m: a* V
  q/ w8 u2 h# g可以看到一个合约地址中有1亿Neo(是不是有点小兴奋啊),这个合约地址是由4个记账人公钥构造的多重签名地址合约,需要至少3个记账人钱包签名才能转出。
: I" t" b/ x4 Y3 z1 y, ]8 Y最终转出
1 p" ]% b8 Q+ v  P9 ~; ?新建一个新的非记账人钱包,比如neo_private_net_test_0.json
$ f+ Q1 ]" ]! U( f记住它的地址,比如AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6
( X, L5 J$ Y1 f+ P" p9 I打开0号记账人钱包,并【交易】-【转账】到上面地址
) e. @$ A/ m' |3 E' g
& S( l" [2 S6 d) [6 d# l, J& Z1 @确定后会提示签名不足  g( P6 R- y# B; F$ k5 ?- C
7 g7 ?  ~/ @# V$ U- f6 a
没事,我们先把整个内容复制出来,然后打开1号记账人钱包,【交易】-【签名】对这笔转账交易进行第二人签名。- L5 s9 y# B* L, w

- i$ [  ^1 S1 ~8 k6 H; Q6 y& M复制输出,然后打开2号记账人钱包,【交易】-【签名】对这笔转账交易进行第三人签名。
+ G! @% a- ^1 }* Z* l: N/ n0 Z) R( N2 {" I/ O* F4 q
此时,左下角出现【广播】按钮,代表交易签名已经完备。
9 v, |- W# X& U) M% x: x4 Z2 _点击【广播】将交易发送到私链上进行共识
* ]2 J& r! O! C+ J等到15秒左右,1亿Neo就到你建立的那个AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6地址中了。0 z7 B1 C, Q$ G1 |5 |- t) t
; L# S8 b9 u- A; @2 {3 R
GAS是通过生成区块,按照Neo持有量,不断产生的。
9 v( ~4 G# A* i7 B! A通过对自己地址转账,然后【高级】-【提取NeoGas】就能将GAS提取到自己地址。3 p: l7 o3 E" C3 a7 r& P
好了,至此你有用了一条新的Neo链、1亿Neo、无数Gas,开始你的表演吧。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

蓝天天使2017 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    10