Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
164 0 0
EOS 系统主要有三个应用程序:8 ^0 h! |4 ]' e
nodeos: EOS 系统的核心进程,也就是所谓的“节点”。
& b! x3 \' t" W, G% ]- Scleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。+ M/ q5 {" m- F$ C7 d
keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。
  l. G. Q* R  P3 w, d( M: g  H' B要求
1 r! l; q% M3 W7 v( a本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。
6 c* u  S6 f0 g7 G( B7 H& d* fAmazon 2017.09 and higher.# H! k  [3 i3 v+ Q  S% d; w5 ^+ Y
Centos 7.
2 S$ G& @( r, _Fedora 25 and higher (Fedora 27 recommended).0 P2 h& S) W# q1 n; K4 X, \, Y
Mint 18.8 T) Y+ v* ?  u" y: X
Ubuntu 16.04 (Ubuntu 16.10 recommended).* P! `4 n: t- P" |6 m/ D) l4 X
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).; x/ \, ~+ @' `$ w: ?2 O& R
配置要求:7 }/ g. w% S. D6 a9 X# u3 q
8GB 内存
0 O0 F& W. m7 q/ b20GB 硬盘空余空间- S' Z* u" r8 Q9 e
如果机器内存不够 8G,自动编译脚本会报错。: a7 g* _9 L% j% D3 j
运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。
6 n; L/ ^& H6 n& I, r, }6 [linux 命令基础: https://linux.cn/article-6160-1.html
4 ~- b8 p4 o9 E& `; ~1 f  Ogithub 基础: http://www.runoob.com/w3cnote/git-guide.html0 w! K: K1 r. n5 n% b5 h" r
下载 EOS 代码( W! d4 H6 Z9 Y1 N
如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。) u9 R. `4 M) U6 w$ [! Q# T7 z
首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:
9 m/ f& o4 f' g1 E( i2 ~git clone https://github.com/EOSIO/eos --recursive$ l. z1 m7 t+ G8 B0 Y
注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:- U+ _; d) i6 R* f- o* ?# \3 H
git submodule update --init --recursive1 G0 ]) m% c! t! p: i% S
构建 EOS
! _: M1 h# z3 P+ [; h. t0 ~有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
' y0 C# g! {3 `1 t" R7 v: x% W: Q1 y首先我们进入刚刚下载的 eos 目录,并执行构建脚本:* e5 [8 G. y  M! V" ~. s$ n
cd eos
3 t! V: K/ I4 Q3 O) M./eosio_build.sh  l/ H7 y$ E: z$ e, f
根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
& w' B1 p4 ^8 D" Z3 s2 O7 tLinux 系(Ubuntu等):4 Z' y8 c. b6 U* C, q
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
7 P# |# ?2 Z, z0 `' M3 J2 NMac:' k4 S! ^8 ^4 @3 U) v' d
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &1 E7 l( D5 W4 W& l
然后所有操作系统再执行以下命令:: p; o% o5 e8 ]% \) F
cd build
& l4 ]- p. S2 h+ emake test# _& ?# N8 {% f: }( K9 o
为了方便开发智能合约,还需要在 build 目录进行 make install:/ a; ]6 a% H5 R# C2 W
如果已经进入 build 目录请去掉 cd build。
& r6 a( f& |8 v% B# N  kcd build- g* V9 |/ Z6 @' s
sudo make install1 j+ r9 [9 T* |3 e2 o# W5 `
建立本地单节点测试网络
+ j. g# Q: @4 y构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:3 p4 j2 g1 N. q$ z. ~* N
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
5 F6 N) L: a$ @+ a4 i/ v/ h命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
* C: B* J9 P1 N3 T/ N8 c1 b/ _成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:) K1 p2 f% B. J, I9 m5 ]
1575001ms 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...
9 \/ L1 a* x" P7 x2 u- ?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...
+ Q4 C8 w8 O0 E; C说明本地的单节点已经开始正常出块了。- a6 [5 E( t8 Z+ a. F. i' F
我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。; Y  T* N: E% a

. P; Q# f$ ]6 P高级设置
2 L2 a7 g& D/ U如果你不满足于以上,可以对节点配置进行修改,配置文件位于:
" }% l3 z1 j; ^- ]Mac OS: ~/Library/Application Support/eosio/nodeos/config+ w5 C% G( k" B. P
Linux: ~/.local/share/eosio/nodeos/config
& I9 [5 |9 M  ?6 z( K. c上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。& X! P& t+ ^% J% R0 e5 M
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:! M+ l6 X, G9 t" P
    # Load the testnet genesis state, which creates some initial block producers with the default key2 s+ J! H3 Q. c/ y# {; g
   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
( ]: G! K! I' A2 [+ p4 U( e% x   enable-stale-production = true
" M& G; T9 x8 ?; k3 g& j   # Enable block production with the testnet producers
( ?/ F9 |1 u2 c3 t- u6 d, Q# |) |   producer-name = eosio   # Load the block producer plugin, so you can produce blocks8 r9 i0 o0 E! y* z) X  Z% I  M: _" |
   plugin = eosio::producer_plugin   # Wallet plugin: O- v* x( K" m. k3 _  G. U$ o
   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins
& Y. Y1 P4 M; I( |% p   plugin = eosio::chain_api_plugin5 L2 K  r! r* ?& k/ X: n
   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history& e9 H6 Z+ Q& d, M
   plugin = eosio::account_history_api_plugin1 k6 s1 q/ H1 O- ~; |3 |
这样配置好后,重新启动 nodeos,就会顺利出块了。
# k, g! C: m0 l4 r5 }% {nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:& z8 R! x0 L# G6 v
Mac OS: ~/Library/Application Support/eosio/nodeos/data
" \, A! B6 ]1 w- q9 o% GLinux: ~/.local/share/eosio/nodeos/data
) z0 H$ m  n) Q/ D1 j7 M! Z" N但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11