Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
167 0 0
EOS 系统主要有三个应用程序:
9 k/ W1 M: R0 G# ^nodeos: EOS 系统的核心进程,也就是所谓的“节点”。
' l# A* X, q6 \cleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。, t/ ?3 o5 K$ b$ P5 s
keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。/ a1 t3 l3 C& s, l
要求
8 q; k$ a/ _6 Z4 X" j' P" Y本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。! }. @4 z( {$ G& t. U9 z, R" j  O
Amazon 2017.09 and higher.5 x' K& e0 n: r: B  U) s. r
Centos 7.
9 i5 }$ ~5 z& G( QFedora 25 and higher (Fedora 27 recommended).
+ h( P' N% e" V5 F9 DMint 18.9 i: _8 y/ J! S, U" e
Ubuntu 16.04 (Ubuntu 16.10 recommended).
: ^, ]; K) I5 NMacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).0 y) B- `% o% {: }2 v) L
配置要求:- i0 f$ F) B. d0 l( \3 U
8GB 内存
, E( M% x/ {( b1 E6 j$ F2 O) J20GB 硬盘空余空间
3 D* S  Z+ E) m  \2 \! `. B- P如果机器内存不够 8G,自动编译脚本会报错。6 R) G4 Q2 B- Q7 M" {
运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。, M+ [: M# L& N* `
linux 命令基础: https://linux.cn/article-6160-1.html$ {- A1 y( }+ K
github 基础: http://www.runoob.com/w3cnote/git-guide.html
  `5 e+ T: {2 B# p下载 EOS 代码- @$ S5 o) a# s; B! W( E+ i( A+ \
如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。
+ M+ O3 ^# P! Y) x/ j0 @首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:5 I4 M8 k, Z+ ]4 m+ e8 I
git clone https://github.com/EOSIO/eos --recursive/ a+ }* f8 ?, ^* ]( B
注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:: h! o& W6 _2 Y: w# I
git submodule update --init --recursive
2 G' z8 J% D0 m7 n+ m/ }. c7 d构建 EOS
& B4 W. H  y) T, p% x  X有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
7 _* H% \7 R! @, p首先我们进入刚刚下载的 eos 目录,并执行构建脚本:
/ b4 t# q8 g8 [" @# w9 E4 gcd eos
8 i- v6 l/ |( y2 J6 E./eosio_build.sh) ~2 W9 _5 T8 O7 y- \: H
根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:! ^4 f7 k  R/ y% ~; h
Linux 系(Ubuntu等):0 I4 p2 ?- C/ L. w# v( t, p) l& D
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &. z$ i/ a) O" y! t+ c7 `& d; [# S) s4 W
Mac:9 L. v, _: m  w; v
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &1 W2 }. |/ e( w4 }
然后所有操作系统再执行以下命令:* l% M) l: R% P6 V1 {6 V
cd build
# W4 x2 D. y7 nmake test
' f5 c0 |4 a( K为了方便开发智能合约,还需要在 build 目录进行 make install:
0 |8 C! W% n) W( v4 u2 j如果已经进入 build 目录请去掉 cd build。
8 S' d3 s4 r- Z+ g" C( g  jcd build
( ]3 `4 U( c1 X; r; j# a* Rsudo make install
. r7 g7 B% A& ~  s/ s4 `5 Z建立本地单节点测试网络
: C* {! m( ^; g: Y% H构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:
/ @6 t8 T  P2 Z6 v$ [& Z2 o./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
7 Z; M1 M; P# h命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
. f& s$ T0 \/ O. C1 P+ P7 c成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:
' p/ a+ N/ M- e4 H% H$ _' L1575001ms thread-0   chain_controller.cpp:235      _push_block          ] initm #1 @2017-09-04T04:26:15  | 0 trx, 0 pending, exectime_ms=01575001ms thread-0   producer_plugin.cpp:207       block_production_loo ] initm generated block #1 @ 2017-09-04T04:26:15 with 0 trxs  0 pending1578001ms thread-0   chain_controller.cpp:235      _push_block          ] initc #2 @2017-09-04T04:26:18  | 0 trx, 0 pending, exectime_ms=01578001ms thread-0   producer_plugin.cpp:207       block_production_loo ] initc generated block #2 @ 2017-09-04T04:26:18 with 0 trxs  0 pending...
/ x3 {- \+ ~) w5 Ueosio generated block 046b9984... #101527 @ 2018-04-01T14:24:58.000 with 0 trxseosio generated block 5e527ee2... #101528 @ 2018-04-01T14:24:58.500 with 0 trxs...
1 X9 c( B# f9 R, L- a说明本地的单节点已经开始正常出块了。& v' z/ K; P& e
我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。
$ V! h: g0 W7 d7 b* g
/ o3 C7 n/ b+ G2 i3 Q" R高级设置
: o- E3 E& l5 k5 o如果你不满足于以上,可以对节点配置进行修改,配置文件位于:. k! _5 W5 P1 Q8 n% O" O
Mac OS: ~/Library/Application Support/eosio/nodeos/config
( @3 t2 g( J1 r& M3 ULinux: ~/.local/share/eosio/nodeos/config8 J. a; F" E9 D6 M. u1 E- a, u/ ~
上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。
2 p; f8 m# O' K: ^5 l' _配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:! }" ]7 {; W; Y" E# {
    # Load the testnet genesis state, which creates some initial block producers with the default key
" |) h/ N% `# d% S   genesis-json = /path/to/eos/source/genesis.json   # Enable production on a stale chain, since a single-node test chain is pretty much always stale
' M8 ?& u+ q. U   enable-stale-production = true
4 O: z6 n+ L# }9 n9 F0 T4 I+ y   # Enable block production with the testnet producers  O* [- p1 r/ K+ R' t  \7 v
   producer-name = eosio   # Load the block producer plugin, so you can produce blocks
5 j# L3 M$ I4 @; y, o+ @. X8 n% R9 N   plugin = eosio::producer_plugin   # Wallet plugin. r+ G" T6 O* L. I0 v/ j
   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins; ]+ ^7 B, [. E$ R# J" L% }  r6 y
   plugin = eosio::chain_api_plugin
# u" r1 {+ n6 R  H. |) j, w, t" Z   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history
# n2 e- b- y" ~" k2 l; q) B   plugin = eosio::account_history_api_plugin' O% Y1 f! S" ]9 t+ U
这样配置好后,重新启动 nodeos,就会顺利出块了。& }! D" T( C$ U6 R
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:
! `4 ^; p% ?9 A' k5 c0 rMac OS: ~/Library/Application Support/eosio/nodeos/data6 |% W$ A1 V2 o% _6 z  J, L6 S
Linux: ~/.local/share/eosio/nodeos/data7 ~$ {. C3 z" Z8 o' {. d* a
但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11