大家好,非常感谢参加《EOS从入门到精通》系列课程,我是王巨,今天是EOS技术白皮书解读的第三讲。今天我们来解读EOS白皮书中的“应用程序的确定性并行”和“Token模型与资源使用”:下面是这两章节的思维导图:

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

Token模型与资源使用.png

我们先来讲解一下应用程序的确定性并行,这部分在入门篇我们不做重点解读,因为这里面涉及到了很多编程方面的知识,我在这里只跟大家做一下同步,让大家对EOS的高性能有一些感性的认识。

EOS白皮书解读(三).002.jpeg

好,我们开始应用程序确定性并行这个章节的解读:该部分从简介、最小化的通讯延迟、只读消息处理、多账户的原子交易、区块链状态的部分评估、自主最优调度这几个方面跟大家讲解EOS并行执行的原理。

EOS白皮书解读(三).003.jpeg

我们知道区块链最简单的理解是一个公共的账本,而维护账本共识的核心基础就是行为的确定性,这意味着如果需要并行计算,那么所有的并行计算都不能互斥或加锁,因为锁的状态是不确定的。不加锁,就需要一些方法来保证所有账户只能读写自己的私有数据库。这样每个账户都必须顺序的处理消息,因此EOS的并行级别是账户级别的。

EOS将消息传递 组织成独立的线程,这样可以比较容易的评估线程并行的可能性,因为每个账户的状态只取决于传递给他们的消息。进度表,我这里理解成消息的执行顺序,这个顺序在区块产生后是确定的,而在产生过程中是不确定的,是由区块生产者按照并行算法决定。比如说区块生产者A生产区块,那么消息执行顺序就由A来决定,A产生区块后,生产者B验证区块时要完全按照A的执行顺序来验证。

当脚本产生一个消息后不会被立即传送,而是会被安排到下一个循环,因为接收方当前可能在另一个线程内主动修改自己的状态。

EOS白皮书解读(三).004.jpeg

最小通讯延迟,这里的延迟,是指一个账户向另一个账号发送消息并接收响应所需要的时间,EOS的设计目标是能够在一个区块内来回交换消息,那么EOS是如何做到的呢?EOS将区块分成了几个循环,循环又分成了多个线程,每个线程包含一个交易列表,每个交易包含一组要传递的消息。这个结构可以看成为一棵树,在这个树中交替的层被顺序的并行的处理,我们看下面这张图

可以看到,循环是顺序执行的,线程是可以并行的,交易和消息是要顺执行的,而接受者和被通知的账户是可以并行的。为什么接受者这个地方是可以并行呢?这要看一下下面的只读消息处理

EOS白皮书解读(三).005.jpeg

只读消息的处理,EOS对于无需更新状态的消息处理是可以并行的,只要特定的只读消息处理程序被包含在特定的循环内的一个或多个线程中就可以。

EOS白皮书解读(三).006.jpeg

我们再来看一下多账户的原子交易。有些时候需要确保消息以原子的方式传递给多个账户并需要被其接受。在这种情况下双边的消息会被放在同一个交易中,两边的账户也会被分配在相同的线程,并且消息会被顺序的处理。这样做的目的是为了确保交易成功,而这其实会带来性能上的损耗,而且在成本上也会很高,因此出于性能和成本的考虑,应用程序最好能尽力减少涉及两个或更多使用率高的账户的原子操作。

EOS白皮书解读(三).007.jpeg

区块链状态的部分评估,我简单说一下我的理解,不同于以太坊所有的全节点都必须运行所有的合约,EOS具备这种允许完整节点选择要运行的任何程序子集的能力,这样带来一个好处就是如果我仅仅运行一个小应用,那么我可以使用有限资源启动完整节点,比如一个交易所的开发人员运行完整节点,以便向用户展示交易状态,这个程序是不需要与社交媒体的程序有状态关联的。

EOS白皮书解读(三).008.jpeg

自主最优调度,我的理解是EOS设计了这样一个调度框架,每个区块生产者都可以根据自己的算法来进行区块的生产。EOS不强制区块生产者将任何消息发送给任何其他账户,每个区块生产者都可以根据处理交易所需的计算复杂性和时间做出自己的主观预测。

在网络层面上,所有的交易都会收取一个固定的计算带宽成本,区块生产者也可以使用自己的算法来测量资源的使用。这里的计算带宽,我的理解应该是广义的,可能包含计算资源,状态存储资源以及网络带宽。

