区块链技术与金融金马带你定投区块链区块链研习社

EOS概念入门与快速环境搭建

2018-05-21  本文已影响39人  刘丹冰Aceld

1. 什么是EOS?

EOS:可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统。EOS是http://EOS.IO软件引入的一种新的区块链架构,旨在实现分布式应用的性能扩展。注意,它并不是像比特币和以太坊那样的货币,而是基于http://EOS.IO软件项目之上发布的代币,被称为区块链3.0。(来自百度百科)

EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0。不同于以太坊的学习,EOS的主语言是C++。

EOS.IO 是由block.one开发的一个基于区块链结构设计的能够支持水平和垂直扩展的去中心化应用的平台。它就像是一个完整的操作系统,可以在上面构建各种应用。EOS.IO提供了账户、认证、数据库,异步通信以及跨平台跨集群的定时应用。它有望支持每秒百万级交易,完全零费率,并可以快速且容易地部署去中心化应用。(自我感觉总结的比较好的一段解释,摘自网络)

做EOS开发必须要看EOS白皮书
英文原版:https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md
中文版:https://www.jianshu.com/p/f65bf7691482

推荐一个学习的网站:http://www.eosdata.io/

1.1 EOS产生的背景

区块链技术源于2008年推出的比特币,自那时以来,企业家和开发人员一直在努力推广该技术,以便在单个块链平台上支持更广泛的应用。

虽然一些通用区块链平台还在努力实现第一个能正常运行的区块链应用,针对特定场景的区块链应用诸如BitShares去中心化交易所(2014)和Steem社交媒体平台(2016)已经成为日活跃用户上万的成功应用。 这两个应用成功的把性能提高到每秒数千个交易,延迟降低到1.5秒,降低交易费用,并实现了与中央服务器方案相似的用户体验。

由于现有的块链平台使用费用高昂,性能有限,阻碍了区块链应用的广泛传播。

1.2 EOS的优点(相对于其他区块链技术)

  1. 百万tps

  2. 使用免费(没有gas)

  3. 轻松升级和Bug恢复

  4. 串行性能和并行性能

1.3 EOS的目标

EOS希望通过其网络的特点:高效率、零费用,来打造更加适合应用场景的公链,就成为了市场最迫切的需求,符合了市场的预期。而在此之前,已经有bitshares和steem两个成功的应用上线,并持续的提供这服务,这无疑为该技术平台的实现,注入了极大的可能性。

**1.4 EOS的共识-DPOS

英文原版:https://bitshares.org/technology/delegated-proof-of-stake-consensus/

中文版:https://blog.csdn.net/lsttoy/article/details/80041033

DPOS(Delegated Proof of Stake),中文名叫做股份授权证明机制,它的原理是让每一个持有token的人进行投票,由此产生21位代表 , 我们可以将其理解为21个超级节点或者矿池,而这21个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

1.5 EOS名词介绍

先对一些比较容易混淆的几个概念做一个区分

EOS:目前指的是基于ERC20在以太坊上发行的代币,用于block.one公司开发软件与社区运营。

EOS.IO:是由block.one开发的可构建公链的软件源代码。

EOS platform:采用了EOS.IO软件构建的公链平台。

Dapp:这里指的是未来在EOS公链平台上基于EOS.IO软件开发部署的去中心化应用。

除了这些易混淆的名词之外还有白皮书中遇到的一些名词:

首先是看一下这张图:(图片来自EOS官网)

image

通过图片乐意了解到,eos主要是通过cleos来连接nodeos和keosd,那么他们各自什么意思呢?

Nodeos:服务器区块链节点组件

Cleos: EOS的命令行工具,负责与区块链系统的交互、管理钱包、管理账户

Keosd: 操作和管理钱包的服务器端工具

其他的名词还包括:

Plugins:插件,外界与EOS链交互由插件提供支持,比如wallet_api_plugin提供钱包接口、chain_api_plugin提供链接口、account_history_api_plugin提供账户历史记录接口

