【许晓笛】重新理解EOS的系统架构

从区块链三要素的角度

区块链系统中,去中心化程度与效率之间天然地存在矛盾关系。如果区块链智能合约系统想追求类似比特币的去中心化程度,理论上效率就会大打折扣。现实也是这样的:比特币每秒钟只能处理7笔左右的交易,每一笔交易要用至少30分钟才能确认,这种效率和速度是远远不如银行转账的。作为一个全球资产交易平台,比特币这样的效率或许可以接受,但对于智能合约平台这样的效率是远远不够的。因为在智能合约中,每一个动作都可以看成是一笔交易,例如五子棋游戏合约中,每下一步棋就是一个交易,用户是无法等待半个小时才能确认一步棋的。所以想要实现真正实用的智能合约平台,就要脱离比特币系统的架构,寻找新的系统组织形式。

为了同时保证系统的去中心化程度和高效率,需要将传统的区块链三大要素全部推翻或升级,建立全新的区块链三大要素。

去中心化:

在比特币和以太坊里,任何人只要原理都可以加入作为全节点,并且只要提供了足够的工作量就可以承担生产区块的任务,比特币和以太坊用这样的方式保障的系统的充分去中心化。但是对于生产区块权利的争夺(挖矿)使得系统的算力掌握在了几个大的机构(矿池)中,所以比特币和以太坊的前几大矿池几乎垄断了区块的生产,使得普通全节点很难在系统中发挥监督与维护的作用。并且由于挖矿消耗了大量资源,使得系统的主要硬件资源都用来进行哈希(Hash)运算,不论是硬件资源还是能源方面都是极大的浪费。一个高性能区块链智能合约系统是无法同时承担挖矿和执行智能合约这两部分硬件开销的。

经过权衡,EOS选择了使用21个超级节点(见证人)作为系统的核心架构,这21个见证人就像是比特币或者以太坊中的大型矿工或者矿池,但区别主要在以下几点:比特币和以太坊中,矿池通过算力得到生产区块的权利,而EOS超级节点则是通过选举,不需要挖矿;比特币和以太坊中,每个矿工出块的多少取决于算力的大小,而EOS中,无论超级节点的得票数如何,每个超级节点的出块数量都是相同的。总之,EOS通过投票的手段减少了超级节点(矿工)个数,省去了挖矿,节约了大量成本,使得有限的系统资源可以用来执行智能合约。

奖励机制:

比特币和以太坊中,在矿工的角度上,主要通过两种方法得到奖励:挖出每个区块的奖励和每笔交易的矿工费,前者可以看做是通货膨胀(比特币的区块奖励会递减,直至取消),而后者可以看做是交易的手续费或者是执行智能合约的“平台租金”。在区块奖励不变的情况下,矿工天然地会更优先处理提供了更高手续费的交易或者合约,而为了让自己的交易更早打包在区块中,用户只能不断提高矿工费(以太坊中为Gas),久而久之会成为平台用户的很大负担。即使手续费非常小,但每一笔交易都存在的手续费是系统运行非常大的摩擦阻力,非常影响用户体验。

EOS完全取消了手续费,进保留了通货膨胀部分,并且规定每年的通货膨胀不超过5%,并且只有其中的一部分(目前为五分之一)会成为见证人的奖励。奖励会分为两部分:生产区块奖励和得票奖励。前者为见证人打包区块,维护系统运行的奖励;后者根据见证人在选举中得到的票数给予奖励。

取消手续费给用户带来极大便利的同时也带来一个不可避免的问题:系统资源的滥用。比特币和以太坊之所以设计了手续费机制,就是防止大量垃圾交易使得系统拥堵。EOS对此设计了新的系统资源的使用机制:每个EOS代币代表一份系统资源(CPU,内存,网络带宽等),使用EOS系统资源时,账户必须存有相应数量的代币。就算用户有很多交易或者合约等待处理,EOS只会根据账户中EOS的数量分配系统资源,限制了交易的执行速度,避免了大量垃圾交易占用系统资源。

EOS通过代币占有资源的机制合理分配了系统资源,又通过基于通货膨胀的奖励机制完全取消了手续费,使得系统使用成本大大降低。

共识机制

通过上面的阐述,很多读者会觉得比特币和以太坊在一些地方比较相似,因为他们都用了工作量证明(Proof of Work,PoW)共识机制(以太坊之后会升级为Casper)。工作量证明共识机制有很多的优点:运行稳定,不易分叉等,因此目前大部分的公链都使用了工作量证明共识机制(完全或部分)。工作量证明共识机制通过暴力哈希运算的方式争夺系统出块的权利,并且自动认为最长区块链为有系统公认的区块链。这种机制使得分叉后的链没有获得大量矿工支持时就会崩溃,维护了主链的安全稳定。但同时工作量证明共识机制也有自身的缺陷,比如容易受大矿工的控制,被51%×××;挖矿造成巨大的硬件资源及能源浪费等。

