先啰嗦几句:本人区块链小白一枚,正在自学EOS应用开发(当然目前也没有培训班培训),我的这个系列文章是我的学习笔记,因此,鉴于水平有限,难免有许多错误之处,还希望各位读者海涵,若能留言勘误,更是感激不尽。同时也欢迎热爱EOS开发的朋友加我微信(微信号:361757),暗号EOS,我已经创建了一个交流群,写作本文时(2018年4月6日),群人数已经达到68人。好了,系好安全带,我们的EOS应用开发之旅,马上开始!
EOS.IO技术白皮书链接:EOSIO/Documentation
本文将用个人理解,解读“应用程序的确定性并行执行”、“Token模型与资源使用”两部分。
005 应用程序的确定性并行执行
1,由于区块链的共识取决于确定性的行为,所以,必须保证每个账户处理消息是顺序的,不能是并行的,这个很容易理解,大家同时修改一篇稿子,最后一定对不上。而必须一个人改完,再交给另一个人修改,以此类推,才能确保共识的达成。如果是需要进行并行的处理,那么必须只能在单个用户层面进行,即你可以同时修改两篇稿子,但不能两个人同时修改一篇稿子。
2,对于基于EOS.IO的区块链来说,如何安排生产进度,是区块生产者所决定的,当然,这个进度表也不一定是确定性的。但这不需要开发者操心。
3,这也意味着,当一个脚本生成了一个新的消息,它不会被立即发送,而是进入一个队列,等待下一轮轮询中再发送。
4,最小化通信延迟:延迟是一个账户从发出一条消息给另一个用户,直到收到回应的时间间隔。目前EOS.IO已经通过将区块划分为循环、线程、交易、消息、接受者和被通知账户的多层级的树状结构方式,实现了在1个区块中就可以完成通信。这个时间间隔在dawn3.0里,已经被缩短为0.5s。
5,只读消息处理:在以下情形下,可以对消息的处理做并行处理:(1)消息为只读,不需要修改内部状态;(2)只有一个特定账户包含在一个或多个特定的周期。
6,多账户原子化交易:当我们需要将消息发送给多个账户接收时,这个消息会被放在同一个交易内并按顺序添加消息。不过这样的操作会影响性能,特别是涉及到对账单的操作时,只能将这个交易以账户作为唯一索引被例如其中(因为是多个接收账户),故在实际应用中,应该减少涉及两个或多个重复账户的原子操作。
7,区块链状态的部分评估:虽然EOS.IO支持组件化,即允许用户运行一个应用的一个小的子集,但是在涉及到账户和账户之间的通信时,就必须包含在区块中进行。
8,自主最优调度:区块生产者可以自主的判断某个交易是否消耗了过多的资源,如果是,可以拒绝打包。但是如果其他区块生产者认为是合理的,就可以打包处理。当然,如果发生这样的现象,就会产生网络延时。不过社区会注意到这种异常,并进行干预。
006 Token模型与资源使用
1,EOS.IO模拟了传统计算机中的硬盘/CPU/内存三个组建,运行在EOS.IO上的应用按照一定规则租用这些资源,其中,带宽和日志存储相当于PC的硬盘,计算与计算储备相当于PC的CPU,状态存储相当于内存。这里面的“硬盘”,分为瞬时使用和长期使用两种。
2,区块链状态的存储,在未被使用时,不会被存储在“内存”中,只有在使用时才会被存储下来。
3,区块链生产者可以发布其可用带宽/计算能力/存储状态等信息,例如,如果一个基于EOS.IO的区块链启动了,一个账户持有其所有token发行总量的1%,则这个账户就具有使用1%存储空间的能力,相当于持有1%的股份。
4,客观与主观度量:区块链生产者可以采用统一的度量标准,也可以自己选择采用更严格的主观测量方法。
5,接收方付费:构建在EOS.IO上的应用,应该承担租用的资源的费用,而不应该由用户承担。这就好像是说,用户访问网站时,不需要支付这个网站的服务器费用。
6,委托能力:当用户持有token但无需使用时,可以出租或赠送其所拥有的带宽资源。区块链生产者会识别出这样的资源。
7,分离交易成本与token价值:当你拥有token时,就拥有资源的使用权,同时,区块生产者会自然的更新你的带宽/存储/计算资源。这样的话,你的应用所耗费的资源,将与token的市场价格无关,而只与你持有的token数量有关。这样更有利于核定成本。
8,状态存储成本:应用的存储状态资源要求应用开发者需要持有token,只有等到不再使用这些资源,token才可以被移除,在这种情况下,token是无法流通的。不过估计随着网络存储能力的不断提升,所要求的最小余额会不断下降。
9,EOS.IO软件可以配置限定区块生产者回报的上限,确保token的每年增长比例不超过5%。
10,社区效益应用:除了选举区块链生产者(节点)外,token持有者可以选举3个应用作为智能合约,这三个应用可以接收到年供应量token-区块链生产者获得的token的量。这三个应用获得的token数量将根据支持者的比例确定。当然,也可以选举新的应用。
PS:在写作本文时,Dawn-3.0发布了,这是在6月份发布EOS.IO 1.0之前的一次最重要的发布,这份发布中的更新,我们会许会专门讲解。
本篇完。
我是王越,EOS应用开发小白一枚,渴望与你链接,我已经建立了一个交流开发技术的微信群,期待你的加入!请加我微信 361757,暗号EOS。
本系列文章目录