钱包:存储密钥对(公钥和私钥)的仓库,在区块链上执行的操作需要经过钱包的签名。

账户:拥有相应访问权限的链上的安全主体,可以类比为我们计算机上的账户。

交易:一组Action操作的集合,也可以理解为执行智能合约。

系统合约:在 EOS 安装包中就默认存在的那些合约,具体包括什么可浏览 eos/contracts 文件夹。

Bios合约:可以直接控制其它账户的资源分配,且可以访问其它的专属API调用(需增加内容)。

Currency合约:提供了代币的发行与转账功能。

EOS环境搭建

官方安装文档:https://github.com/EOSIO/eos/wiki/Local-Environment#2-building-eosio

在搭建环境之前先说明一下EOS有关的硬件要求:

1)支持的系统(不支持windows)

a) Amazon 2017.09 and higher.

b) Centos 7.

c) Fedora 25 and higher (Fedora 27 recommended).

d) Mint 18.

e) Ubuntu 16.04 (Ubuntu 16.10 recommended).

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

2)硬件要求

我得环境是Ubuntu16.04虚拟机,所以以此为例,需要8G内存和20G的磁盘空间,由于虚拟机本身要占用一定的空间,所以在创建虚拟机的时候要预留35G以上的空间,如果已经安装过虚拟机,磁盘空间不够需要扩容的自行百度扩容方法。(比较复杂,没有重装来的快)

  1. 硬件满足条件之后就可以进行第一步,克隆源码
git clone https://github.com/eosio/eos --recursive

recursive参数会将所有子组件自动克隆下来,最终我们会在本地得到全部完整的源码。大概有几百兆的内容,需要一些时间。如果这一行提示有问题的话,可切换到项目路径下面执行

git submodule update --init –recursive继续下载 
  1. 自动构建源码
cd eos && ./eosio_build.sh

这一步如果硬件不满足条件会无法继续执行,这一步可能会提示很多依赖的包没有安装,就把所有的包下载即可如下:(我的ubuntu一个包都没安装)

sudo update-install clang-4.0  lldb-4.0  libclang-4.0-dev  cmake  libbz2-dev  libssl-dev  libgmp3-dev  libicu-dev  python3-dev

最后不提示错误的时候就可以安装编译了,这一步会比较耗时间,大概需要耗费两个小时,所以建议如果电脑性能足够,创建虚拟机的时候多分配点内存给虚拟机,可以加快便宜速度。中间电脑休眠的话可能会出错,出错之后重新执行./eosio_build.sh就行

  1. 构建之后开启mongod并且测试一下代码功能是否完善
~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &

cd build

make test

4. 插入可执行文件

nodeos - 服务器端的区块链节点组件

keosd -钱包管理组件

cleos -操作nodeos和keosd的命令行工具

cd bulid 

sudo make install 
  1. 在成功构建项目之后,nodeos应该出现在build/programs/nodeos文件夹中,然后执行下面一条命令:
cd build/programs/nodeos

./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

能看到下面的代码,说明环境搭建成功:

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

4 EOS智能合约

先介绍一下智能合约的概念:

智能合约是一套以数字形式定义的承诺(协议),承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执行。智能合约程序不只是一个可以自动执行的计算机程序,它本身就是一个系统参与者,对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。(目前最靠谱的解释)

通常会把写区块链程序改称写智能合约。

操作 与 自动化操作处理程序 相结合,便是 EOS 定义的智能合约。

EOS智能合约开发所选语言主要是还是选择c++,第三方正在开发的语言是Rust, Python, and Solidity,不过EOS官方说这些第三方语音会对将来性能扩展有影响,所以还是建议用c++,具体的智能合约开发过程,内容比较多,需要等下一次课程和大家讲解。

上一篇下一篇

猜你喜欢

热点阅读