Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
110 0 0
EOS 系统主要有三个应用程序:/ C1 ]  E: o* f5 ~) v
nodeos: EOS 系统的核心进程,也就是所谓的“节点”。
! N% v3 G; G5 X* Dcleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。
' n- h1 l+ z0 e+ X' Ckeosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。
, v; [2 Q6 P  x5 P7 d要求+ j4 j' }; C6 A1 v
本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。/ g* ~* A4 P/ }3 Z
Amazon 2017.09 and higher.5 `- m, Q. A) m
Centos 7.
3 w4 c  o* ]# q7 ]: j! E* XFedora 25 and higher (Fedora 27 recommended).
0 W+ f& w2 F* L- ?7 g6 [Mint 18." X  N- m1 F* e1 d& N
Ubuntu 16.04 (Ubuntu 16.10 recommended).& H* {# @5 J1 P5 z3 H
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).
$ Z# u$ ^2 P9 W5 H9 \: G+ y配置要求:# q: w* H2 C9 W8 @( o: y' N) q6 m5 Q
8GB 内存
: F) M. g1 v" {20GB 硬盘空余空间
8 S) p1 n& O7 s1 p$ n6 c如果机器内存不够 8G,自动编译脚本会报错。
5 V* j4 V1 n  _9 `3 o7 v  G+ U运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。5 L3 w. \0 T- @3 [
linux 命令基础: https://linux.cn/article-6160-1.html8 ^% _' R8 P9 Q  T8 S
github 基础: http://www.runoob.com/w3cnote/git-guide.html
* p8 J1 {+ }1 Q" m+ i下载 EOS 代码% h# Z, ~4 c6 r' c6 r+ p; W# h; _
如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。
! m; m& V. V' {首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:8 E$ _$ U/ m% f; e" a
git clone https://github.com/EOSIO/eos --recursive# M4 g* s) q# s9 j
注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:, e+ q  R2 b$ t9 G% V2 ?8 u* t
git submodule update --init --recursive
) N9 B( r! T& C- |构建 EOS
# L+ {: D" g- U+ E* g0 s有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
/ u6 W& a# U! U8 ]首先我们进入刚刚下载的 eos 目录,并执行构建脚本:1 |5 ^' B3 @4 H
cd eos
, D* ]' e) J) ~  h0 I' s./eosio_build.sh) z0 [; I4 B. ]
根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
/ |" i2 h: \5 r1 dLinux 系(Ubuntu等):! w/ [* ?2 W- ?" \  w% M% H5 ?
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
3 [0 U4 q7 _/ G/ f3 Z$ WMac:
4 l! ?: Y% l: i% t/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &6 s( e3 {5 g, \- t4 O; w
然后所有操作系统再执行以下命令:
7 L% J' O* L& [) r5 qcd build# n0 F( U: U2 H! |6 j. u" {4 ?1 C) l! u
make test1 W6 G! i+ C) j( p- C, f0 @6 T
为了方便开发智能合约,还需要在 build 目录进行 make install:
! B) ~& {' Q, x! I: y6 @+ H  O* l如果已经进入 build 目录请去掉 cd build。( T/ Q% L; N% C5 E$ I7 {  @
cd build
7 s4 p/ T/ X# m* J: G8 @sudo make install% [0 h* \- D: L/ D" i
建立本地单节点测试网络
+ U! T: p4 L5 s% b, X/ D' k- J构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:
* l3 x4 J  [4 B) N$ M3 j% |- x& N./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin * L6 w* k3 a$ x4 P, x* E$ p  v+ C
命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
/ {1 [* s" `4 z- w成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:" \3 I; X4 M% X* L8 L
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.../ ?4 G3 u& Q+ o' N
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...
9 n+ a0 ?( ^4 r2 v* v# t: o$ L& r3 ^说明本地的单节点已经开始正常出块了。( P1 G8 e& [1 e" W: D: j2 s
我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。; R7 L0 G( G+ O& A" m# {6 o
9 p' W7 ?2 h% |. `2 A6 v
高级设置
/ Q7 d  Y: B0 t3 J% v0 k/ y6 r& d如果你不满足于以上,可以对节点配置进行修改,配置文件位于:
/ E( M0 F, `2 o: E2 v! c. X* qMac OS: ~/Library/Application Support/eosio/nodeos/config
5 g3 N1 a: z* @% O! QLinux: ~/.local/share/eosio/nodeos/config# g1 ~& d$ V2 k0 \/ R
上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。( C  v0 k5 {3 X2 h
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:/ i0 ^2 _4 p$ Z, ~$ E( I
    # Load the testnet genesis state, which creates some initial block producers with the default key
7 X0 c( ]! y4 x1 U8 i9 M   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
" T  Y) j+ C/ j2 e3 a$ V. k: F& B   enable-stale-production = true. a0 S/ ?& p( H$ U  n# p+ N
   # Enable block production with the testnet producers3 A! h9 L- c9 q" I% G9 Z
   producer-name = eosio   # Load the block producer plugin, so you can produce blocks1 O6 q8 h* b) `* S1 l. |
   plugin = eosio::producer_plugin   # Wallet plugin
6 n( a) ]% X( V4 e- O   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins
; T* K$ k! b# s" v   plugin = eosio::chain_api_plugin
, e% f! v0 p8 P$ r   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history% H) }% _( h1 r! S+ m) a# E! I
   plugin = eosio::account_history_api_plugin8 p' G* |$ P1 j% V4 A) B4 a
这样配置好后,重新启动 nodeos,就会顺利出块了。/ r4 r7 R, y" ~5 Q
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:% u3 T% W- v% q2 r: `# ^7 v
Mac OS: ~/Library/Application Support/eosio/nodeos/data
1 Y+ k- ]; q1 GLinux: ~/.local/share/eosio/nodeos/data
6 L- w7 T5 T  k: @0 J. \但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11