Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
112 0 0
EOS 系统主要有三个应用程序:. O6 m. C; G* T1 X
nodeos: EOS 系统的核心进程,也就是所谓的“节点”。
' M2 h2 c/ D0 Kcleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。0 \9 v4 A% |! ?6 f" r3 H7 h
keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。
9 n3 d( Z7 F% H# x5 d8 Y7 L要求
# U) T* O* Q: ?4 s* o: y5 g$ G本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。7 Y8 ~) ]0 `. o1 u& z" J
Amazon 2017.09 and higher.1 E5 N& m3 `2 k4 n0 A
Centos 7.
2 k' k" r  m$ {5 l0 p0 m6 TFedora 25 and higher (Fedora 27 recommended).
, E1 x5 k: n5 c1 _9 GMint 18.1 `8 D" R/ g2 F4 h
Ubuntu 16.04 (Ubuntu 16.10 recommended).* a! |3 s- m1 o; [; M$ C  ?( c! _, f: M( A
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).
6 v! m7 t0 p/ z, A配置要求:
2 _! b( K$ _. f8 P; `0 j8GB 内存8 m6 T. u! H, T! x% o* j" e
20GB 硬盘空余空间7 I2 b5 ?* @# K7 ~+ g  j3 c
如果机器内存不够 8G,自动编译脚本会报错。: Y4 r9 N+ O% W/ K9 F5 R! P/ k! j( m- T
运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。+ j& e7 P  m  l. K
linux 命令基础: https://linux.cn/article-6160-1.html
8 B, Y& u2 i+ T$ Pgithub 基础: http://www.runoob.com/w3cnote/git-guide.html* N4 }$ A6 A( I3 U
下载 EOS 代码
0 W' u/ L& f" X( P* N& U: p  n如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。
6 H4 Q3 I7 w- S' S& n首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:" G1 G: V4 v! z; A: u0 i
git clone https://github.com/EOSIO/eos --recursive
* Y9 R, o) N8 \: {5 M, {4 ]注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:% R# P# J6 i( J  H
git submodule update --init --recursive
4 S0 G/ ]) {; y; J1 F构建 EOS& b: N& F3 x% @
有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
: p5 q$ N% D- Q4 H$ A6 q7 X首先我们进入刚刚下载的 eos 目录,并执行构建脚本:; \- @, G& ?% m" Q
cd eos
. h( l/ M' |" h: [: j  m./eosio_build.sh
1 G& [, G$ U4 ?9 K; O根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:2 A: s4 g' G( `( t4 F! {2 i# n8 r
Linux 系(Ubuntu等):
6 W: \) r; y4 J7 \~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &$ K# y& Z  y7 R; h, c
Mac:
* [; v8 U# j- Q; K! ?# o% b/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
* g1 r! T: z2 t% U% x然后所有操作系统再执行以下命令:# V, R/ y' }$ v3 j
cd build3 z9 E) y- Y7 Z& u1 Z
make test4 a8 f. |. z' j  C$ u
为了方便开发智能合约,还需要在 build 目录进行 make install:2 d- D5 r6 F5 q. _% @/ J/ y
如果已经进入 build 目录请去掉 cd build。
. K# ?7 ]' P6 B8 ]  g- ]cd build" @7 V# d* U: i) c( T6 \! ]: j1 }6 O
sudo make install
- s/ P7 d: ~* {+ [  v建立本地单节点测试网络
1 n1 |3 W! Q; V( n8 s$ f构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:
$ A+ s* L0 E( f./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
! `6 w! U. |# z2 N9 \命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
) {' d* b; j; d- K) K成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:
, n5 h% A% E' U7 V1575001ms 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...3 o2 J: P9 q2 J. [
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...
' r' [- D, C0 G# N说明本地的单节点已经开始正常出块了。
3 |9 X1 @+ b) ~* [& }+ Z( |我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。
' T; `" o0 B8 c8 {
4 h! v, W( h! _高级设置# q5 S7 m- T( r9 |9 e* r
如果你不满足于以上,可以对节点配置进行修改,配置文件位于:: K* X3 I, J: g5 Z' S
Mac OS: ~/Library/Application Support/eosio/nodeos/config2 o, E, D; ]* u4 k  l
Linux: ~/.local/share/eosio/nodeos/config
, s- T4 a; O, Q, r% {$ \上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。
& S7 a8 J/ o! v0 y5 w: I2 ?配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:  B. o& y3 a* o1 M
    # Load the testnet genesis state, which creates some initial block producers with the default key8 e7 u2 M" d( q, ]' f
   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
# [7 f5 g$ c6 N0 m0 B0 u   enable-stale-production = true3 t9 `/ H/ z# A# m+ {6 b5 ?! P
   # Enable block production with the testnet producers# W7 H# @" s, S9 @. d
   producer-name = eosio   # Load the block producer plugin, so you can produce blocks
( m( x/ A# q+ B; V) H   plugin = eosio::producer_plugin   # Wallet plugin" u0 r. k* A5 X' o
   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins. }2 E; Y4 q9 U* I
   plugin = eosio::chain_api_plugin1 P( N, m. E( K
   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history
0 {. ?# t5 H! L4 A% d% [1 N   plugin = eosio::account_history_api_plugin
! k& b2 t2 v  X3 k; `3 w1 }. N5 H这样配置好后,重新启动 nodeos,就会顺利出块了。. z! C, O9 c; L4 N
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:5 X  n4 h5 A; P' ]( a
Mac OS: ~/Library/Application Support/eosio/nodeos/data0 T; p+ d+ w) t: j- S  f
Linux: ~/.local/share/eosio/nodeos/data
9 G; |9 P1 Q0 O但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11