核心算法

  • ByteBall中DAG交易数据同步算法详解

    引言 相比于传统单链结构的区块同步过程,DAG结构的交易数据同步过程要更加复杂。其复杂性主要体现在以下两个方面: 从同步数量上来看:单链结构中区块打包了一批交易数据,只需要对区块进行同步及其正确性的检查,这样就完成了一批交易数据的检查;而DAG结构需要对每一笔交易数据单独进行同步和检查,时间和计算复杂度成倍增加。 从连接关系上来看:单链结构的区块只有一个父区…

    2018年12月9日 529
  • ByteBall主链更新算法解析

    节点的所有交易数据存储在两个位置:一个是内存中(为了减少数据库查询);另一个是数据库中。也就是说,当对一个新的交易单元校验完后,在存储时可能会对已经存储的交易数据以及本地DAG产生影响,影响包括两个方面:一方面是需要更新DAG及主链信息;另一方面是检查是否出现双花或者不连续的交易单元。 这里我们主要关注新交易单元对DAG及主链的影响,在将新交易单元加入本地D…

    2018年11月16日 688
  • 关于ByteBall中见证级别(witnessed level)的深入讨论

    如果只保留结点与其最优父结点的连接,那么整个DAG将退化为一棵最优路径树。最优路径树的树干为主链,不在主链之上的结点形成分支,并通过最优路径连接到主链上。只要获得足够多的见证人的支持,还未达到稳定状态的分支可以通过竞争成为主链。 在主链的竞争中,最为重要的是见证级别。计算结点的见证级别时,从结点的最优父结点出发沿着最优路径回溯,当收集到7个不同见证人(都属于…

    2018年11月9日 543
  • ByteBall交易单元校验过程

    相比于在单链结构中,在DAG中对交易单元要更加复杂,不仅需要检查交易单元的格式是否正确、交易单元是否发生双花、交易单元是否违反DAG构建规则,还需要对交易单元中承载的应用进行检查(比如支付、投票、认证等)。当钱包构造新的交易单元或者接收到到网络上的交易单元时,需要对其进行校验。 检查过程中,ByteBall采用一个全局变量objValidationState…

    2018年10月27日 479
  • ByteBall中DAG的几个性质

    DAG是有向无环图,它由结点和边组成。在ByteBall中有一条特殊的路径,称为主链,它用来实现DAG中结点的全局定序。一般来讲,ByteBall的DAG可以表示为如下形式,其中中间粗箭头连接的为主链。 对于DAG中的一个结点,ByteBall定义了如下几个属性: level:表示结点所处的层级,通过递归方式进行计算,子结点的level等于父结点中最大的le…

    2018年10月22日 566
  • ByteBall核心算法之交易单元生成过程

    交易单元生成过程 图结构包含结点和边两部分数据,结点数据主要使用数据表units存储,边主要采用数据表parenthoods存储。从数据结构角度来看,与结点数据相关的两个主要数据结构为: 交易单元(unit):用来存储交易的属性数据,是核心数据结构,相关的数据表为units 连接点(joint):主体由交易单元unit组成,同时包括一些结点的额外属性,比如b…

    2018年8月31日 583
  • ByteBall网络节点通信协议详解

    ByteBall网络节点通信协议详解 P2P网络是区块链网络的基础,网络中各个节点通过相互交换消息实现各种功能,包括收发交易、数据同步等操作。本文将对ByteBall网络节点的通信接口进行详细分析。 ByteBall网络节点之间采用websocket连接,采用json格式消息进行通信,消息可表示为{type: type, content: content}。…

    2018年6月14日 771

联系我们

加入ByteBall技术群请添加

QR code