写点什么

区块链创新平台:以太坊的直接竞争对手 EOS

  • 2018-04-16
  • 本文字数:5938 字

    阅读完需:约 19 分钟

区块链技术的发展还处于非常早期的阶段,未来一段时间,不是区块链应用落地的爆发期。之所以这段时间这么火热,更多的是一种市场炒作,是区块链技术大规模应用前的泡沫式营销。我认为在未来两三年时间里,更多的还是区块链基础设施的完善,基础设施不完善,想将区块链应用真正的大规模落地是不现实的。

在区块链创新这个系列里,我们会挑选几个能代表区块链未来的项目解读。首先出场的是风头最大也是争议最多的 EOS(Enterprise Operation System),他的目标是作为企业级去中心化应用(DAPP)平台底层, 他是以太坊的直接竞争对手。

为什么需要 EOS?

挑战者的出现必定是因为现行平台不足以满足目标需求。让我们先来梳理梳理现行区块链平台的不足:

  1. 交易性能低,难以满足巨量交易。比特币和以太坊因为共识算法(PoW)的设计造就了其交易性能不足,虽然以太坊从比特币的每秒处理 7 笔交易增加到大约 30 笔每秒。但是对照现有的支付宝、VISA 等支付平台,交易性能还是有着数量级的差别。并且随着交易的增多,势必造成网络的拥堵,又进一步降低了网络的流畅度;
  2. 交易手续费。比特币和以太坊的交易不是免费的,或多或少都会向矿工支付手续费。且手续费的多少视网络拥堵情况而定,网络越拥堵,矿工只会择优选择交易记录,而不是按照提交时间记录。这样就造成手续费激增,不利于商业应用的落地;
  3. 升级就是分叉。比特币与以太坊的升级是以分叉的形式进行,一分为二,如果更新过多,网络会变的非常复杂;
  4. 高延时确认。比特币与以太坊采用的工作量证明(PoW)共识算法不是一个结果确定性的共识算法,因此需要多区块确认才能确保一笔交易成功达成;

正因为有以上这些不足,阻碍了区块链在商业领域的发展,EOS 正是为了解决以上问题而出现的。接下来的篇幅,我将给大家介绍一些 EOS 的杀招。

EOS 的杀招

DPoS(委托权益证明)共识算法

所谓委托权益证明,通俗的讲,我们可以理解为“人民代表大会制”。拥有 EOS 币的“人民”不直接参与挖矿,而是投票选举一些“人民代表”去挖矿。相比于比特币等使用的工作量证明机制(PoW),委托权益证明有什么优势呢?

比特币相比于传统法币,其最重要的一个特性就是去中心化,只有当它是去中心化的时候,比特币才是安全的。但真实的情况是这样的么?几年前,任何人都可以使用自己闲置的台式机甚至笔记本来挖矿。后来,随着比特币不断被大众熟知,价格越来越高,挖矿变得越来越专业,先是显卡(GPU)挖矿,接着就是专业矿机的问世,催生出了完整的挖矿产业链。不仅有矿机生产商,还有大型矿场的问世,比特币世界的话语权逐渐被这些大型玩家把控,去中心化程度越来越低。之所以还没有出现大的问题,是因为还没有出现需要大家一起作假的事件出现。但是一旦出现,对比特币来说将是致命的打击。

DPoS 就是在这样的大背景下产生的共识算法,由 Dan Larimer 提出,首先被应用在比特股(BitShare),EOS 在其基础上又做了些许延伸。

见证人(人大代表)选举

在 EOS 网络中,存在一个不间断的选举大会。每位 EOS 链的“人民”都可以选举一名授权代表,代表自己行使产生区块(挖矿)的权利。当然,不是每个被投票的人大代表都可以被选中,EOS 网络只选取选票最高的前 20 名代表作为这一轮的区块生产者,还有一名通过得票比例选出。这里解释一下,每位选民手里不止一票,选票数跟 EOS 币持有量成正比。这样来看,选中的 21 名区块生成者其中 20 位代表更多的 EOS 币资源,而最后 1 名是代表了更多的选民。个人认为这个比例太大了,这也是有人诟病 DPoS 是富人游戏的原因。为了保证更高的公平、均衡,选出来的 21 个代表随机打乱顺序排列。

