资讯专栏INFORMATION COLUMN

【许晓笛】从零开始运行EOS系统

zoomdong / 1459人阅读

摘要:成为最早一批运行的人复习一下上次文章的内容,系统主要有三个应用程序系统的核心进程,也就是所谓的节点。建立本地单节点测试网络构建完成后,我们进入目录使用和命令,运行节点程序命令中,参数表示使用了账户的权限,这是本地测试系统提供的原始账户。

成为最早一批运行EOS的人

复习一下上次文章的内容,EOS 系统主要有三个应用程序:

nodeos: EOS 系统的核心进程,也就是所谓的“节点”。

cleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信。是用户或者开发者与节点进程交互的桥梁。

keosd:本地钱包工具。可以管理多个含有私钥的钱包并加密。

要求

本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑。安装 Ubuntu 虚拟机有关教程大家可以在网上搜到。

Amazon 2017.09 and higher.

Centos 7.

Fedora 25 and higher (Fedora 27 recommended).

Mint 18.

Ubuntu 16.04 (Ubuntu 16.10 recommended).

MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended).

配置要求:

8GB 内存

20GB 硬盘空余空间

如果机器内存不够 8G,自动编译脚本会报错。

运行 EOS 需要一点 linux 和 github 基础,不过不要嫌麻烦,以后开发 EOS 合约需要大量这方面的知识。推荐你先按步骤搞起来,有不明白的可以参考以下文章。别怕,谁也不是生下来就什么都会的。

linux 命令基础: https://linux.cn/article-6160...

github 基础: http://www.runoob.com/w3cnote...

下载 EOS 代码

如果你是 Mac,需要先下载 git,可以搜索 “Mac git” 就能找的各种文章教你在 Mac 上安装 git。

首先使用 cd 命令进入你想安装的文件夹,我一般就是根目录了,执行以下命令下载 EOS 代码:

git clone https://github.com/EOSIO/eos --recursive

注意要加后面这个 --recursive 命令,因为 EOS 有几个子模块,这样就能全部下载下来,如果忘了这个命令,使用下面的命令可以补救:

git submodule update --init --recursive
构建 EOS

有了源代码,我们就可以构建我们本地的 EOS 程序了,EOS 官方非常体贴地为我们准备了自动构建的脚本,使用这个脚本可以大大简化,首先我们进入刚刚下载的 eos 目录,并执行构建脚本:

cd eos
./eosio_build.sh

根据网速和机器性能的不同,可能要用 30 分钟 - 1 小时的时间,请耐心等待。构建完成后需要对构建的产物进行验证:

Linux 系(Ubuntu等):

~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &

Mac:

/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &

然后所有操作系统再执行以下命令:

cd build
make test

为了方便开发智能合约,还需要在 build 目录进行 make install:
如果已经进入 build 目录请去掉 cd build。

cd build
sudo make install
建立本地单节点测试网络

构建完成后,我们进入 eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运行 nodeos 节点程序:

./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin 

命令中, -p 参数表示使用了 eosio 账户的权限,这是本地测试系统提供的原始账户。后面的各个 plug in 参数是选择加载的插件。

成功后,如果看到类似下面的输出,就是成功建立了一个本地单节点测试网络:

1575001ms thread-0   chain_controller.cpp:235      _push_block          ] initm #1 @2017-09-04T04:26:15  | 0 trx, 0 pending, exectime_ms=0
1575001ms thread-0   producer_plugin.cpp:207       block_production_loo ] initm generated block #1 @ 2017-09-04T04:26:15 with 0 trxs  0 pending
1578001ms thread-0   chain_controller.cpp:235      _push_block          ] initc #2 @2017-09-04T04:26:18  | 0 trx, 0 pending, exectime_ms=0
1578001ms thread-0   producer_plugin.cpp:207       block_production_loo ] initc generated block #2 @ 2017-09-04T04:26:18 with 0 trxs  0 pending
...
eosio generated block 046b9984... #101527 @ 2018-04-01T14:24:58.000 with 0 trxs
eosio generated block 5e527ee2... #101528 @ 2018-04-01T14:24:58.500 with 0 trxs
...

说明本地的单节点已经开始正常出块了。

如上次文章所讲,我们建立的本地测试网络如下,并没有多带带的 keosd 钱包,而是使用了 nodeos 程序里的钱包插件。

高级设置

如果你不满足于以上,可以对节点配置进行修改,配置文件位于:

Mac OS: ~/Library/Application Support/eosio/nodeos/config

Linux: ~/.local/share/eosio/nodeos/config

上述文件夹中默认有 genesis.json 配置文件,可以直接修改它,或者在别的文件里再写一个新的配置文件,不过运行 nodeos 时,就要通过 --config-dir 命令指出新配置文件的位置。

