eos是什么?

原文 https://www.jianshu.com/p/06443248f4d8

简介

用一句话来定义eos,即:区块链操作系统,支持在它之上构建dapp,支持智能合约、帐户、身份验证、数据库、异步通信和跨越数百个 CPU 内核或集群的应用程序调度。简单来说,eos是类似于windows、linux、安卓、ios这样的底层操作系统,为区块链的去中心化应用(dapp)提供更加方便、安全的开发运行环境。

eos的诞生背景

众所周知,区块链技术发展到现在,已经步入了区块链3.0时代。

1.0时代开始于2009年,以比特币(btc)为代表的数字货币横空出世,其去中心化、不可篡改的特性,给急需“信用”背书的金融市场带来了新的生机。然而,单一的数字货币功能,并不能满足金融机构复杂的交易场景。全球复杂的政治经济格局,也让数字货币的应用落地举步维艰。

1.0时代的困局,也为区块链2.0时代带来了新的机遇与挑战。2014年,以以太坊(eth)为标志的、主打智能合约的区块链2.0公链如雨后春笋般出现。智能合约,顾名思义,就是将我们普通的纸质合约功能,以代码的形式实现和执行,并发布到区块链上。有了智能合约功能,我们可以很方便的为一些交易场景定制特定的合约,满足一定的条件时,合约会自动执行;区块链不可篡改、去中心化的特质,让我们完全不用担心违约的问题出现。

既然2.0时代已经完美的解决了金融市场的定制化解决方案的需求,那要3.0时代干嘛?原因很简单:性能问题。因为要兼顾去中心化的特性,区块链的系统设计使得每秒确认的交易数非常有限。btc每秒只能确认7笔交易,eth每秒也只能确认20~30笔交易。对于金融结算场景,比如天猫双十一的消费场景,需要每秒百万的交易确认数,1.0和2.0区块链系统是远远达不到需求的。

所以,eos就顺理成章的诞生了。这个主打百万tps的区块链操作系统,作为区块链3.0时代的杰出代表,致力于让区块链系统真正的落地商业化。截止目前,eos的第一阶段的开发已经结束,主网顺利上线。按照社区之前的测试结果,eos单线程的性能达到每秒1000笔交易,比目前市面上的区块链系统提升了几十倍。多线程的开发会在下半年持续进行,能不能达到承诺的性能,让我们拭目以待。

eos的特性

共识机制

稍微接触过区块链,应该都对共识机制有个大致的了解。区块链系统,是一个分布式的网络,让分散在不同国家、不同网络环境、不同主机的人,能对一个结果的产生达成一致认可,共识机制功不可没。

btc用的共识机制是pow算法,简单的说,我们会把交易广播到网络上,btc网络出一道题,所有运行btc网络的计算机,都在不停地做运算,谁先给出答案,谁就能产生一个区块,区块中打包了交易,一个一个区块首尾相连,就形成了唯一一条区块链。eth也用的是pow算法,大同小异。这个算法的优点暂时不说了,缺点也很明显,计算资源的严重浪费、每秒能确认的交易数很少等等。

而eos的共识机制是dpos算法,简单的说,就是区块链版人民代表大会制度。规则如下:eos打包交易和出块的节点总共只有21个,将他们称之为超级节点,这里的超级节点可以是1台计算机,也可以是多台计算机组成的集群,集群模式目前还在开发中。有一堆节点都想竞选超级节点,每个持有eos的人,都可以投票选自己心仪的节点。一个eos可以投30个节点、每个节点只能投1票。eos的共识机制,牺牲了部分去中心化的特点,换来了性能的大幅度提升。

eos共识机制详细的参数:

- 选举21个超级节点作为生产者,49个节点作为备选,每个生产者按顺序轮流打包区块。

- 打包126个块(21个生产者,每人6个块)算一轮,每轮选举一次超级节点。生产者打包的顺序,由15/21个生产者投票产生。平均出块速度0.5s。一个交易从广播到99%确认大约需要花0.25s,大约1s后可确认不可更改。

- BFT算法:允许生产者给区块签名,同一时间同一高度一个生产者不能给两个区块签名,一旦一个区块被15个以上的生产者签名,即被认为是不可逆的

治理机制

宪法:为了避免超级节点作恶,以及其他用户作恶的行为,eos创建了一个点对点的服务条款协议或者绑定用户到一个合约,简称“宪法”。 宪法的内容定义了仅仅依靠代码无法在用户间履行的义务,同时通过建立管辖权和可选的法律来解决相互间的争端。“宪法”是采用李嘉图合约编写上链的,每个用户发交易都需要认可“宪法”内容并使用私钥签名确认。宪法的设计原则可参考block.one的副总裁thomas发布的宪法设计原则,“宪法”内容比较多,可以搜索thomas的发言记录查看。