一般情况下只要一个区块生产者认为交易在资源使用的限度内是有效的,那么所有的其他区块生产者也会接受,但是交易可能需要最长1分钟才能找到生产者,为什么是一分钟,因为一分钟内交易可以在21个区块生产者之间流转一遍,如果还没有找到,那么这个交易就不会被打包了。

EOS白皮书解读(三).009.jpeg

好了,关于程序确定性和并行执行就讲到这里,我们来看一下TOKEN模型和资源使用。主要从简介、客观与主管的衡量、付费策略、委托能力、分离交易成本与Token的价值、状态存储成本、区块奖励和社区利益应用这几个方面解读。

EOS白皮书解读(三).010.jpeg

所有的区块链资源都是有限的,需要系统的防止被滥用,比特币和以太坊是用手续费和Gas来防止资源被无限使用的,那么EOS是怎么防止资源被滥用的呢?

我们先看一下EOS提供的资源有哪些,主要有存储和带宽资源、计算和计算Backlog以及状态存储。先解释一下计算Backlog是什么,可以翻译成计算积压,我的理解是这样的,比如说一个完整节点断网一段时间,等重新联网后需要重新同步未同步的区块,然后对这些新的区块进行重新验算,我理解这些计算任务就叫计算Backlog。

区块生产者发布他们的带宽、计算资源和状态存储资源、每个用户对资源的使用率跟Token持有的比例成正比。持有1%的Token的账户可以使用1%的状态存储资源。

带宽和计算资源由于是瞬时资源没法保存,因此采用的策略是在保留的基础上进行分配,算法类似于Steamit限制带宽的算法,有点像QoS算法。举例来说:假如你持有1%的Token,那么在瞬时资源的使用上,你最少可以使用到1%,如果系统比较空闲,那么你可以使用的更多,如果系统非常繁忙,那么系统至少可以保证有1%的资源是专门给你提供的。

EOS白皮书解读(三).011.jpeg

所有的资源使用约束最终都是主观的,由区块生产者根据各自的算法和估计来执行,EOS允许使用客观的根据消息或存储容量来衡量消耗,也可以自己定义主观的衡量算法。我的理解是,EOS给了一个推荐的简单算法,至于区块生产者要不要使用,由他们自己决定。这在EOS上都是允许的。

EOS白皮书解读(三).012.jpeg

付费策略,这个我们也早就提过了,应用不能强制用户为使用区块链资源而付费,同样的EOS也不会强制应用的收费策略。

EOS白皮书解读(三).013.jpeg

委托能力,我们知道,持有EOS的人不一定是应用开发者,可能不会立即使用链上资源,那么这些人就可以向其他用户提供或出租这些带宽,EOS允许这样做,同时区块生产者能够识别这样的授权,并相应的分配带宽。通过这个设计,将来EOS的持有者通过出租EOS可能就能带来持续的盈利。这就是为什么有人将EOS比作地皮的原因。

EOS白皮书解读(三).014.jpeg

分离交易成本与Token的价值,这点非常重要,它的优点就是应用程序的可用带宽仅取决于Token的持有量跟Token的价格没有关系,只要持有一定数量的Token,就可以在固定的状态和带宽使用的情况下永久的用下去。开发者和用户不受Token市值波动的影响。这点是比特币和以太坊做不到的。

EOS区块链使区块生产者能够自然地增加每个Token可用的带宽,计算和存储,而不管Token的价值如何。EOS区块链每次产生区块时都会授予区块生产者Token。Token的价值将影响生产者能够购买的带宽,存储和计算量;这个模型自然会利用上升的Token价值来提高网络性能。

EOS白皮书解读(三).015.jpeg

虽然可以委托带宽和计算资源,但应用程序状态的存储将要求开发人员持有Token,直到该状态被删除。如果状态从未被删除,则Token被有效地从流通中移除。每个账户都需要一定的存储空间,因此每个账户都必须保持最低的余额,随着网络存储容量的增加,这个最低要求的平衡将会下降。

EOS白皮书解读(三).016.jpeg

块奖励,由所有区块生产上公布的期望收益的中位数决定,EOS可能会配置区块生产者的奖励执行上限,使得Token的供应的年度增长在5%以内。

关于社区利益应用这个章节,说实话我没太看明白,英文和翻译过来的中文都没太理解,这里就不给大家讲了,以免传递错误的信息,好在这个部分看起来不是非常重要。如果有了解的同学可以发消息说一下。

