Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
113 0 0
EOS 系统主要有三个应用程序:
; F# q0 s! F- p# ^0 W) onodeos: EOS 系统的核心进程,也就是所谓的“节点”。. u% i8 [+ T- l
cleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。
* e; l7 ]- G: q5 ^) ~. |keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。
5 \4 h: ^' ?5 @2 E  ?要求
; X# ?4 |/ ^% e, e# F本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。
( a, W+ M$ Z1 `" ~8 b. gAmazon 2017.09 and higher.; }' V* C  q( h1 `% w4 F) `
Centos 7.3 l' e% V9 u/ z
Fedora 25 and higher (Fedora 27 recommended).) [; b" b; A; f$ x% c
Mint 18.
, i' q* S  p0 j7 |1 m2 J# bUbuntu 16.04 (Ubuntu 16.10 recommended).& s/ E. w7 k) T7 J: R- h( c
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).
+ u. J6 H4 x! t, r' w+ u配置要求:" g7 E" D% z0 j- M* [
8GB 内存
# U! o5 {& q: t# Z20GB 硬盘空余空间8 k/ x# U* v: ^' U% z
如果机器内存不够 8G,自动编译脚本会报错。( n9 b: ]- R7 K( G* U8 ]* z8 d
运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。
% a. B( p1 o: ?4 u' s' vlinux 命令基础: https://linux.cn/article-6160-1.html
6 r# B  n& M2 r4 Y2 ^  |github 基础: http://www.runoob.com/w3cnote/git-guide.html0 J; O8 {& n3 ^( `
下载 EOS 代码% J) N! m( L7 M/ {+ W+ J
如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。* T+ x$ `+ p8 N( @
首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:! U: Y+ ~/ T' `+ s: S
git clone https://github.com/EOSIO/eos --recursive
; S+ @% P+ M* Z, \% @: h注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:
# Q  e- y  P  o& M, \  O5 agit submodule update --init --recursive) d5 p8 Y7 O# C% c% s8 G$ z0 ?
构建 EOS
# N. s6 A6 d5 U8 ]- }7 a3 L有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
/ J& v8 C. X$ b0 `0 R$ x& |首先我们进入刚刚下载的 eos 目录,并执行构建脚本:6 i- ~( u& p7 q3 w/ J3 R- E- E3 p, u
cd eos
0 B3 q1 c7 A# [  l6 u) Q./eosio_build.sh
5 d5 @3 X0 W0 u6 z2 Q根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
, j) T/ P# C. k& ALinux 系(Ubuntu等):: V9 N( L8 ~/ _6 D8 e! J
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &9 G5 X* C) m) W. y9 {2 _0 {$ p6 |
Mac:
4 C! N4 I# j- m% ^+ s; J/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &9 r6 c/ F. z% t5 B6 c9 T2 ^
然后所有操作系统再执行以下命令:
+ \0 Z0 U; a; q% L1 O2 G7 H- Vcd build# ^! Y1 M. k( q2 i3 c+ x3 N: V
make test
8 {" E) I, O: |) S6 u# S, W为了方便开发智能合约,还需要在 build 目录进行 make install:
0 x) Z1 r# B" x6 P* @$ s如果已经进入 build 目录请去掉 cd build。) N  a  h5 @3 U8 q+ ?  a8 g) {
cd build
) I3 \3 J7 V3 f0 m- msudo make install
$ J; @8 U" g3 O9 m2 T建立本地单节点测试网络
' h: j, ~% h; ^4 G2 f( i3 U  d构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:" W( d* X. l2 H7 f
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
- ], l6 R3 U7 s( d7 X命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
, _$ q8 q$ r( j8 u& W6 @成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:: l8 L* l: l) R, n# V
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...
5 Z- C# x8 s' }' U8 Q$ Weosio 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 [3 T7 P6 F8 R& N说明本地的单节点已经开始正常出块了。4 N4 h( y& r4 b2 z2 b* a" x
我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。- [6 w  [. R$ O: R
4 v& B3 t, r0 o
高级设置0 g3 O( w, o% C) G2 |
如果你不满足于以上,可以对节点配置进行修改,配置文件位于:
3 g5 {/ r9 x. q5 A: zMac OS: ~/Library/Application Support/eosio/nodeos/config
4 a: ~  Y0 x" k. R  g+ H9 WLinux: ~/.local/share/eosio/nodeos/config
$ T' [! N/ s2 M$ C( |: p% k& H上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。& ^3 a; o4 S) p3 [, @% g- a
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:
2 t8 c/ J4 R9 [4 {    # Load the testnet genesis state, which creates some initial block producers with the default key
5 [) Z' s' m) Z4 o  u* P   genesis-json = /path/to/eos/source/genesis.json   # Enable production on a stale chain, since a single-node test chain is pretty much always stale1 S. \2 z+ }) Y) \8 f1 N" S8 c6 h" ]
   enable-stale-production = true8 g6 O7 V* q, B; j
   # Enable block production with the testnet producers; Z, _, |9 e" [- `; u( [+ b9 n& `
   producer-name = eosio   # Load the block producer plugin, so you can produce blocks
2 Y; y: R" `1 m   plugin = eosio::producer_plugin   # Wallet plugin
& `1 X) F# Q0 S- p. I# P$ _   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins8 n8 T* Z* a$ \# v/ W* `0 Q2 N
   plugin = eosio::chain_api_plugin" g) \4 D9 U- c7 C& e# }, q6 J7 _
   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history2 K) s; {) L8 \- A
   plugin = eosio::account_history_api_plugin, P" z% d# u0 Y+ h6 D% t8 m4 h7 Y
这样配置好后,重新启动 nodeos,就会顺利出块了。# d- Z1 |) O7 `5 z) u8 E
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:
: o+ B( ?7 G" w' SMac OS: ~/Library/Application Support/eosio/nodeos/data
6 X( g9 r2 q: |' t6 p/ r6 ILinux: ~/.local/share/eosio/nodeos/data* @) y' [: }  m* P) t6 z; q+ ?9 Y
但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11