Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
159 0 0
EOS 系统主要有三个应用程序:* F8 Y/ h1 ~) f
nodeos: EOS 系统的核心进程,也就是所谓的“节点”。
0 }6 _1 B: L0 jcleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。! g+ h3 l: G6 o- X2 @5 p% F0 ?: M
keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。
- m/ O+ j6 H: J* x4 v+ ]8 W要求+ [. Y# L" F% |. @
本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。
3 d* d4 r& i1 YAmazon 2017.09 and higher.
' B9 w# J. T& FCentos 7.
; p5 z/ W0 Z/ X) ~  bFedora 25 and higher (Fedora 27 recommended).& t+ H2 Q5 P4 @2 P3 U1 X- w- f
Mint 18.
) }! N4 G8 U, x$ ]Ubuntu 16.04 (Ubuntu 16.10 recommended).
6 W8 ~) a% _+ i) o7 O0 o6 hMacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).
* O1 y& Z. A% A配置要求:
% G" s5 Q/ _: O2 n1 u1 @+ ]. G8GB 内存: t, n8 |/ ~0 p
20GB 硬盘空余空间+ E: Y: J) j- m; [' b0 b/ G2 G
如果机器内存不够 8G,自动编译脚本会报错。
9 k' W- ]+ p8 @$ U# I& J# P/ D0 O运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。
8 U7 E: f! P4 @5 e6 D- tlinux 命令基础: https://linux.cn/article-6160-1.html
! S5 I2 e# N6 v4 G3 mgithub 基础: http://www.runoob.com/w3cnote/git-guide.html
! T, d0 O' K+ L  ~; A下载 EOS 代码
, F( Q: u' P; z& T( j- w2 z0 q" \如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。
6 ~* p- N9 A4 I$ [* t$ _: R" a首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:
- j! \9 ]5 b# l$ E5 r0 d& M6 g) Ngit clone https://github.com/EOSIO/eos --recursive
) n# [2 M, F5 W  o0 l& ]  u; L注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:* u% L; d' W, R0 l! V3 p
git submodule update --init --recursive
# O$ ^0 y- R$ t: z; U构建 EOS
& X' i/ Z* D- j7 m$ r; _9 j# h  s有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
0 w' x2 r: X' }! m首先我们进入刚刚下载的 eos 目录,并执行构建脚本:4 j2 b0 J% H# i
cd eos
+ I8 X; U( _! Z( L( `+ o' ?! t./eosio_build.sh1 ~2 X, W$ u2 }: b" z* W0 K
根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:, F- {9 A! o. v( p; H" h
Linux 系(Ubuntu等):  a8 K/ c- L/ _# q3 x
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &/ g5 m+ \8 P! [' v6 I6 E
Mac:
" f2 ^& M2 s1 F( U1 g- g, c# E/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
4 l7 b, f8 R0 J( J$ }, i( t/ s' U- u" {然后所有操作系统再执行以下命令:$ X! @# W! j4 }% h% f1 S& j
cd build2 \3 B& {& q5 D' ^' R7 W
make test0 v7 U7 U" {3 v' _, Y; a/ e  A! T5 @( s
为了方便开发智能合约,还需要在 build 目录进行 make install:
, O- e! J; ]7 S- Q3 m+ R8 u8 E6 k如果已经进入 build 目录请去掉 cd build。
5 F/ ^9 S0 i% C& E& ccd build
0 s5 R" }& Z' G- u# Jsudo make install
9 I$ G4 E* W( y7 D3 b) O/ G0 O建立本地单节点测试网络
! i# g1 t% g3 K# f# z; j" `构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:
8 i! k6 z; T1 L. C; ^7 m7 v./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin   Z3 f  D1 C# E& Y! r4 u) ~, k
命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
  E+ A  g4 F) |7 K8 g- C成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:( q. m+ r. ~# E7 p9 E& |8 ^; ?) @/ j
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...; i3 y& c4 U" Z0 q4 ~. 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...
; n( R0 D; F' e. y" z# }/ Q说明本地的单节点已经开始正常出块了。
, c3 A6 w9 T( Y( {8 i我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。; J( R( V5 C6 ^' k

. z: H2 }$ d* i2 o! m& T# ^4 e高级设置
. ?3 I0 H' K7 s如果你不满足于以上,可以对节点配置进行修改,配置文件位于:5 E; M4 ?+ Q+ M
Mac OS: ~/Library/Application Support/eosio/nodeos/config2 P- Z2 ^) R1 g$ b
Linux: ~/.local/share/eosio/nodeos/config( {% B) v0 f7 W7 n6 s; a; `
上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。( G4 i$ m+ y: Y* j$ r9 S- J- W
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:
# S( v# ~0 j2 j% D5 B8 e0 w1 [    # Load the testnet genesis state, which creates some initial block producers with the default key0 _9 v9 c  j6 Y
   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
9 m* l/ f  Y/ Y$ c   enable-stale-production = true( a7 j) j6 m; K: P& d
   # Enable block production with the testnet producers
" i- G  U6 A  |3 M   producer-name = eosio   # Load the block producer plugin, so you can produce blocks
+ }1 U% a% ^% I$ v! s* M   plugin = eosio::producer_plugin   # Wallet plugin1 e9 }3 [* Q$ E. a& q4 l
   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins
2 t+ S; e7 R: ^- H, Z   plugin = eosio::chain_api_plugin
/ H- u; B3 h+ J$ R1 ^0 _   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history
0 E+ U; Y% C- q1 V: r   plugin = eosio::account_history_api_plugin
' n6 d% _# R2 z4 O$ \4 _. H, S: H" y8 D这样配置好后,重新启动 nodeos,就会顺利出块了。+ W0 X% Y" ?. c4 D
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:+ x( g+ n) g! U2 Y' z6 O* v
Mac OS: ~/Library/Application Support/eosio/nodeos/data  ?/ z1 |. B, [' t3 c
Linux: ~/.local/share/eosio/nodeos/data% L6 C: D$ v, a/ m0 X
但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11