EOS完全摒弃了传统的工作量证明共识机制,使用了经过Bitshares和Steem验证的授权股份证明共识机制(Delegated Proof of Stake,DPoS),这种共识机制的关键是:2/3见证人共同验证的区块即为有效。而每个见证人都是由EOS代币持有者选举出的,代表了EOS代币持有者的利益和价值观,所以2/3见证人验证的区块可以认为是大部分EOS代币持有人所认同的区块,一旦区块得到了2/3见证人共同承认,区块中所包含的交易即为有效且不可逆。

区块链三大要素就像是三个支点,互相×××互相影响而且缺一不可,牵一发而动全身。EOS通过对传统区块链去中心化、奖励、共识这三大要素的全面升级,完成了系统效率的极大提高,并且保证去中心化程度与系统稳定性。

原文地址:http://blog.51cto.com/13625500/2139016

时间: 2024-11-06 09:47:25

【许晓笛】重新理解EOS的系统架构的相关文章

【许晓笛】EOS:IPFS落地的重要途径

写在前面,这一篇文章是许晓笛 2018.05.20 在北京 <IPFS开发者圆桌会议>上的发言实录,感谢主办方戴嘉乐和董天一的邀请,感谢编辑们.先介绍一下<IPFS开发者圆桌会议>,创办人是戴嘉乐,前百度高级工程师,最早的IPFS工程师,一个会跳街舞的天才程序员,一个成功的价值主链投资者,能做学术研究也能做团队组织者,简直太全面了有木有.联合创办人是董天一,国内IPFS界不可不知的布道者,为IPFS项目在中国的推广做出了很大的贡献.戴嘉乐和董天一发起的<IPFS开发者圆桌会议

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

复习一下上次文章的内容,EOS 系统主要有三个应用程序: nodeos: EOS 系统的核心进程,也就是所谓的"节点". cleos:本地的命令行工具,通过命令行与真人用户交互,并与节点(nodeos)和钱包(keosd)通信.是用户或者开发者与节点进程交互的桥梁. keosd:本地钱包工具.可以管理多个含有私钥的钱包并加密. 要求本篇教程适用于以下系统,但是不论你的电脑是 windows 还是 mac,都强烈建议安装一个虚拟机,在 Ubuntu 上搞,因为 Mac 上有很多坑.安装

【许晓笛】详解 EOS 的新共识机制 BFT-DPoS

EOS 最新的白皮书中已经将共识机制从 DPoS 升级为了 BFT-DPoS(Byzantine Fault Tolerance - Deligated Proof of Stake,带有拜占庭容错的委托股权证明),本篇文章将详解新共识机制的原理. 传统 DPoS EOS 项目刚刚发布的时候的共识机制是 DPoS(Deligated Proof of Stake,委托股权证明),类似于 Bitshares 和 Steem,这种共识机制采用随机的见证人出块顺序,出块速度为 3 秒,交易不可逆需要4

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

对于一个区块链项目来说,最核心的数据莫过于区块数据,区块数据结构是整个区块链项目的技术基础.不过由于 EOS 项目一直在快速迭代,区块数据结构也不断更新,所以今天才向大家介绍. 区块头(block_header) 首先是区块头数据结构,包括了哈希.时间戳.默克尔根.见证人账户等. //区块头结构体struct block_header{   //前一区块哈希     block_id_type           previous;   //区块时间戳   block_timestamp_typ

【许晓笛】EOS 超级节点的五个使命

在EOS系统中,有"两股势力"是整个系统最关键的因素,那就是项目方和见证人.很多人觉得EOS这个项目"奇葩",就奇葩在项目方和见证人的关系上.EOS的项目方是BlockOne公司,创始人是BlockOne公司的首席技术官(CTO)Daniel Larimer,坊间称BM(ByteMaster).BlockOne公司曾经多次声明,其公司只开发EOS软件,并免费提供给任何想使用软件的人,公司不负责任何EOS网络启动.更令投资者难以接受的是,BlockOne公司公开宣称,

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

《深入理解Android 卷III》第五章 深入理解Android输入系统

<深入理解Android 卷III>即将公布.作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白.即Android Framework中和UI相关的部分.在一个特别讲究颜值的时代,本书分析了Android 4.2中WindowManagerService.ViewRoot.Input系统.StatusBar.Wallpaper等重要"颜值绘制/处理"模块 第5章 深入理解Android输入系统(节选) 本章主要内容: ·  研究输入事件从设

[转]深入理解 Android消息处理系统的原理

原文地址:深入理解 Android消息处理系统的原理作者:hoarn Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制.实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制. Android通过Looper.Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环). 本文深入介绍一下Android消息处理系统原理. Android系统中Looper负责管理线程的消息队列和消息循环,具

深入理解Android(1)__系统架构

最近一直在为Android的系统级开发发愁,很多东西云里雾里,还是觉得是基础知识不够扎实的缘故,所以,思考再三,还是决定认真研读一下<深入理解Android卷I.II>,最近深入手了一本<深入理解Android卷III>,希望能够在研读的过程中,将心得笔记写下,与Android爱好者一起学习,共同进步. 下面我们就进入正题吧. ------------------------------------------------------------------------------