Login
欢迎来到未来世界

您现在的位置是: 首页 > 计算机 > 区块链

区块链

区块链开发实战:以太坊关键技术与案例分析(以太坊区块链技术有限公司)

区块链 加入收藏
区块链技术的发展还处于非常早期的阶段,未来一段时间,不是区块链应用落地的爆发期。之所以这段时间这么火热,更多的是一种市场炒作,是区块链技术大规模应用前的泡沫式营销。我认为在未来两三年时间里,更多的还是

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


在区块链创新这个系列里,我们会挑选几个能代表区块链未来的项目解读。首先出场的是风头最大也是争议最多的 EOS(Enterprise Operation System),他的目标是作为企业级去中心化应用(DAPP)平台底层, 他是以太坊的直接竞争对手。
为什么需要 EOS?
挑战者的出现必定是因为现行平台不足以满足目标需求。让我们先来梳理梳理现行区块链平台的不足:
交易性能低,难以满足巨量交易。比特币和以太坊因为共识算法(PoW)的设计造就了其交易性能不足,虽然以太坊从比特币的每秒处理 7 笔交易增加到大约 30 笔每秒。但是对照现有的支付宝、VISA 等支付平台,交易性能还是有着数量级的差别。并且随着交易的增多,势必造成网络的拥堵,又进一步降低了网络的流畅度;
交易手续费。比特币和以太坊的交易不是免费的,或多或少都会向矿工支付手续费。且手续费的多少视网络拥堵情况而定,网络越拥堵,矿工只会择优选择交易记录,而不是按照提交时间记录。这样就造成手续费激增,不利于商业应用的落地;
升级就是分叉。比特币与以太坊的升级是以分叉的形式进行,一分为二,如果更新过多,网络会变的非常复杂;
高延时确认。比特币与以太坊采用的工作量证明(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 网络自动完成切换。
EOS的交易确认

交易确认
比特币的交易确认一般需要 6 个区块,也就是大约 60 分钟时间,在商用领域,这完全是不可行的。之所以需要 6 个区块确认,是因为比特币网络有分叉,6 个区块确认是防止交易所在区块被抛弃从而导致交易无效的妥协。
然而 EOS 网络是防分叉的,因此一般情况下,区块是确认生产的,所以平均一个交易从广播开始后 1.5 秒就可以认为是确认了。解释一下为什么是 1.5 秒,因为区块的生产速度是 3 秒一个,区块生产者会将这 3 秒钟收到的所有交易都打包成块,那么最先和最后被打包的交易相差 3 秒,一平均也就是 1.5 秒。
以上是一般情况下,但是也不能排除特殊情况,诸如软件 bug,网络拥堵或者恶意分叉。为了确保交易绝对不可逆,节点可以选择当交易被 21 个区块生产者中的 15 个确认后才有效,这种情况下需要大概 45 秒时间进行交易确认。而且规定,只要区块进行了 15 次的确认,那区块就是历史链的一部分,不可再被替换,即便有分叉发生。
交易证明(TaPoS)

不同于其他区块链的底层数据结构里,后一区块包含前序区块哈希依次组成区块链。在 EOS 中不止如此,它要求所有的交易都必须包含前序区块哈希。这样做主要有两个目的:
防止不包含区块引用的交易在分叉是重放,因为不包含区块引用,该交易可以被加入到任意区块,任意分叉链;标识用户和他们的资产在哪条分叉上。因为伪造的链条不能迁移交易,那么他就只能追加交易。前面已经提到,追加交易的速度是跟区块生产者的数量成正比,速度慢,分叉链增长慢,最终就会被替换。
EOS的账户模型

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

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

消息处理群组与权限映射
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的强制性延时消息

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

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