Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
114 0 0
EOS 系统主要有三个应用程序:
/ Q. p  J: e. k9 B4 r. C: E" Anodeos: EOS 系统的核心进程,也就是所谓的“节点”。
/ {; {' i* e: d" w9 E, Vcleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。6 M$ y9 G9 z6 S# F, d0 A. |* e
keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。7 k( v5 P, r, b
要求
9 N  _' @/ R8 Y4 X8 U/ v本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。+ J& q# y; `& z1 U8 Y! z
Amazon 2017.09 and higher.
' P4 R8 F- [8 i1 u( YCentos 7.
1 v: |* X; W0 i, U- ^Fedora 25 and higher (Fedora 27 recommended).
' t+ R; M3 ?2 }+ a, r6 SMint 18.0 P  U  O. ^/ W& E, \2 u  N
Ubuntu 16.04 (Ubuntu 16.10 recommended).. F5 e& p* G% G9 \$ s" @
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).) V4 q# n  {7 o, k! p
配置要求:: e; W0 ?8 W# }/ Y" `5 ?* W% k
8GB 内存: j; p% R' ^) Z% f
20GB 硬盘空余空间0 B  O3 z" u, d% X% x
如果机器内存不够 8G,自动编译脚本会报错。
6 f" S7 l' h% i8 t4 O/ D9 t运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。
! Y2 d7 q5 h/ v8 o  Olinux 命令基础: https://linux.cn/article-6160-1.html" S& Z0 @5 |$ k* z7 N& p
github 基础: http://www.runoob.com/w3cnote/git-guide.html
' K8 |8 D8 ^+ D( T下载 EOS 代码
. M6 U0 _6 [. D1 O0 Z  u$ k如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。
( H$ ]3 v/ N  ^( @8 G0 P首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:
+ g+ L9 z3 ^- Y! I0 ~3 ogit clone https://github.com/EOSIO/eos --recursive
! p0 G  f  ?7 ~* S3 S' e注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:
3 |+ e5 a! ?! W+ w. }git submodule update --init --recursive
" F! H2 `9 B/ z2 `4 [3 s. k构建 EOS! |# H. h+ v8 W" K
有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
" M& ?, Z5 G4 f2 W" \5 F, q首先我们进入刚刚下载的 eos 目录,并执行构建脚本:- v, ?$ C" y& J
cd eos
, S1 ~& N( N2 @4 M1 ~! u./eosio_build.sh2 H  e' @: B8 n! u4 y/ D  ^
根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
; o, x  M8 A+ A6 t- k9 fLinux 系(Ubuntu等):
' ~, y( z3 `6 `5 h3 a! q8 F~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
7 w4 `" k7 u' W9 K, B0 S. KMac:9 i9 i5 }+ `: d" V( @1 k! r
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &2 T" ~9 J  o" i. a: j1 O
然后所有操作系统再执行以下命令:
( T* I3 D/ [( }- U3 `& }  ]5 Pcd build
1 y! C: o3 }5 f; Tmake test& D* D' c" E; @6 D- O
为了方便开发智能合约,还需要在 build 目录进行 make install:
- N" P, S) V9 {1 ^* Q. d2 n) e- C如果已经进入 build 目录请去掉 cd build。4 M4 s5 R9 n3 H8 @% x* p
cd build
# t2 V5 G& z2 @sudo make install
2 j3 a8 }* ~5 Y  a: @- \. i建立本地单节点测试网络
, ~4 t- _: D# |- q- @0 f, d构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:
* v8 A: C0 b+ V& S  `./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
: D) X1 j4 ^" l1 j/ i4 `命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
7 J; B, K) z8 a9 d0 L成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:8 ~' U1 z- x2 s, Q7 u& d
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...
3 @! ]) X6 s8 O0 B) geosio 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...! f. W" b+ i$ @
说明本地的单节点已经开始正常出块了。+ g5 K( k1 G$ Q: v0 a7 P, `
我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。! Q& o5 t# k3 Q: r! x
' i0 q  t0 l7 q* {) l; O
高级设置3 f7 k9 T' N4 @0 O. k  \; c1 L9 H9 _
如果你不满足于以上,可以对节点配置进行修改,配置文件位于:
6 t5 E1 r, N! e9 NMac OS: ~/Library/Application Support/eosio/nodeos/config
7 A3 _; d/ j  cLinux: ~/.local/share/eosio/nodeos/config
% O: D# z' M. x4 Q, L  J1 k上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。
. d1 X+ @9 @6 E6 U) O: }. w配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:
6 C0 s) F- f1 `  i- z" i/ T    # Load the testnet genesis state, which creates some initial block producers with the default key
9 {/ H5 {! |" n6 N7 }" e! v0 h2 w! Q   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) z8 v: _  J6 @/ Q7 h1 ?; [' M. T! f  Z
   enable-stale-production = true5 N  \. M' P4 z3 r5 J, L& r
   # Enable block production with the testnet producers7 s+ H# M5 }% K$ c  F5 G8 m
   producer-name = eosio   # Load the block producer plugin, so you can produce blocks: x* O6 w3 R! X4 P& O# K
   plugin = eosio::producer_plugin   # Wallet plugin
( M. `6 k* t8 W0 k   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins
5 @( {4 }# ]( Q* _8 h% G/ P3 T   plugin = eosio::chain_api_plugin; U. Z9 C& [; g
   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history
0 h# @: n2 Z8 w: x; L0 x$ ^  m   plugin = eosio::account_history_api_plugin- {6 o- ?; D! V1 K
这样配置好后,重新启动 nodeos,就会顺利出块了。) y) j" N) ]$ e3 c
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:
$ h/ J) }$ g, N; d" yMac OS: ~/Library/Application Support/eosio/nodeos/data: {. u7 C. J$ x; v
Linux: ~/.local/share/eosio/nodeos/data! i. M9 s* Y* |4 z; w
但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11