Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
128 0 0
EOS 系统主要有三个应用程序:
2 Q  d1 E( J# ^( u. X' C" v% Lnodeos: EOS 系统的核心进程,也就是所谓的“节点”。. b3 o6 n, X) l
cleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。' d! f& `; A- i) f1 R
keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。' p& X8 |. H# N
要求
- j( F# H7 ]- R: g2 h0 @) e本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。
$ ~6 B- F/ d  M$ iAmazon 2017.09 and higher.
% ?% v: l$ ?. WCentos 7.
! v2 k$ h: f. `9 ^. g( H2 uFedora 25 and higher (Fedora 27 recommended).
8 z- I6 @$ e. a$ R7 z( PMint 18." Y7 D; o- Y$ b2 r
Ubuntu 16.04 (Ubuntu 16.10 recommended).  z. l+ g$ X" D5 X' _
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).. \* ~0 W! B- _
配置要求:
! N! d) r# [# `8 q; @8GB 内存
5 h  Q3 w# F3 T& e% k- n20GB 硬盘空余空间2 s7 ?+ ]! W! Q* s
如果机器内存不够 8G,自动编译脚本会报错。5 Q$ z6 W7 z9 k% e4 r" ?
运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。
5 A9 z7 }4 v8 p/ mlinux 命令基础: https://linux.cn/article-6160-1.html, M* L) k' K" d, y- w' ]
github 基础: http://www.runoob.com/w3cnote/git-guide.html( F8 p! p! i9 E  ~1 n4 n4 L' K9 M
下载 EOS 代码5 X* r4 e+ E' s! D
如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。& F5 M- k; u3 B4 ?& K0 U# I' t; `
首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:
7 V  D" Z+ y, h2 g6 R6 n* i+ ]7 pgit clone https://github.com/EOSIO/eos --recursive
6 l* g# ?3 e& z2 T' H& c" v注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:7 {9 G9 C8 o4 ~. I; O
git submodule update --init --recursive
8 V" E0 y0 m( U* P构建 EOS
; Z/ A( _: b: o0 K) G有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。: L* d; p# c2 S& F/ g3 n
首先我们进入刚刚下载的 eos 目录,并执行构建脚本:6 Q/ T3 j+ }* X/ k6 \( a
cd eos
; N4 }  G, O* o+ J6 k* J0 a./eosio_build.sh
0 |6 x( Z8 S" w. K1 E- h3 W根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
2 |6 i5 d: e6 w' L1 k' j9 VLinux 系(Ubuntu等):
" D3 F  I- ^/ D# ^) q~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &) S( R$ f' n6 B4 `2 l
Mac:
" N. B1 X% l( b9 k9 l" t/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
2 J" R- {( ~, K5 i6 }* i( w) d. D; c. ^然后所有操作系统再执行以下命令:
3 D2 `, G7 h5 \4 w& f4 l4 E2 `3 Kcd build6 F: v* L3 ]2 J$ }
make test, o/ x+ s% {* g9 I, z
为了方便开发智能合约,还需要在 build 目录进行 make install:& R) `" L1 {* F' _& i# D7 d0 L2 j
如果已经进入 build 目录请去掉 cd build。" q% t) u, k2 \  t
cd build
$ `, ~3 T' y" y( psudo make install) O6 }# n) I( `: P& |# C2 B- i
建立本地单节点测试网络; m" O7 j) [* r0 r5 t  t; S
构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:
$ Z7 ~) J+ f' g1 X./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
& [8 S/ `& i- ^1 k命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
% ^3 [2 f+ {9 T" Z成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:5 C9 e# B. {6 E% T! E; z
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...
' }2 w- V! w* Ueosio 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...
: j: R' T. Y: z- x  e说明本地的单节点已经开始正常出块了。9 g; y7 s# q( N7 @- T, g! v* d
我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。4 q7 S  m4 f* I
: y, [) [) n7 W; _2 F
高级设置4 ^3 A- o; T! j5 [6 }# I8 \6 l
如果你不满足于以上,可以对节点配置进行修改,配置文件位于:
* D6 \3 F. a+ W7 h% K$ o- vMac OS: ~/Library/Application Support/eosio/nodeos/config
$ [. l1 D! P9 A5 u; L$ TLinux: ~/.local/share/eosio/nodeos/config
  D/ q; \' \1 E( Z% ^7 J) ]上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。0 H+ }, ?6 d% ~: K0 R" l0 S: F
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:
* U, r5 x7 Z8 p3 D    # Load the testnet genesis state, which creates some initial block producers with the default key, [2 e6 R' _+ M! |* D/ Q- J
   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
" U- z3 ^: K% p0 ^! w+ _% e* b   enable-stale-production = true5 ^; q# N( ?8 L; p! j
   # Enable block production with the testnet producers
5 J5 w* i5 m% P, |+ D6 i   producer-name = eosio   # Load the block producer plugin, so you can produce blocks
# r( b4 r2 S$ @* N8 j7 Y   plugin = eosio::producer_plugin   # Wallet plugin5 C3 X9 ~8 w/ b) ~  i3 }
   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins7 j8 |% F& |8 F1 ]! {% g: ?
   plugin = eosio::chain_api_plugin
# S/ |" p8 d/ e& L9 @   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history
8 w4 t3 f' X! S( ?9 }# _  G$ F   plugin = eosio::account_history_api_plugin& D( |& X, F" q  I
这样配置好后,重新启动 nodeos,就会顺利出块了。5 M  s6 F5 Q8 p, p. W' K2 \
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:
& q3 ^/ \6 j- B( |9 i. aMac OS: ~/Library/Application Support/eosio/nodeos/data
0 y3 ?4 ?+ i6 ]  O( |Linux: ~/.local/share/eosio/nodeos/data5 i) ]5 s2 q4 a( ^* Y
但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11