Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
149 0 0
EOS 系统主要有三个应用程序:
! n/ G5 X' U; hnodeos: EOS 系统的核心进程,也就是所谓的“节点”。
# {6 T- {. x5 q1 {# G% Ecleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。
3 Y$ E9 l+ g+ h/ Zkeosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。% ]. c* P! J9 t( D" e: g; `
要求
* s) D7 s* u8 E1 g本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。2 J: I% x" s9 {% Z6 f) E+ I
Amazon 2017.09 and higher.4 N; j+ G) D) n/ z
Centos 7.
. R1 v# @7 i: c( MFedora 25 and higher (Fedora 27 recommended).1 {8 ^; _$ E- \. T6 \
Mint 18.; ~  F+ v0 }" p: L
Ubuntu 16.04 (Ubuntu 16.10 recommended).
* p9 u) T! |% l) v$ d* DMacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).. z3 f0 G, v  M% X$ w9 Y0 \
配置要求:
- k; \; i  }8 F- j% {. O& J8GB 内存; v' G" ~! B' B3 U
20GB 硬盘空余空间
8 Y: S  ~6 P# z  X/ C如果机器内存不够 8G,自动编译脚本会报错。2 H+ a6 e- }" y; X/ t% R4 V3 \
运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。0 |( j. u5 y, g+ p% a, i* L, z
linux 命令基础: https://linux.cn/article-6160-1.html' B. p% N* g4 V/ C
github 基础: http://www.runoob.com/w3cnote/git-guide.html
0 a+ n: J# o1 G下载 EOS 代码
. O2 H. Y$ A) K1 T0 ?: e  R# r如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。
" B$ C7 o; G1 Q: t! B. `首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:" _0 o) N* q8 Y0 ^) H6 l4 z( e
git clone https://github.com/EOSIO/eos --recursive' h! k  G: G2 B9 {3 J  e2 ]+ ^
注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:" H- e, V. Y8 T; V& o: |( ~
git submodule update --init --recursive
/ F8 q+ A0 t# I# n* ?3 ^1 j  _构建 EOS+ a! E( l5 I! H3 A4 E( P# H5 |
有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
3 n/ F7 J, r( C; n( M9 B" Q首先我们进入刚刚下载的 eos 目录,并执行构建脚本:; h+ m$ I  K# V1 o2 r
cd eos1 D7 I: Z, j; b) C1 T
./eosio_build.sh
3 U( o3 I' |2 u: e+ M1 n根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
2 Q$ A/ {( c5 dLinux 系(Ubuntu等):; q6 O4 ^$ w  M& Z# P2 d
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
$ U8 C! e0 J7 e  vMac:4 ?$ J$ R4 k; @7 ]2 C, J/ n! ^
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &* Q. P) D/ s1 x& |- p4 ^( L; I
然后所有操作系统再执行以下命令:
; e5 y6 H2 ]3 P3 z, g- B; }3 Z/ X9 ^' p! ecd build# o  w2 H* x) \; E
make test# k* Z& c7 ~7 O  R! r) @
为了方便开发智能合约,还需要在 build 目录进行 make install:7 g, h% Z. T' ]
如果已经进入 build 目录请去掉 cd build。
, E, T5 I: B' f& dcd build& J1 ~. o9 n0 s0 w
sudo make install
% C2 c+ ^; i1 B建立本地单节点测试网络
3 B4 Y- l; B1 S. C构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:1 i) J+ b6 e( ^: S! f: c9 X) W
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
$ t9 [, r" Z7 P# X9 V0 W3 \命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
/ U/ F! I, W1 u1 ^8 @. |! y1 N成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:
! J, u) l4 ]* K1575001ms 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...% i/ Y* i# V: j( s: \9 L$ o6 c$ Q
eosio 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...
  o9 @  M: [& f* O4 k# g' _! i) G说明本地的单节点已经开始正常出块了。
1 E( m, Z* |8 f我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。$ L/ y0 z6 s# \" w3 O! }. l

- l) D8 R; a  g" {" S0 b8 r4 x高级设置; b' W+ Q; P" |" H! i- }0 g
如果你不满足于以上,可以对节点配置进行修改,配置文件位于:
5 O- t+ z* q# nMac OS: ~/Library/Application Support/eosio/nodeos/config# B7 y( t* r; n& u: Y3 I: ]6 {
Linux: ~/.local/share/eosio/nodeos/config
9 C# M) P8 \! n% X# j2 C6 b) f9 P上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。5 N# N/ ~. p6 a" L
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:4 x, a2 h+ U6 f+ w
    # Load the testnet genesis state, which creates some initial block producers with the default key/ S: k0 s" K5 l& H* b) w% R
   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+ O: \9 p" Q* {* K
   enable-stale-production = true9 g! S! `, K, `2 S8 }5 S
   # Enable block production with the testnet producers3 y; k, H8 {2 {; }: X/ W$ W
   producer-name = eosio   # Load the block producer plugin, so you can produce blocks- Z. U9 a" I# b. p& h- d5 P
   plugin = eosio::producer_plugin   # Wallet plugin
: Y3 |# u0 i9 E3 w0 k1 v/ d% m   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins
/ i& n9 b# E1 r2 ]: U, d9 P/ S6 X2 ^   plugin = eosio::chain_api_plugin! T7 N/ S$ T  S# q. h
   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history7 n6 ?' L* e% X% |: E3 e2 ]; M4 ]2 ~  X
   plugin = eosio::account_history_api_plugin
6 L# B% `3 J6 m6 B这样配置好后,重新启动 nodeos,就会顺利出块了。5 D( P. d, O. C
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:/ g; g: o" b5 J
Mac OS: ~/Library/Application Support/eosio/nodeos/data7 S1 \) h/ K2 g( D/ f
Linux: ~/.local/share/eosio/nodeos/data
1 R; j, s* k+ }& p但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11