Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

从零开始运行EOS系统

飞儿506
109 0 0
EOS 系统主要有三个应用程序:
$ i1 G1 h6 {( Qnodeos: EOS 系统的核心进程,也就是所谓的“节点”。
) Q  q2 d$ z/ D' P/ s3 xcleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。. n3 U% A. ?$ ~- }2 l1 p2 a
keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。
' c; u/ i  `1 I, U  u2 P1 h要求' I) L; q$ X0 ~& k5 o4 L
本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。
" i0 S. ~( S; W( c5 z  N3 mAmazon 2017.09 and higher.
* j; `( \9 O& y3 O+ l+ k5 `5 JCentos 7.
0 Z4 b( W0 L. s3 gFedora 25 and higher (Fedora 27 recommended).
8 v, t  \% S( T& |( w0 bMint 18.
# ~1 O) @5 ]5 {: @' bUbuntu 16.04 (Ubuntu 16.10 recommended).2 l% P1 r8 ~4 ^! o; v. N. k
MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).
$ m$ n3 l3 \. g6 U9 _/ ^! y配置要求:
- ~% J9 W! n4 s8GB 内存" Z& I: r, c7 N; V7 H
20GB 硬盘空余空间
- x1 J! O. F# |如果机器内存不够 8G,自动编译脚本会报错。3 S" y+ E( |8 O+ j8 _
运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。
. D  `% J4 @; Qlinux 命令基础: https://linux.cn/article-6160-1.html
% P: [) |/ a. J- S6 D. W/ T, Wgithub 基础: http://www.runoob.com/w3cnote/git-guide.html: b: w6 `; H* P8 _
下载 EOS 代码3 @' J: A2 z/ J- B
如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。
& |! O( q) h7 u* [, v! t首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:
8 _" o3 q( E& y* K' i0 N) e& p6 Vgit clone https://github.com/EOSIO/eos --recursive! t# C5 `& ?$ i; J- V: ^0 i
注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:8 s7 o. }  A# s/ u- S8 v
git submodule update --init --recursive
0 S! F! H. ~' A, d* x1 \) g( |1 z构建 EOS
5 v2 h' A$ M. ]! g$ H4 `7 o/ E有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化。
; ]8 X6 q+ [9 k5 o" h首先我们进入刚刚下载的 eos 目录,并执行构建脚本:
! J: r2 T' x' p" Q4 ycd eos
* V8 H; b5 U: e./eosio_build.sh
- Y0 P/ @& [' x" r根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:
) R4 |$ p5 [) z) D; V. h( Q: j3 GLinux 系(Ubuntu等):* s+ w2 B' R/ W1 |5 _9 l
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &1 o6 @7 @/ v) X5 m
Mac:
; m- U8 ^/ {9 X; B7 _# N/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
+ u) d4 [& q, |2 _6 G$ R# n然后所有操作系统再执行以下命令:, @5 y/ Y& h9 ~% j; `
cd build
$ O. w/ o% j2 @, V9 d7 [make test5 Q- ^/ f% R% q! D$ b8 _  D
为了方便开发智能合约,还需要在 build 目录进行 make install:4 H" X9 E$ P  N) e) ^( k: S: u
如果已经进入 build 目录请去掉 cd build。
, i5 y1 A6 `' ~. q( d9 `cd build
1 j. G6 z8 a- a% ^sudo make install
0 N, s4 S- a" j8 Q* _) h  R( o/ [0 w建立本地单节点测试网络$ |3 B; r- j2 M: j- Y% X
构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:& G0 Z) b; J2 k& {4 _
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin % U& y) T. u( m9 g5 _; p
命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个plug in参数是选择加载的插件。
6 r) w: T3 M$ \* @2 B8 J% P成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:
1 l4 n- H$ i4 w6 L# w9 I2 J1575001ms 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...
" v, z* w0 U$ p% }$ j  i: N- Yeosio 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...
. W' j0 M' P: }7 L% n9 l说明本地的单节点已经开始正常出块了。
3 S  ]8 z' E+ N% _2 {我们建立的本地测试网络如下如,并没有单独的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。* I0 B. Q) z1 q1 S

& ]# u- h' c( m1 ]高级设置
$ Q. `' B) h+ E: P6 e如果你不满足于以上,可以对节点配置进行修改,配置文件位于:; ]7 O1 H& C6 f9 R* O1 T
Mac OS: ~/Library/Application Support/eosio/nodeos/config
, y1 R9 w( F, hLinux: ~/.local/share/eosio/nodeos/config, P! N  S9 o2 s# D6 T2 W* ~/ g
上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。, Y: W1 g  Z! t5 v/ o1 d
配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:! e: t! \) S+ k8 X% Z9 B; D  u
    # Load the testnet genesis state, which creates some initial block producers with the default key
; a" [, x& v/ F7 H$ r2 B   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
2 I( \5 w* c9 H0 K- m   enable-stale-production = true
" j0 N1 B$ o8 h! o( p5 ~   # Enable block production with the testnet producers
' E6 }  ^7 O$ ]   producer-name = eosio   # Load the block producer plugin, so you can produce blocks
2 j0 V) u1 |6 [0 C/ O   plugin = eosio::producer_plugin   # Wallet plugin
7 W8 g! |6 G' A' d1 ]   plugin = eosio::wallet_api_plugin   # As well as API and HTTP plugins
9 W* ?$ [5 X; m3 X! q   plugin = eosio::chain_api_plugin
) {6 r7 O: R% E  q7 u' N   plugin = eosio::http_plugin   # This will be used by the validation step below, to view account history0 s3 w. g; \6 H5 x
   plugin = eosio::account_history_api_plugin1 L$ {5 E( {+ i4 M
这样配置好后,重新启动 nodeos,就会顺利出块了。* U/ J# J) g7 j; r( @* X
nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:# R  p8 w" K; b
Mac OS: ~/Library/Application Support/eosio/nodeos/data  U" M% a; g; P* C0 }
Linux: ~/.local/share/eosio/nodeos/data
+ }0 R/ o. r" E/ _+ s  ]: @& A但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

飞儿506 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11