從 DAG 視角看 Bitcoin 賬本

區塊鏈技術起源於比特幣,後來又衍生出了 DAG 技術流派,比如 ByteBall 項目。但若仔細審視比特幣的鏈式賬本,其實可以發現,比特幣的鏈式賬本結構本質上也是 DAG (有向無環圖)結構。

**
**

Bitcoin 賬本的鏈式結構

**
**

區塊與區塊之間通過哈希值鏈接起來,區塊內部的交易通過梅克爾樹的形式組織起來,並反應到區塊頭部的 Root Hash,如下圖所示( 注意鏈接箭頭的指向爲「原像數據–> 哈希值」) :

**
**

從 DAG 視角看 Bitcoin 賬本

圖 1 Bitcoin 賬本的鏈式結構

**
**

鏈式結構簡化變形

若將區塊頭部抽象爲一個頂點,交易也抽象爲一個頂點,那麼圖 1 可簡化爲下面的樣子,這時候就能更明顯地看出,多個倒掛樹結構串接在一起,而樹結構就是一種特殊的 DAG。

從 DAG 視角看 Bitcoin 賬本

圖 2 鏈式結構的簡化變形

UTXO 型交易結構

**
**

Bitcoin 的交易屬於 UTXO 型,每個交易可以有多個輸入與多個輸出:

從 DAG 視角看 Bitcoin 賬本

圖 3 UTXO 型交易示意圖

**
**不同的交易之間通過輸入輸出鏈接在一起(Transaction 簡寫爲 Tx),如圖 4,TxC 的兩個資金輸入來源於 TxA 和 TxB 的輸出,TxD 的三個資金輸入源也來自於 TxA 和 TxB 的輸出,TxA 還剩餘一個輸出沒有被其他交易花掉,也就是所謂的 UTXO,而 TxB 的輸出全部被花掉了:

從 DAG 視角看 Bitcoin 賬本

圖 4 交易鏈接示意圖

**
**

交易引用關係

**
**

既然 TxC 和 TxD 花費了 TxA 和 TxB 的 UTXO 輸出,那麼可以認爲,TxC 和 TxD 引用了(同時也確認了)TxA 和 TxB,所以可以得出交易引用關係圖:

從 DAG 視角看 Bitcoin 賬本

圖 5 交易引用關係圖

Bitcoin 賬本的 DAG 結構

**
**

若將圖 2 中的「原像數據–> 哈希值」的箭頭方向反轉爲「哈希值–> 原像數據」,將哈希值看成是對原像數據的指針或引用,並結合交易與交易之間的引用關係,就可以得到圖 6。

從 DAG 視角看 Bitcoin 賬本

圖 6 Bitcoin 賬本的 DAG 視圖

從表示區塊頭與交易之間的引用關係角度看,Merkle Tree 的中間層哈希值不重要,可以忽略掉,進一步簡化爲圖 7。這時可以明顯看出,後續的區塊引用了前面的區塊,後續的交易也引用了前面的交易。而在典型的 DAG 技術項目(比如 ByteBall)中,引用了某個數據對象,也就意味着確認了這個數據對象:

從 DAG 視角看 Bitcoin 賬本

圖 7 Bitcoin 鏈式賬本的 DAG 結構示意

從 DAG 視角看 Bitcoin 賬本

圖 8 Byteball 的 DAG 結構示意(圖片來自 ByteBall 白皮書)

若將圖 7 中的「Block#7 <–Block#8<–Block#9」視爲賬本的「 主幹鏈(MainChain)」,和 ByteBall 的賬本結構圖及其主幹鏈做一下對比,兩者的拓撲結構還有什麼區別呢? Bitcoin 在設計上的先見與精巧,可見一斑。

所以說在比特幣之後出現的大量項目,包括以太坊,EOS,DAG 技術流派,雖然取得了不少新發現和新成果,但都是繼承和發揚了 Bitcoin 的設計思想,嚴格來說它們都屬於局部創新或單點突破。這也從側面反應了中本聰作爲區塊鏈技術開創者的偉大。

作者:Karl 嘉楠區塊鏈研究院高級研究員

嘉楠區塊鏈:嘉楠耘智(Canaan Inc.)旗下區塊鏈板塊。

熱文搶讀:

1、對可驗證隨機函數 VRF 的簡明解釋

2、Byteball 技術剖析之一:DAG 賬本與最優樹

3、以太坊 ERC875 示例分析:一手交幣,一手交證

4、EOS“帶貨”Bancor 算法,但大多數人並未真正讀懂它

5、簡析跨鏈原子交易

從 DAG 視角看 Bitcoin 賬本