当前位置:主页 > 大话特码 >

Algorand源码架构分析

发布时间:2019-09-04   浏览次数:

  本篇主要介绍Algorand源码中关于agreement的模块结构及业务逻辑架构,也是源码中比较难以理解的地方,其它诸如节点、区块、密码、P2P网络的结构与其它区块链项目都是大同小异,很容易理解,这里就不再赘述。

  Node模块中还提供了各种pool,这些pool用于对网络中的proposal与vote进行验证时的任务队列。

  协议是Algorand最重要的一个模块,在其中用service做一个总的任务调试,状态机负责对投票进行统计,demux负责具体action的执行,从网络上收集proposal与vote,是Algorand的二元拜占庭(BBA)实现的部分。

  模块A做完自己的具体工作,会给externalEvent通道写入event,模块B从这些通道读数据,进行对应的统计处理;

  模块B正好反过来,是input的消费者,是output与ready的生产者。

  这里的代码主要是对vote与proposal进行统计,一个区块共识周期内的两轮多步投票的统计都是在这里完成的,分为5层状态机,每层只负责处理与自己有关的,上层处理不了的,移交给下层状态机,下层状态机将处理结果返回给上层状态机,最终发出对应的action。

  Player即playmachine实现了整个状态机的最顶层功能,负责记录当前哪个区块第几个阶段第几步的共识环节,以及超时等基础信息。

  voteTracker是step层的主类,用来存储vote,是最初发出vote超过阈值的地方。

  在这一模块中定义有两个类,一个是router接口,一个是routerHandle结构体。前者用于真正的event处理,而后者只是为了构造一个新的结构,加入写日志功能及标明状态机类型,起辅助功能。routerHandle的dispatch最终其实是转到了对应的router的dispatch中去执行的。

  状态机针对vote与proposal进行统计后,会发出一系统的action,这些都由各个对应的类去处理。

  在actions.go里会看到不同种类的action,我们只要在对应的类里去查就知道如何处理各个action,action就是对应我们实际要处理的各个动作。

  在demux.go文件里,next函数负责从消息通道里获取消息,转化成对应的事件传给状态机

  MakeProposals发出一个proposal,其实就是提议一个区块,同时自己对这个区块进行投票。MakeVotes就是对proposal直接进行投票。

  我们知道是对credential,也就是凭证做排序,最小的就是领导者。这些其实发生在每一个节点上,香港横财富高手论坛。在每一个节点上对所有voteVerified的事件做处理,比较大小得到。

  这里的freezer就是proposalSeeker的一个对象,这个类负责记录credential值最小的那一个,那停止时间是什么呢,就是说这个时间段的结束时间是什么呢?

  这样freeze就对leader完成了选定,我们再查什么时候发出这个事件。这个是由超时函数来控制的,在主状态机里,timeout事件,当step是soft步骤时,超时,就进入cert阶段,这时就得终止这个credential最小值的选择了。

  本篇并未对Algorand的每个细节知识进行深入的阐述,而是从代码的大框架上做一个简单说明,希望可以帮助大家理清数据流的走向,把握源码架构。

  声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。今晚生肖开奖结果查询疑问4:经常换药能防止感染吗?,文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们

  2019年成为各类高科技产业发展的风口,而5G技术迎来了爆发元年,运营...

  019中韩区块链生态高峰论坛9月10日举行区块链行业在2019年迎来快...

  文王解币:9.3比特币利好刺激上涨,趋势逆转还有待观察理性是投资者在市...

  暴走时评:据路透社9月2日报道,汇丰银行在基于R3 Corda的Vol...

  摘要:这项技术能为普通市民和小企业做些什么?“现在每个人都很清楚,基于...

Copyright 2017-2023 http://www.lv3824.com All Rights Reserved.

金财神开奖| 抓码王彩图| 香港赛马会| 同福心水论坛| 红姐图库电信主图库| 手机报码室现场报码| 码会特供资料| 管家婆心水| 一肖一码| 彩霸王心水| 黄大仙主论坛| 管家婆| 白小姐心水论坛| 大丰收心水论坛| 一肖中特|