美文网首页
从DAG视角看Bitcoin账本

从DAG视角看Bitcoin账本

作者: Buffalo_Lv | 来源:发表于2018-09-15 18:24 被阅读82次

    区块链技术起源于比特币,后来又衍生出了DAG技术流派,比如ByteBall项目。但若仔细审视比特币的链式账本,其实可以发现,比特币的链式账本结构本质上也是DAG(有向无环图)结构。

    Bitcoin账本的链式结构

    区块与区块之间通过哈希值链接起来,区块内部的交易通过梅克尔树的形式组织起来,并反应到区块头部的Root Hash,如下图所示(注意链接箭头的指向为「原像数据-->哈希值」):

    图1  Bitcoin账本的链式结构

    链式结构简化变形

    若将区块头部抽象为一个顶点,交易也抽象为一个顶点,那么图1可简化为下面的样子,这时候就能更明显地看出,多个倒挂树结构串接在一起,而树结构就是一种特殊的DAG。

    图2  链式结构的简化变形

    UTXO型交易结构

    Bitcoin的交易属于UTXO型,每个交易可以有多个输入与多个输出:

    图3  UTXO型交易示意图


    不同的交易之间通过输入输出链接在一起(Transaction简写为Tx),如图4,TxC的两个资金输入来源于TxA和TxB的输出,TxD的三个资金输入源也来自于TxA和TxB的输出,TxA还剩余一个输出没有被其他交易花掉,也就是所谓的UTXO,而TxB的输出全部被花掉了:

    图4  交易链接示意图

    交易引用关系

    既然TxC和TxD花费了TxA和TxB的UTXO输出,那么可以认为,TxC和TxD 引用了(同时也确认了) TxA和TxB,所以可以得出交易引用关系图:

    图5  交易引用关系图

    Bitcoin账本的DAG结构

    若将图2中的「原像数据-->哈希值」的箭头方向反转为「哈希值-->原像数据」,将哈希值看成是对原像数据的指针或引用,并结合交易与交易之间的引用关系,就可以得到图6。

    图6  Bitcoin账本的DAG视图

    从表示区块头与交易之间的引用关系角度看,Merkle Tree的中间层哈希值不重要,可以忽略掉,进一步简化为图7。这时可以明显看出,后续的区块引用了前面的区块,后续的交易也引用了前面的交易。而在典型的DAG技术项目(比如ByteBall)中,引用了某个数据对象,也就意味着确认了这个数据对象:

    图7  Bitcoin链式账本的DAG结构示意 图8  Byteball的DAG结构示意(图片来自ByteBall白皮书)

    若将图7中的「Block#7<--Block#8<--Block#9」视为账本的「主干链(MainChain)」,和ByteBall的账本结构图及其主干链做一下对比,两者的拓扑结构还有什么区别呢? Bitcoin在设计上的先见与精巧,可见一斑。

    所以说在比特币之后出现的大量项目,包括以太坊,EOS,DAG技术流派,虽然取得了不少新发现和新成果,但都是继承和发扬了Bitcoin的设计思想,严格来说它们都属于局部创新或单点突破。这也从侧面反应了中本聪作为区块链技术开创者的伟大。

    相关文章

      网友评论

          本文标题:从DAG视角看Bitcoin账本

          本文链接:https://www.haomeiwen.com/subject/yxdtnftx.html