ECAF:为了更大程度的履行“宪法”,防止作恶行为。eos社区建立了ecaf仲裁机构,作用是选举仲裁员,处理链上的交易纠纷、恶意盗币、违宪等行为。ecaf目前权力很大,社区对这个仲裁方式也很有争议,未来可能会使用智能合约取代ecaf的人为治理方式。

分红机制

讲分红机制之前,先明确eos上的几个角色:

- 超级节点:21个,由所有持有eos的人选举产生,负责打包eos区块

- 备选节点:49个,由所有持有eos的人选举产生,作为备用节点,一旦超级节点不可用,随时替换21个节点作为区块打包者

- 查询节点:不参与打包区块,只同步eos区块,作为交易查询使用

分红机制的详细阐述

- 超级节点打包区块获得EOS,EOS每年增发5%,1%归超级节点和备选节点所有,4%归基金会所有。1%的收益,其中25%分给超级节点,75%按照每个节点获得的投票数进行分配。4%收入基金会的收益,可能会用于资助dapp的孵化,也可能被销毁,目前还在讨论中。

资源分配机制

- 超级节点对外发布他们的可用的带宽(net) 、计算能力 (cpu)、内存 (ram)。

- 其中,对于cpu和net资源,持有者可以通过抵押EOS获得,比如抵押发行量1%的EOS,即可使用1%的net和cpu资源。抵押cpu和net的EOS可以赎回,cpu和net如果用尽了,会在一天后恢复,关于具体的资源使用情况,比较复杂,我会单写一篇文章详细阐述。

- 对于ram资源,则需要通过使用EOS买卖获取,每次买卖都要收取1%的手续费。ram是不可恢复资源,用完了需要重新购买。

eos的应用前景

区块链行业,截止目前为止,最被人诟病的就是没有一个商用的解决方案,被古典互联网从业者认为是割韭菜的利器。eos的出现,就是试图打造一个通用化、高性能的公链,彻底解决区块链的商用落地问题。

笔者因为工作关系,接触了不少区块链项目,总结了一下目前区块链可能的商用场景,如下:

- 跨境结算。目前的金融系统,由于不同银行之间没有相互打通系统,跨境结算一笔交易,大概需要几天的时间。基于区块链打造的金融系统,能够保证交易的共识与不可篡改,可以为不同金融机构提供通用的结算解决方案。目前,致力于解决此场景的区块链项目有:xrp、stellar、fabric超级账本、zipper等。

- 资产上链。在这个信任缺失的社会,要证明你是你,都需要去派出所开证明。一旦涉及房产、资产纠纷,就需要法律流程介入、打官司,耗费非常多的财力物力。区块链技术的信用机制、智能合约机制,能保证链上资产的归属公开透明、交易公开透明,大大减少资产纠纷。目前,致力于解决资产上链的项目有:btm等。

- 社交网络。目前的互联网社交产品,社交平台的话语权非常大,内容的发布、审核、删减都是平台说了算。大部分收入也归平台所有,对优质内容的贡献者,激励也非常有限。针对这些问题,区块链采用token经济激励,持有token的人可以投票支持优质内容、发布优质内容的作者也可以获得token奖励。由于区块链去中心化的特质,任何内容上链了都不可篡改,可以避免平台作恶、以及因为政府政策导致内容被屏蔽。目前,致力于解决社交问题的项目有:everipedia、steemit、币乎、ono等

- 预言机。区块链的不可篡改的特性,能够极大的保证交易数据的真实性,为预测提供了强大的数据基础。区块链的智能合约功能,能通过代码实现自动化的交易,为预测场景的智能结算提供了重要保证。主要应用场景,比如对赌合约、基于预测的自动化交易、保险投顾等。目前基于此场景的项目有:oraclechain、FInsur等。

- 自治系统。总有理想主义者希望建立一个类似于蜂群、蚁群一样的自治化社会,没有中央集权,大家通过群体意志决策,这样的社会能保证最大程度的公平性,避免寡头作恶,剥削民众。目前,有很多区块链项目在尝试去中心化系统,例如:eosdac,fcoin、bitfinex等也在尝试开发去中心化交易所。

eos由于其优良的性能,单线程交易成交可达到1000tps/s,采用侧链未来可以达到百万tps,以上的场景,都能在eos上得到实现。未来,我们可以期待基于eos的dapp百花齐放。

eos常用网站

因为篇幅有限,我只能介绍这么多关于eos的信息。更多的信息,推荐几个网站,大家可以自取,毕竟知识的增长是一个主动学习的过程。

- eos github:eosio

- eos技术文档:EOSIO Developer Portal