好了,今天的主要内容就讲到这里,总结一下,我们今天讲了两部分内容,并行执行和Token模型与资源使用。重点在Token模型与资源使用的理解上。理解了这个才能明白EOS Token本身的价值所在。我在前段时间写过专门写过一小篇文章介绍EOS的经济系统,可以给大家分享一下。地址是:

EOS经济体统分析

作者:王巨
链接:https://www.jianshu.com/p/9729c5487dee
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

EOS从入门到精通(三)相关推荐

  1. EOS从入门到精通(四)

    大家好,非常感谢参加<EOS从入门到精通>系列课程,我是王巨,今天是EOS技术白皮书解读的第四讲.我们来解读EOS白皮书的最后几部分.今天的内容相对于上一节课会简单一些,主要讲EOS的治理 ...

  2. EOS从入门到精通-账户体系(文字稿)

    大家好,非常感谢参加<EOS从入门到精通>系列课程,我是王巨,今天是EOS技术白皮书解读的第二讲.今天的课程原本计划讲两部分内容,账户系统和并行执行.但是一天的备课下来,我发现账户系统的内 ...

  3. EOS从入门到精通-设计背景与DPOS算法(文字稿)

    大家好,非常感谢参加<EOS从入门到精通>系列课程,我是王巨.先跟大家汇报一下上周六试讲的情况,上周6的试讲已经有6000多小伙伴参与了试听,在此我非常感谢大家的信任.同时在试讲的过程中大 ...

  4. Kali Linux 从入门到精通(三)-入侵系统定制

    Kali Linux 从入门到精通(三)-入侵系统定制 定制 网络配置 临时IP地址 dhclient eth0 ifconfig eth0 192.168.11/24 route add defau ...

  5. C4D致富经典入门到精通(三)

    C4D样条曲线创建 C4D基础界面的介绍与常用快捷键:  C4D致富经典入门到精通(一) C4D父子关系的理解与创建参数几何体与可编辑对象: C4D致富经典入门到精通(二) C4D样条曲线创建 :  ...

  6. jQuery 1.3 for Asp.Net、 CSLA.Net 3.6 for Windows 及 MOSS/WSS 一步一步从入门到精通三个系列的目录...

    jQuery for Asp.Net 一步一步从入门到精通(附 jQuery API 彩色大图) CSLA.Net 3.6 for Windows (C# 2008)一步一步从入门到精通 MOSS/W ...

  7. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...

  8. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  9. Python入门到精通三天速成第一讲——创建自定义类

    class Person:def set_name(self, name):self.name = namedef get_name(self):return self.namedef greet(s ...

最新文章

  1. dropout层的作用_循环神经网络的 Dropout
  2. hot编码 字符one_用 PyTorch 实现基于字符的循环神经网络 | Linux 中国
  3. 荣耀鸿蒙价格,荣耀40S秀肌肉,120Hz+双5000万+鸿蒙系统,售价很感人
  4. BZOJ.2555.SubString(后缀自动机 LCT)
  5. 基于设备树的TQ2440的中断(2)
  6. Python+OpenCV:Feature Matching + Homography to find Objects
  7. java 32位无符号整数_Java中32位无符号数的取法
  8. 服装进销存管理软件榜单前十排名
  9. sublime text 批量删除空白行的方法
  10. Java RESTful风格编程 和 RESTful架构详解
  11. n++和++n的区别
  12. Python数据分析工具Pandas——数值计算和统计基础
  13. 使用kubeadm安装k8s
  14. Unity 相机固定角度平移至指定物体
  15. Android辅助功能 Accessibility Services基本用法笔记
  16. 解决oracle导出dmp时 904错误
  17. stm32 关于GPIO寄存器操作
  18. php printer_open 用法_php控制标签打印机(斑马)
  19. 微信小程序wxs的理解
  20. fanuc机器人IO分配报警信号分配无效

热门文章

  1. iOS --高仿QQ空间页面
  2. Lintcode: k Sum II
  3. linux Ubuntu apache2 伪静态设置
  4. 感知器python代码
  5. Centos7.0安装tensorflow
  6. 【C语言】字节对齐问题(以32位系统为例)
  7. 云炬随笔20180421
  8. 云炬WEB开发笔记2-4 Sublime使用技巧
  9. python flask安装_python flask安装和命令详解
  10. 人类一败涂地电脑版_【游戏资讯】这是PC版塞尔达?终极无敌暴力缝合怪登陆Steam!PS3模拟器更新后可流畅运行美末!...