Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
160 0 0
EOS 系统主要有三个应用程序:* E8 H- [: D9 b( y
nodeos: EOS 系统的核心进程,也就是所谓的“节点”。7 B; c' D" b) H4 e
cleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。
4 ]1 w0 l/ P2 y7 x5 ikeosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。( O  }+ r) R. s/ S
要求
3 q. v. W. h9 r' ?0 \本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。
+ m2 ~3 Y, R0 uAmazon 2017.09 and higher.
$ I4 i# S& r# i% |  Z. j( V* B4 L/ ACentos 7.
+ l" H# ?! z7 D6 o* l8 b+ CFedora 25 and higher (Fedora 27 recommended)." h5 V9 Z5 D; H3 b
Mint 18.
3 x( w  ?/ n% }& n! aUbuntu 16.04 (Ubuntu 16.10 recommended).+ g$ g; U, m7 ~
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).) d4 U, x6 N/ N2 z" C9 c
配置要求:2 ], ^  T/ x. t4 z
8GB 内存
) [& D0 g! w/ t+ J! }% y5 d20GB 硬盘空余空间
# h. u! D7 u, A, q9 T( P如果机器内存不够 8G,自动编译脚本会报错。
8 {, d9 A8 J6 Q) G" h  O" p6 s运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。
0 c5 Z! N! w! y9 k  A6 F$ p% jlinux 命令基础: https://linux.cn/article-6160-1.html
) \! P6 T, p/ s1 Z8 Fgithub 基础: http://www.runoob.com/w3cnote/git-guide.html
( o7 |7 }% J4 n( a! X下载 EOS 代码
8 ?3 S3 ^- D$ V, `) x如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。# ^) Z' P$ x5 `1 H6 Y7 o
首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:
! T4 n% Z( z! `! fgit clone https://github.com/EOSIO/eos --recursive
! |0 ^, [! r$ h- F* W% P8 N注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:" y! ?+ N' F$ o. ]# U
git submodule update --init --recursive
9 f2 k; \, ~& Z: B8 \构建 EOS; y8 c! X. H6 m! m. v* q% N0 ?; U. m
有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。0 H+ ^3 d! L& a) C* x4 y
首先我们进入刚刚下载的 eos 目录,并执行构建脚本:
7 @2 B: J# h  ~5 Y4 U( G' Q' Bcd eos$ U4 k0 B( H$ x: J
./eosio_build.sh+ _% Q: F/ u- j5 O# ?
根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
) f& Z( w6 Z7 |+ b0 }Linux 系(Ubuntu等):3 a8 f7 v* v! @' p" t
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &: s5 f/ Y9 K6 m3 t' Z- n
Mac:
7 o" y9 P6 J" r/ x2 ]( T4 k; L( B/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
; t( y$ N! C% n  [1 t9 r然后所有操作系统再执行以下命令:
2 c7 Z. M& D+ @cd build
# Y, S. e0 W( N) j! h, ~make test3 g, Q" t) H0 C* _( L
为了方便开发智能合约,还需要在 build 目录进行 make install:2 w* }2 v* N7 D4 g% @
如果已经进入 build 目录请去掉 cd build。
+ N1 \) _+ |1 C: U8 D8 ^6 jcd build
* m! ?7 X$ t8 r2 w$ v7 Ysudo make install
; z- E' l0 d: ?建立本地单节点测试网络
* t. @, U; Y( y构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:# f* ~1 K; q) m7 w" u* v/ A
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin " C. I3 {; ]1 i6 d
命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
' s6 T! N. J5 v+ T' k/ Q" Q成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:9 N; P( k0 C/ H* j! F( `9 a
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...
. u1 R+ q8 X; r$ Meosio 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...8 f: u* j) ?" f3 P8 L9 \7 l! A
说明本地的单节点已经开始正常出块了。# H; a) w8 B. {+ i& C. |1 q
我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。
% k& k- N/ r6 c+ O$ k# e- q; T' R9 k& E6 I7 m
高级设置
) U3 d4 u; K7 h, v& f. N9 s! C如果你不满足于以上,可以对节点配置进行修改,配置文件位于:% O, t1 r3 y$ j
Mac OS: ~/Library/Application Support/eosio/nodeos/config
1 G4 R! [/ [. {6 JLinux: ~/.local/share/eosio/nodeos/config% u* y; T3 t. j5 O- G- D' n
上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。6 T+ F( w2 ^% k: t
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:: Y$ R. }, K$ U
    # Load the testnet genesis state, which creates some initial block producers with the default key/ H$ u6 _# W, M; d
   genesis-json = /path/to/eos/source/genesis.json   # Enable production on a stale chain, since a single-node test chain is pretty much always stale6 B! B1 ?1 L2 f; C0 P
   enable-stale-production = true; b0 g& H  \2 n5 ^% @& Q5 e5 X
   # Enable block production with the testnet producers9 S- X" G* s) P8 V0 F2 N1 o1 n' U
   producer-name = eosio   # Load the block producer plugin, so you can produce blocks
& F$ |( q6 ~- S1 J   plugin = eosio::producer_plugin   # Wallet plugin% l! d! q5 `4 g! H& C3 e. E
   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins
7 p% Y( }; e0 t. p: s   plugin = eosio::chain_api_plugin2 O( n! \& X8 W/ R) w  q0 w7 Y
   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history
# m  T) F1 K1 R   plugin = eosio::account_history_api_plugin
6 L! I2 F5 b0 Q. E- l8 m  z这样配置好后,重新启动 nodeos,就会顺利出块了。
" }5 ?) a  l8 |4 Hnodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:
. U/ h' f& H# z, y+ N/ gMac OS: ~/Library/Application Support/eosio/nodeos/data- |  e  @7 ^- B: z  ]
Linux: ~/.local/share/eosio/nodeos/data
4 Z2 D0 Z" q) z% J) O! g- ]但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11