当前位置:首页 > 资讯 > 区块链技术 > 正文

虾说区块链-基础篇-16

发布:中币网   时间:2017-10-18 11:30:00   加入收藏 打赏

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

虾说区块链-基础篇-16

 

相关技术-DAG

区块链系统中,区块通过区块头之间链接,从而形成一条链状的数据存储结构形式,当然随着区块链技术的发展,现在对链的结构也提出了新的模式,这里大致介绍下DAG图和区块链中DAG图模式的链接。当然现在也有人认为这不是一种区块链技术了,笔者个人认为还是区块链技术的一种模式,所以归结在这里大致简单说明下DAG,如有理解不当请及时指正。

虾说区块链-基础篇-16

 

先来理解下计算机数据结构中图这个概念,图(Graph)是由定点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),这个表示里G就表示一个图,V是图中的顶点的集合,E是图中边的集合。往通俗点来说,数据结构中线性表和树一般都是一对一的关系或者一对多的关系,图就理解为多对多关系。

虾说区块链-基础篇-16

 

这里用通讯链路的符号来标记节点间的互联(理解有方向和无方向),图是一种多对多的关系,在节点间互联的时候添加一个方向,那么将图分为有向图和无向图。关于树的数据结构算法分析比较复杂有兴趣的可以去仔细看下,包括遍历、最小生成树、最短路径等,这里我们讨论DAG图。

DAG图称为有向无环图:树、DAG图、有向图

虾说区块链-基础篇-16

 

上图很容易理解DAG的概念,你从图中任意一个节点出发,根据方向无法回到原节点的图就叫做有向无环图。

那么在区块链中我们一直说到区块通过区块头链接,各个区块的一条长链,并且新的区块顺序产生下去。现在有些分布式系统通过DAG的存储模式来存储数据,并且形成数据间的关联。

在一个去中心化分布式的系统中,要求数据防篡改,那么数据存储通过DAG图的形式,允许添加新的记录作为一个新的单元,但是需要支付一定的费用,网络中其他后来用户通过自己单元内的散列值来确认早期单元,并收取费用。随着新单元的添加,每个早期单元,包括其中的散列值,直接或间接的接收越来越多后来单元的确认。

具体过程参考字节雪球的白皮书

节点申请添加数据,要求创建一个新的存储单元。

节点在网络中广播,包括内容包括:存储单元+存储的数据+承诺费用

在新的存储单元签名。用户通过地址标识。

引用自身生成的哈希值标识一个或者多个先前的存储单元。

通过引用先前存储单元的排序DAG结构,

虾说区块链-基础篇-16

 

查看这张图,这是字节雪球白皮书中图,G是创世单元,箭头的意思是子单元到上级父母单元。这里把先前的单元也理解为父母单元,那么这里不像区块链是一对一的关系,一个节点有多个关联,根据图的特性,我们不能要求单独的父子关系,那么我们只能通过沿着父子关系一直推导下去,发现多个分叉,并且同一单元在引用多个先前单元的时候,多个单元已经发生了融合,所有会发现DAG链是通过最长链(也简单理解为主链)来确认,通过每个节点多分叉的时候,又因为图的特性,分叉后又快速融合。

每一个新的单元确认先前单元,之后先前单元再确认先前单元,一步步推导,在这样的模式中,和区块链中merkle root的概念类似,你一旦改变一个,你将导致hash值被破坏,一旦一个单元被广播到网络中,并且其他用户开始在它上面构建它们的单元,想要重新编辑这个单元所需的二次修改就如雪球一样增长。

和之前区块链的系统有些差异,这种DAG模式通过单元发布后,累计确认,没有矿工的概念。网络中各个节点互相之间互助,添加新的单元,确认新的单元。

之前比特币系统中提到防止双重支付的节点之间数字货币系统,在DAG模式中通过下面方式来防止双重支付:

节点尝试使用两个一样的输出的单元的时候,那么这两个单元中一个包含另一个单元的时候,并且有一个先后顺序,那么直接拒绝后面的单元。

两个一样输出的单元,没有先后顺序,那么在整个DAG系统中,建立总顺序后,在总顺序中出现早的确认,晚的无效。

设置一个总顺序的定义:相同地址发布超过一个单元,那么要求每个后续单元包含所有先前单元。这就理解,你要发布一组单元,你先给这些单元排好顺序。

如果节点恶意发布一样顺序的两个单元,不管这两个单元输出中有没有一样的字符按照全网总顺序处理,后续单元无效。

如果用户按照协议,还是尝试同一输出两次排序后生成单元,那么就按照本身顺序,晚生成单元无效。(这个其实就是1)

    

虾说区块链-基础篇-16

最后说下为什么有人认为DAG不是区块链,又有人认为是,因为在DAG中有一个主链的概念。

主链的概念:如图说明

虾说区块链-基础篇-16

 

 

人们通常将他们的新单元链接到略小的最近单元上,这意味着DAG仅在一个方向上增长。图中的粗体,那么我们认为这个一个在DAG中沿着“子-父链”选择单个链,然后将所有单元关联到此链。所有的单元要么将直接位于这条我们称之为主链的链上,要么沿着DAG的边缘从相对少量的跃点到达。它就像一条连接着侧面道路的高速公路。

现在不少例如:byteball和lota就使用这种模式。

如果有兴趣可以详细看下字节雪球的白皮书:

http://www.bitett.com/portal.php?mod=view&aid=438(中文版)

来源:




来源:中币网  https://www.zhongbi.net/news/jishu/2620.html
声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。