区块生产

按照之前选举的 21 人随机排列后,每隔 3 秒时间生成一个区块,在这个时间段内有且只有一个区块生产者(1/21)。如果在规定时间内区块未产生,则会跳过该区块。当然,区块生成者的不作为是有惩罚的。如果一个生产者错过了一个区块,且在过去 24 小时内没有生产出任何区块,那么他会从 21 人中除名,直到他恢复服务。

DPoS 共识不同于 PoW,EOS 区块链不会产生任何分叉,区块的结果是确定性的,区块的生产是通过合作而非比特币的竞争方式。即便是真的出现分叉,区块产生的速度是与生产者的多少是成比例的,分叉链因为区块生产者较少,势必造成等待交易增多,单个区块生产速度降低,随之会与正常链有高度差异。也就是说,拥有更多生产者的区块链分叉会比拥有较少生产者的分叉链增长速度更快,检测到差异后,随后 EOS 网络自动完成切换。

交易确认

比特币的交易确认一般需要 6 个区块,也就是大约 60 分钟时间,在商用领域,这完全是不可行的。之所以需要 6 个区块确认,是因为比特币网络有分叉,6 个区块确认是防止交易所在区块被抛弃从而导致交易无效的妥协。

然而 EOS 网络是防分叉的,因此一般情况下,区块是确认生产的,所以平均一个交易从广播开始后 1.5 秒就可以认为是确认了。解释一下为什么是 1.5 秒,因为区块的生产速度是 3 秒一个,区块生产者会将这 3 秒钟收到的所有交易都打包成块,那么最先和最后被打包的交易相差 3 秒,一平均也就是 1.5 秒。

以上是一般情况下,但是也不能排除特殊情况,诸如软件 bug,网络拥堵或者恶意分叉。为了确保交易绝对不可逆,节点可以选择当交易被 21 个区块生产者中的 15 个确认后才有效,这种情况下需要大概 45 秒时间进行交易确认。而且规定,只要区块进行了 15 次的确认,那区块就是历史链的一部分,不可再被替换,即便有分叉发生。

交易证明(TaPoS)

不同于其他区块链的底层数据结构里,后一区块包含前序区块哈希依次组成区块链。在 EOS 中不止如此,它要求所有的交易都必须包含前序区块哈希。这样做主要有两个目的:

  1. 防止不包含区块引用的交易在分叉是重放,因为不包含区块引用,该交易可以被加入到任意区块,任意分叉链;
  2. 标识用户和他们的资产在哪条分叉上。

因为伪造的链条不能迁移交易,那么他就只能追加交易。前面已经提到,追加交易的速度是跟区块生产者的数量成正比,速度慢,分叉链增长慢,最终就会被替换。

账户模型

EOS 的账户支持人类可读的名称,长度在 2-32 个字符之间,由账户创建者自己选择,可以理解为昵称。账户的创建不是免费的,必须用少量的 EOS 币注资。如果是通过 DAPP 注册的用户,一般是应用开发者为新用户注册成本买单。在传统的商业应用中,商家为了吸引新用户花费了太多精力,比如广告和免费试用等,和这比起来,在 EOS 中注册账户的花费微不足道。而且,已经注册过的用户不需要创建新的账户。

命名权限分组

EOS 的账户名称可以支持命名空间,这是一个非常好的设计,基本可以无限拓展。命名空间与权限管理结合为 EOS 的账户模型创建了无限可能。授权和权限管理被标准化和脱离应用的逻辑是不可取的,但是过多的耦合也是不恰当的。命名空间与权限管理结合,一定程度上解耦商业应用逻辑,创建了分层级的权利结构,这与现实生活中的权限分配方式非常契合。账户定义的命名空间权限级别,每一个都是有更高级别的命名权限派生而来。比如 @accountname.car 由 @accountname 派生而来。

消息处理群组与权限映射

