1. 程式人生 > >2018年,Mixin 如何在不可能三角的限制下設計一個高併發和快速確認的閃電網路

2018年,Mixin 如何在不可能三角的限制下設計一個高併發和快速確認的閃電網路

不可能三角 : 一個分散式記賬系統,不可能同時滿足 可擴充套件性,安全性,和去中心化。

  1. 可擴充套件性 :指效能,或者併發能力
  2. 安全性 :指賬本一致
  3. 去中心化 :這個最有迷惑性,因為人們會把去中心化當作目的。但是去中心的目的是提高生存能力,去中心化越徹底,生存能力越強。

比特幣如何選擇

以比特幣為例,比特幣選擇了安全性和去中心化,因此犧牲了效能。但是從其誕生的時代和目的看,這種選擇是合理的。比特幣白皮書釋出10年後,可以做一個樂觀的預測,只要還有電腦和網路,比特幣就不會被消滅。舉個例子,你現在拿出一臺有1T硬碟的電腦,有網路,就可以下載比特幣的客戶端和全部賬本。就可以建立錢包,接受和傳送比特幣,還可以參與挖礦,無需任何人批准,不需要再花一筆錢。如果全世界礦池和專業礦工都放棄挖礦,你的膝上型電腦還能繼續挖礦。

不僅僅是比特幣,包括以太坊,Zcash,Monero,Dash等基於 POW 演算法的公鏈徹底死亡的概率都很小,甚至包括 DogeCoin。

趨勢

會有更多的基於 POW 的區塊鏈出現,會有基於 POW 的區塊鏈專案逐漸消亡。成功的區塊鏈專案會嘗試提供快速確認機制,比如比特幣閃電網路和 Liquid,還有以太坊的分片技術。也會有新的分散式賬本系統提供快速確認的方案。

什麼樣的閃電網路是相對安全的

我們認為在閃電網路方向上的創新是有些是安全的,有些是危險的。

安全的創新

我們知道交易所本身經營好壞並不影響在交易所掛牌的企業。因為交易所只是一個高速交易平臺,本身只提供記賬,並因此獲得收入。即使交易所逐漸沒落,人們可以選擇把股票寄存在其他交易所。企業也可以選擇在別的地方掛牌。

目前已經生存下來的比特幣,以太坊等資產可以定義為某種資產,只提供資產交易機會的交易所,閃電網路是安全的,因為即使交易所或者閃電網路逐漸沒落,人們的資產本身不受影響,依然可以提到其他地方。

危險的創新

有些閃電網路試圖建立一種新資產,以某種價格與外界數字貨幣資產進行交換,我們認為這種方法是危險的,因為這種資產就是一種承兌債券。一旦企業陷入經營困境(從概率上看所有企業都會遇到這個問題),所有已經把資產投入該閃電網路的人就成了債主,而此時企業往往已經陷入困境,無法承兌了。 即使該企業在沒有經營困難的情況下想停止經營也是非常困難的,因為他發出去的債券已經在流通中,已經在別人錢包裡面。企業始終欠著錢。

Mixin的選擇

Mixin 非常清楚任何產品都有生命週期,從尊重使用者選擇,保護使用者資產的角度出發,以實現1秒確認,超大吞吐量為設計目標,捨棄終極的去中心化,追求可擴充套件性和安全性是非常合理的。 基於這個前提,Mixin 節點的物理基礎只能是高速,高效能伺服器。這是一個重要假設,後面會提到。

具體的思路:

  1. 放棄賬戶思路,使用 utxo 實現賬戶,意味著對賬戶餘額或者其他屬性有一個共識,該屬性可變,導致賬戶就是一個狀態機。就必然要求對賬戶的操作有一定的順序,否則不同的節點上產生的結果會不一樣。舉個例子,一個商戶,通過向 1000 個客戶售賣虛擬商品,獲得了 1000 個以太坊,假設該商戶現在需要給另外 1000 個客戶每人付款 1 個以太坊,商戶的賬戶可以生成 1000 交易請求,然後將交易請求傳送給 50 個全節點以加快速度,即使所有這些交易都是正確的,但是在賬戶模型體系下他們是不能同時被確認的,他們必然要按著順序一個一個或者一批一批的確認。

    基於 utxo,這個賬戶已經擁有 1000 個有效的 utxo,他可以生成 1000 個有效的交易,而且這些交易請求直接傳送給50個節點,所有交易都能立刻被確認,因為utxo 不需要賬戶。uxto 資料的特點是沒有狀態,甚至不能認為是資料庫,因為只有新增操作,沒有刪除和修改操作。不存在狀態共享,因此可以完全非同步併發處理。

  2. 使用 DAG,而不是 block 儲存賬本。

    DAG 本身是非常成熟的儲存技術方案。Byteball,IOTA,NANO 都在使用。通過 DAG 實現了非線性儲存,儲存塊不再按著單一順序排列,而是可以隨時插入。基於utxo 交易模型本身已經解除了交易順序的依賴,再結合dag再可以實現無順序依賴的儲存單元。

    同時由於 DAG 結構裡面後面的交易都要引用之前的交易,這使的篡改舊的交易記錄變的極度困難。因為這需要我能夠得到所有引用我交易的人的統一配合。

  3. 用 BFT 確認交易,而不是依賴指定見證人,或者引用數。

    在使用 DAG 作為賬本需要解決的問題是如何識別雙花和影子鏈攻擊。 Byteball 的方案是引入可信見證人機制,兩筆交易都被斷定合理的情況下,擁有可信見證人多的那筆交易被認定為合理交易。IOTA 是通過演算法來選定見證人。NANO 是通過 balance-weighted-voting DPOS 投票來處理雙花。hashgraph 是節點根據 BFT 演算法投票認定儲存記錄上的交易是否有效。

    Mixin 防止雙花和影子鏈的方法是隻有經過BFT簽名過的交易才會被記錄到 DAG 上。

  4. 基於 BFT 和 utxo 可以實現1秒確認交易

    客戶把交易發給某一個節點,該節點驗證過之後先簽名,然後將交易在節點群內廣播,其他節點收到廣播進行檢查,檢查通過的交易使用自己的私鑰簽名,然後發還給源節點。 源節點根 BFT 統計節點簽名結果就可以驗證該交易是否有效,有效的簽名結果將傳送給所有節點進行持久化同步。根據要求,所有節點在收到持久化同步塊的時候,會驗證該塊內的交易是否具有足夠的簽名,如果發現有錯誤的簽名,那麼將被認為是攻擊塊。回顧這個流程,我們可以發現 Mixin 節點在驗證交易時只驗證 utxo 是否有效,不做其他檢查,工作量是幾乎固定的。耗費時間只和cpu效能,和硬碟讀取速度大小有關。還記得我們的假設麼?Mixin 就是要用高速高效能伺服器。Mixin 測試網的測試結果表明:伺服器驗證單一交易有效的往返傳輸時間最大在 300 毫秒,最快在 40 毫秒。所以 50 個節點 1 秒確認交易是完全可以做到的。

結論

通過這4個措施,結合我們的目標和設計前提,可以實現只受物理效能限制的交易系統,提高網速,加大記憶體,提高CPU效能,提高硬碟讀寫速度都可以有效的提高整體效能。

去中心化程度/生存能力對比:

Mixin 網路的生存能力弱於比特幣網路,無審批機制使得其生存能力高於DPOS機制的高速轉賬網路。