- 最早的eos论坛,有不少关于eos治理、开发、选举的内容,block.one的核心成员经常会发布新观点:eos go

- 公众号,国内eos节点收集的社区信息:EOS引力区、HelloEOS社区、IMEOS

- 区块浏览器:myeoskiteosecoeosmonitor

[转]https://www.jianshu.com/p/06443248f4d8的更多相关文章

  1. Zabbix调优不完全指南(https://www.jianshu.com/p/2d911d55448f)

    从学习搭建zabbix到完成各类监控.调优.二次开发已经过去了两年,期间通过QQ学习群.zabbix官方社区.各个技术博客整理学习了不少关于各种报错的处理方法,现在将常见的一些报错处理方法整理出来分享 ...

  2. 接口测试之——Charles抓包及常见问题解决(转载自https://www.jianshu.com/p/831c0114179f)

    简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charl ...

  3. jar与war包区别,转自https://www.jianshu.com/p/3b5c45e8e5bd

    https://www.jianshu.com/p/3b5c45e8e5bd

  4. fastdfs(https://www.jianshu.com/p/1c71ae024e5e)

    参考 官方网站:https://github.com/happyfish100/ 配置文档:https://github.com/happyfish100/fastdfs/wiki/ 参考资料:htt ...

  5. https://www.jianshu.com/p/1038c6170775

    import os # 方法一: os.walk实现 def items_dir(rootname): l = [] for main_dir, dirs, file_name_list in os. ...

  6. Redis 单线程却能支撑高并发 - 简书 https://www.jianshu.com/p/2d293482f272

    小结: 1.在 I/O 多路复用模型中,最重要的函数调用就是 select,该方法的能够同时监控多个文件描述符的可读可写情况:2.Redis 服务采用 Reactor 的方式来实现文件事件处理器(每一 ...

  7. 当我写下Map<String,Object> map = new HashMap<>() https://www.jianshu.com/p/6b2e350e99be

    当我写下Map<String,Object> map = new HashMap<>();我到底在写什么? 我什么时候会写HashMap? 一个函数同时需要返回 多种 状态的情 ...

  8. Asp.Net Core 第01局:项目创建和部署 转载https://www.jianshu.com/p/9c9750e23b3e

    总目录 一.前言 本文通过从项目创建到部署,简单介绍Asp.Net Core. 二.环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 三.开局 第一手:创建项目   ...

  9. 分布式--ActiveMQ 消息中间件(一) https://www.jianshu.com/p/8b9bfe865e38

    1. ActiveMQ 1). ActiveMQ ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message ...

随机推荐

  1. MHA实现MySQL的高可用

    一:软件简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件. 在 ...

  2. C# Winform 仪表盘

    winform 仪表盘相关下载链接://download.csdn.net/download/floweroflvoe/10432601?utm_source=bbsseo 控件首次拖拽上来是这样的: ...

  3. win10电脑安装win7

    1.进入BIOS,关闭“Secure Boot”功能,启用传统的“Legacy Boot”.预装WIN8的系统想要更换WIN7系统首先需要修改BIOS设置.BIOS设置方法:F2进入BIOS,选择se ...

  4. python之路-----前端之css

    本篇内容 CSS 语法 css的四种引入方式 css选择器 css属性操作 Caution! 后台管理布局 css响应式布局 一.CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声 ...

  5. 爬取字段和图片 spider_getModelInformation

    import urllibimport urllib2import re class Spider: def getPage(self,pageIndex): url="http://mm. ...

  6. Go 基础 坑

    1.字符串空为"" 2. 传递的数组是原数组的拷贝,所以是无法通过传递数组的方法去修改原地址的数据的.在GO语言中除了切片(slice).集合(map).通道(channel)和接 ...

  7. 最小生成树 HDU1301 (kuskal & prim)

    Kruskal:1.边排序,2.按边从小到大连接森林至树   3.并查集 #include <stdio.h> #include <stdlib.h> #include < ...

  8. [Oracle][DATAGUARD]关于REDO_TRANSPORT_USER参数

    大家可能已经知道,在Oracle的DATAGUARD(这里指的是PHYSICAL STANDBY)环境中,Primary端会把生成的REDO传到Standby端,然后由Standby端的MRP进程应用 ...

  9. 多线程之 Thread类

    一.多线程第一种方式的实现步骤(继承Thread类) 代码演示: 1.定义MyThread类,继承Thread类 2.重写了里面的run方法,在run方法中定义线程要执行的任务 public clas ...

  10. python 全栈开发笔记 3

    正则表达式 正则表达式(RE)是一种小型的,高度专业化的,它镶嵌在python中,并通过re模块实现,正则表达式编译成一系列的字节码,然后由用c编写的匹配引擎执行. #正则表达式 import re ...