EOS 的消息系统也是与命名权限挂钩,被称为命名消息处理群组。其他账户如果想要与该账户通信,必须拥有访问账户特定的消息处理群组权限。在 EOS 中,最高级别的消息处理群组是账户名称,最低级别的是某个单独的消息类型,比如 @accountname.group.subgroup.MessageType。消息处理群组与权限的绑定被称为权限映射,打个比方,一个帐户所有者可以将自己社交媒体应用(DAPP)与自己的“朋友”权限群组(@accountname.friend)建立映射。 有了这个映射,任何朋友可以以帐户的身份在帐户的社交媒体上发帖。 当然朋友们还是使用他自己的秘钥对消息签名,账户很容易知道是哪个朋友使用了这一功能。

权限验证

当账户 A 发送一条“EAT”类型的消息给账户 B 时,首先会验证是否 A 为 @b.group.subgroup.EAT 定义过权限映射,如果没有找到,紧接着检查 @b.group.subgroup 映射,然后是 @b.group,最后是 @b。如果都没找到,那么会被映射到默认的权限群组 @a.active。一旦映射被识别,则开始验证权限映射的正确性。如果失败,则跳至父权限,直至拥有者权限 @a.owner。“owner”权限分组与“active”权限分组是两个默认的分组,相当于两个管理员分组。其他分组都是派生自“active”分组。

因为权限验证的过程是只读的,并且通过交易改变权限是在区块结块之后才生效。也就是说,对所有交易的权限验证可以并行执行。我们都知道,在区块链中,对交易的正确性校验占据了很大一部分计算量,EOS 通过只读验证和并发验证使得性能得到极大的提升。而且从历史中重构世界状态的时候,也不再需要进行重复的权限验证,区块本身没有问题,包含在其中的交易也就没有任何问题,这将极大的减少 EOS 网络中新节点同步区块的速度。

强制性延时消息

EOS 中提供了一个有趣的功能,非常类似于 IM 中的消息撤回功能。EOS 用户可以在交易被广播之后,在被加入到区块之前,可以授权取消交易。这个功能主要是用于兼容时间敏感的应用,比如购买一杯咖啡,我们可能不会后悔,几秒钟时间就完成交易不可逆了。但是购买一套房子,可能需要 72 小时的结算周期等。具体的延时选择有开发者和用户自己做出决定。

密钥找回

EOS 的密钥找回功能也非常的接地气,而且好像在比特币或者说以太坊中没有类似的功能,你被黑客攻击了都不可能再获得账户的控制权。而 EOS 则不太一样,提供类似 QQ 密码找回功能,你只需提供过去 30 天中有过交易的任何一个密钥与事先指定的关联账户一起重置账户密钥。当然关联账户在没有所有人的帮忙也是无法单独重置账户的。而且黑客是无法进行账户重置的,因为他已经控制了账户,而且另一方面,关联账户在恢复过程中也会询问一些只有当事人知道的信息,因此黑客也无法重置账户。

应用程序的确定性并行执行

EOS 号称可以每秒处理 100 万笔交易,不仅仅靠的是权限并发验证,并且使用并行模型使得 DAPP 可以并行执行。区块链可被看做是一个分布式的状态机,交易顺序一定,就能得到一致的结果。因此在并行模型下,对同一账户的交易处理必须放到同一个线程中,否则不能达成一致性。EOS 中由 21 个区块生产者组织分发交易到不同的线程,并行执行。

基于最简单的交易模型,即只修改单个账户的状态,在并发模型中是没有问题的。但是一旦涉及到账户间的交互以及互相引用的情况,显然有些不足。因为在单个线程中,账户交易是顺序执行的,多个线程之间互不影响。如果涉及到账户交互需要被分散到两个区块及以上,肯定是不合适的。为此 EOS 设计了嵌套的区块交易模型,称之为最小化通信延迟模型,能够在单独一个区块中包含两个账户交换的所有消息。EOS 将每个区块划分为多个循环顺序执行,每个循环内部划分为线程,线程当然是并发执行,每个线程包含一系列的交易,交易中包含了待发送的消息集合。