配置文件夹还默认有一个 config.ini 文件。如果没有的话,nodeos 启动时会自动创建一个,但自动创建的 config.ini 文件是不让节点出块的,此时你需要使用 Ctrl-C 停止 nodeos,并编辑这个文件:

    # Load the testnet genesis state, which creates some initial block producers with the default key
   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
   enable-stale-production = true
   # Enable block production with the testnet producers
   producer-name = eosio
   # Load the block producer plugin, so you can produce blocks
   plugin = eosio::producer_plugin
   # Wallet plugin
   plugin = eosio::wallet_api_plugin
   # As well as API and HTTP plugins
   plugin = eosio::chain_api_plugin
   plugin = eosio::http_plugin
   # This will be used by the validation step below, to view account history
   plugin = eosio::account_history_api_plugin

这样配置好后,重新启动 nodeos,就会顺利出块了。

nodeos 的运行数据文件夹(log和共享存储等数据)位于以下文件夹:

Mac OS: ~/Library/Application Support/eosio/nodeos/data

Linux: ~/.local/share/eosio/nodeos/data

但也可以使用 nodeos 的 --data-dir 命令重新指定数据文件夹。


相关文章和视频推荐

【许晓笛】EOS 区块数据结构

圆方圆学院汇集大批区块链名师,打造精品的区块链技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。

公开课地址:https://ke.qq.com/course/345101

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24436.html

相关文章

  • 晓笛EOS 新增的 WebAssembly 解释器,是什么鬼?

    摘要:对于很多没有中间语言的字节码的编程语言来说,根本不存在解释执行与编译执行的选项,比如传统只能编译执行,直接将代码编译成为可执行的二进制机器码,我们电脑上文件就是编译的成果。 Daniel Larimer 在最近的博客中透露,EOS 新增了官方的 WebAssembly 解释器,用来解释执行 WebAssembly 智能合约,加上之前的编译执行,EOS 智能合约有了两种执行方式。 对于很...

    SunZhaopeng 评论0 收藏0
  • 晓笛】听说你买了EOS ,连代码什么样都不知道?

    摘要:说点题外话如果你想提高英语的话,持有一点代币吧,你会急于搞清楚白皮书在讲什么,要是想短时间快速提高英语,持有大量代币吧,别问我是怎么知道的。 最近发现很多人投资了EOS,却并不关心 EOS 目前的开发进度和技术细节,如果你投资了 EOS, 还有一定的技术基础,那就更应该关心 EOS 的开发情况了,下面我们就从 EOS 的源代码说起: Github 是目前最流行的源码管理网站,无数明星项...

    imccl 评论0 收藏0
  • 晓笛EOS:IPFS落地的重要途径

    摘要:写在前面,这一篇文章是许晓笛在北京开发者圆桌会议上的发言实录,感谢主办方戴嘉乐和董天一的邀请,感谢编辑们。我这次分享题目是有可能有点标题党,前面拉了三个字有可能是落地的一个非常重要的途径。共识机制共识机制,就是所有代币持有人选举。 写在前面,这一篇文章是许晓笛 2018.05.20 在北京 《IPFS开发者圆桌会议》上的发言实录,感谢主办方戴嘉乐和董天一的邀请,感谢编辑们。先介绍一下《...

    tuomao 评论0 收藏0
  • 晓笛EOS 系统架构图解

    摘要:了解系统架构之前我们先看看目前系统的主要组成部分系统的核心进程,也就是所谓的节点。 其实没有那么复杂 相信关心 EOS 系统的同学肯定见过下面这张蓝图。对,目前只是一个蓝图,而且以 BM 的尿性,肯定在心理已经把这张图改的面目全非了(比如图中的 eosd 早就改名了)。所以这张图只能作为未来 EOS 发展方向的参考而已,目前的 EOS 还远没有这么复杂和完善。 showImg(http...

    vibiu 评论0 收藏0
  • 晓笛】重新理解EOS系统架构

    摘要:所以想要实现真正实用的智能合约平台,就要脱离比特币系统的架构,寻找新的系统组织形式。比特币和以太坊之所以设计了手续费机制,就是防止大量垃圾交易使得系统拥堵。 区块链系统中,去中心化程度与效率之间天然地存在矛盾关系。 如果区块链智能合约系统想追求类似比特币的去中心化程度,理论上效率就会大打折扣。现实也是这样的:比特币每秒钟只能处理7笔左右的交易,每一笔交易要用至少30分钟才能确认,这种效...

    Alan 评论0 收藏0

发表评论

0条评论

zoomdong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<