在一个循环中生成的交易可以在后续任意一个循环或者区块中被发送,区块生产者会持续不断的向区块中添加循环直到全局 3 秒或者没有更多的交易为止。

Token 与资源

EOS 中将资源分为以下三种:

  1. 带宽和区块存储 (磁盘);
  2. 计算与计算储备 (中央处理器);
  3. 状态存储 (内存)。

带宽与计算有两部分,瞬间使用和长期使用。一个区块链维持着所有的历史交易(区块)日志,这些日志最终由全节点存储。新加入的节点可以根据历史重现最新应用状态,这就是历史重放,如果交易增长过快,会造成区块链过于臃肿,这时可以通过状态快照记录区块链状态,并丢弃交易历史。

EOS 有一个有趣的功能就是应用发起的交易不可能造成 EOS 网络的堵塞,这点设计与以太坊不同,以太坊中虽然有 GAS 提高了交易发起的成本,但是挡不住有钱人的“DDOS”,大量手续费高但无效的交易可以充斥整个以太坊网络造成整个网络堵塞,这个设计很不友好。EOS 是怎么做的呢?EOS 中有 EOS Token,应用能使用多少带宽、存储,完全取决于应用开发者持有的 EOS Token 的多少,如果持有 1% 的 Token,则可以使用 EOS 网络中的 1% 的带宽和存储。此外,因为 EOS 网络没有交易手续费,除了首次购买 Token 以外,基本没有消耗,而且当应用不再需要如此多的资源时,完全可以将 Token 转手,回收最初的投入。

以上就是 EOS 中比较重要的特点,EOS 主网现在还未上线,可能会有更多更优秀的设计未被披露,可以持续关注。

EOS 的诟病

再美好的事物也做不到十全十美,被所有人喜欢。EOS 也不例外,我总结了大家担忧比较多的几个点:

去中心化程度低

EOS 采用的 DPoS 共识算法,在每一轮中只在全网选出 21 个节点作为区块生产者,也就是说在这一段时间内,所有的交易都由这 21 个节点说了算。因此被诟病不是去中心化,而是多中心化。个人认为这些担心者走入了误区,他们认为比特币采用的 PoW 才是完全意义上的去中心化。不可否认,多年以前的比特币是这样的。但是,正如上文中提到的那样,随着比特币挖矿专业性的提升,挖矿逐渐变成了产业链,话语权把握在了矿机生产商和大型矿场手里。相比于 EOS 的 21 个中心,比特币网络中能作为区块生产者的节点可能还不到 21 个,而且权利大小还是不一的。而在 EOS 网络中,这 21 个节点权利是平等的,话语权是一致的。同时联合 11 个节点作恶是可能的,但是可能性较小。而且即便他们联合作恶了,他们在 EOS 网络中的公信力也就丧失了,在下一轮的投票中(或者永久),已经无缘作为“人大代表”为人民服务了。而且他们作恶的链也会因此被抛弃,被其他正义代表纠正。

ICO 涉嫌暗箱操作

EOS 的 ICO 模式比较奇葩,是一种类似于拍卖的模式。EOS 发行总量是 10 亿枚,除了第一次分发 2 亿枚以外,剩余的 8 亿留 1 亿给团队,其余 7 亿分为 350 个周期拍卖,每个周期拍卖 200 万枚代币,由接收到的 ETH 的数量均等分配。被人诟病的是每个周期的前一段时间接收到的 ETH 比较少,但是到周期快结束时会有大量 ETH 进入,直接拉低投资人获得的 EOS 数量,被人认为是 EOS 开发团队暗箱操作,将之前收到的 ETH 转手又投进当前周期,回收 EOS。个人认为这种模式有些不可取,但也是一种维护 EOS 价格稳定的手段,见仁见智。

尾声

看好 EOS 的人很多,看衰的人也不少。平台的发展不仅仅是技术就能决定一切,社区建设、推广也必不可少。在 18 年 6 月份 EOS 主网上线前,一切都是未知。当然,我们还是愿意看到 EOS 能够挑战以太坊的地位,垄断总是不利于市场的发展,只有相互竞争,相互学习才能有更健康更完善的区块链未来。

黎明就在这里,Dawn is here!

参考列表

  1. dantheman: 《 DPOS Consensus Algorithm - The Missing White Paper 》 2017
  2. block.io:《 EOS.IO Technical White Paper 》2017

作者介绍

自游,区块链底层架构师。16 年初接触区块链并全职投入,现供职于某世界 500 强企业做区块链底层研究及 BAAS 平台搭建。精通区块链底层存储、共识等技术,职业方向偏重联盟链体系。

2018-04-16 18:042733

评论

发布
暂无评论
发现更多内容

Compose把Text组件玩出新高度

Halifax

android 前端 kotlin Compose android jetpack

分布式锁主动续期的入门级实现-自省 | 简约而不简单

小小怪下士

Java 程序员 分布式 分布式锁

从德鲁克管理实践看服务化架构

agnostic

微服务

学习编程必须知道的三个网站

邱比特讲编程

GitHub 编程 Google Stack Overflow 编程工具

别研究 ChatGPT 了,来看个国产好项目!

Java永远的神

程序员 程序人生 后端 架构师 开源项目

啃透这500页高并发笔记薪资涨了20K,并连收天猫,京东等5个Offer

钟奕礼

Java 程序员 java面试 java 编程

云与开源,共植数字世界的根

Apache Flink

大数据 flink 实时计算

我在哪里可以获得CleanMyMac2023许可证

茶色酒

CleanMyMac2023

工赋开发者社区 | 架构瓶颈原则:用注意力probe估计神经网络组件提供多少句法信息

工赋开发者社区

HarmonyOS玩转ArkUI动效 - 水母动画

Halifax

前端 动画 HarmonyOS OpenHarmony arkui

工赋开发者社区 | 65页数字化工厂规划与建设详细方案 !

工赋开发者社区

元宇宙之数字孪生 孪数科技-企业元宇宙引领者

Jerry Tan

聊聊最适合程序员的一些画图工具?

程序员小毕

程序员 程序人生 后端 架构师 画图工具

非一线工程管理者的一对一沟通

俞凡

领导力 管理

通过假设地图进行产品待办列表排序

Bruce Talk

Agile User Story Product Owner 敏捷、

灵魂拷问,你真的了解DNS吗?

蔡农曰

互联网 前端 后端 计算机网络

网络编程与通信原理

Java 架构

2022-12-11:行程和用户。以下为输出结果,请问sql语句如何写? +------------+-------------------+ | Day | Cancellation

福大大架构师每日一题

数据库 福大大

MacBook免费的电脑管家CleanMyMac2023

茶色酒

CleanMyMac CleanMyMac X

极客时间运维进阶训练营第七周作业

老曹

TechSmith Camtasia Studio2023免费的屏幕录像视频编辑软件

茶色酒

Camtasia Studio2023

浅谈如何在小红书和知乎两大平台做好引流推广

石头IT视角

基于 docker-compose 部署单机版本 ELK

忙着长大#

ELK

微信朋友圈高性能复杂度

闲人Eric

架构实战营

小令案例 | 互联网消费分期产品引入令牌云服务,大幅提升进件转化

令牌云数字身份

身份认证 分布式数字身份 成功案例

面试官:断网了,还能 ping 通 127.0.0.1 吗?

Java全栈架构师

程序员 面试 程序人生 后端 计算机网络

字节大神熬夜整理MyBatis+Redis+Kafka+spring源码与实战技术齐飞

钟奕礼

Java java编程 程序员、

关于ChatGPT的一切;CUDA入门之矩阵乘;PyTorch 2.0发布|AI系统前沿动态

OneFlow

人工智能 深度学习 AI

架构训练营作业-模块2

张建闯

架构实战营

Verilog 的连续赋值

芯动大师

Verilog Verilog语法 连续赋值

Mac内存清理工具CleanMyMac2023

茶色酒

CleanMyMacX CleanMyMac X CleanMyMac X2023

区块链创新平台:以太坊的直接竞争对手EOS_语言 & 开发_自游_InfoQ精选文章