如何內行地評價公鏈(二)

比特幣 區塊鏈 廣播 中本聰 設計 加密谷 2019-05-17


如何內行地評價公鏈(二)



作者 | Conflux

來源 | Conflux(ID:Conflux-Chain)


最近幾期,Conflux 計劃推出一系列的科普文章,從一些簡單的技術原理開始,幫助大家辨別一些項目宣傳的概念中,哪些概念是可能實現的,哪些概念如果要實現,是需要有妥協的。

在第一期,我們從區塊鏈的“不可能三角”談起,談一談如果要追求極致的效率,究竟要犧牲什麼。目前在區塊鏈媒體中,有一個流傳很廣的概念叫“不可能三角”,即效率、安全、去中心化三者不可並存。和“不可能三角”出現同樣頻繁的概念,是“不可能三角”被公鏈某個項目打破。在一些媒體宣傳 Conflux 的時候,也曾經使用過這個說法。

不過,Conflux 從未在官方宣稱“打破不可能三角”,我們認為這並不是一個嚴謹的概念。只能說,這個概念被提出來的時候,還沒有人把這三件事情同時做好,並沒有人通過嚴謹的分析證明它不可能。

今天,我們來介紹另一個不可能三角。無論一個區塊鏈是公有鏈還是聯盟鏈,是 PoW 還是 PoS , 是採用中本聰共識還是 BFT 還是其他的什麼方式,都繞不開它。這個不可能三角包括三個目標。(為了便於理解,我們避免採取嚴謹的形式化語言去定義它,而是大概描述一下想法與思路)

第一篇詳見:

《 如何內行地評價公鏈(一)》

如何內行地評價公鏈(二)


在一個公鏈系統中,一筆交易被確認的時間被視為系統性能的一個重要的指標。在一些使用場景下,對確認時間的關注程度要高於吞吐率甚至是交易費。能夠識破一些虛假的確認時間宣傳,正確地判斷各種公鏈實際的確認時間,是至關重要的事情。

一筆交易從發出到最終被確認過程中,有如下的幾個時間節點:

如何內行地評價公鏈(二)


在上圖中,T0 時刻,用戶向一個或幾個礦工節點發起一筆交易的請求;礦工們在 T1 時刻確認收到了這筆交易;隨後,這筆交易被廣播到了全網(T2),但它需要等到一個礦工將其打包進入合法的區塊才可以(T3)。交易進入的區塊,在 T4 時刻被廣播到全網,等待一段時間後被確認(T5)。

區塊的確認機制在不同類型的鏈中有所區別,在以比特幣為代表的 PoW 公鏈中,區塊後面跟隨的區塊數量是判斷是否被確認的依據,當確認區塊數達到一定數量以後,交易被確認. 在一些基於 PoS 或 dPoS 的共識機制中,一些具有投票權的節點對區塊進行投票,當投票積攢到一定數量(比如:參與投票人的三分之二),就意味著絕大多數具有投票權的節點認可了這個區塊,這個區塊就是在共識機制中不可修改的了,也就是說,交易被確認了。

從用戶的角度來說,從 T0 到 T5 所經過的時間,是用戶等待的時間。下面,我們分別地來看一下每一段時間的影響因素。

在一個設計良好的系統中和穩定的網絡條件下,T0 到 T1 之間的時間不會太長,一般在毫秒級別左右。

T1 到 T2 的時間根據網絡中參與共識節點的數量,以及網絡的繁忙程度有所不同。如果只有幾個超級節點,部署著非常好的帶寬,那麼交易可以在很短的時間內被廣播到全網,如果有幾百甚至上千個參與節點,交易需要廣播的時間就會更長。有人曾經統計過比特幣的交易廣播時間,在 2013 年的時候,一筆交易廣播到多數節點時間的中位數是 1 秒左右,而到 2016 年的時候,這個時間提高到了 3 秒。

T2 到 T3 的時間取決於需要等多久有礦工願意打包這筆交易,以及礦工打包後下一個合法區塊多久被挖出來。如果一段時間內用戶發起的交易過多,用戶就必須在高額的交易費和漫長的等待中做出選擇。例如在 2017年末,Crypto Kitty 大火的時候,“打包交易進區塊”就成為了相對稀缺的資源,區塊中的交易的 Gas price 比往常上浮了約 10倍,如果你還使用往常的 Gas Price 進行轉賬,就要忍受數個小時甚至更長的等待時間。因此,Conflux 希望將吞吐率提高,增加“打包交易進區塊”這一資源的供給,來避免因為網絡擁堵帶來的這一問題。

在 PoW 的公鏈中,交易被礦工打包後,還需要等到礦工找到下一個區塊的解,才算是進入到了一個合法的區塊中。比如說,比特幣高度為 569564 的區塊生成於3月31日下午3點40左右,而高度為 569565 的區塊的出現則在半個小時之後。在 569564 剛剛挖出來的時候,無論你出多高的交易費,都要等半個小時,交易才會被打包進區塊中的。而且,這樣的事情發生的概率不是很小,一天發生四五次還是很常見的。基於概率論的分析結果告訴我們,如果網絡的平均出塊時間是 d 秒,那麼下一個區塊有 63.2% 的機率在 d 秒內被挖出來,但在極端情況下,有 5% 的機率等待時間高於 3d 秒, 有約 1 ‰ 的機率等待時間高於 6d 秒。所以出塊速度越快,這一部分的時間就越短。

T3 到 T4 的時間是區塊廣播的時間,與交易廣播的時間類似,區塊廣播的時間同樣取決於參與共識節點的數量。另外,區塊的大小也對這一時間有很大影響。所以在比特幣的緊湊區塊(Compat block)的方案中,用傳遞交易的哈希值的前6個字節代替傳遞交易。由於交易已經在網絡中廣播了一遍,所以收到緊湊區塊的節點可以自行恢復區塊,如果遇到無法恢復的交易,再向其他節點詢問。這一方式可以大大減少需要廣播的數據大小,進而減少 T3 到 T4 的時間。除此之外,還有很多關於區塊廣播的優化。

T4 到 T5 的時間,在 PoS 和 PoW 鏈中是顯著不同的。在一些 PoS 鏈中,會選出一個相對固定的投票委員會(如 EOS),或通過一個規則動態地選出一個投票委員會(如 Algorand),當區塊收集了足夠的投票以後,就意味著得到了投票委員會的認可,在區塊鏈網絡中沒有出現另一個“投票委員會”的前提下,自然沒有人能再否決或改變這一區塊。不過,一些攻擊可能改變“沒有多個委員會”這一前提。而在 PoW 鏈中,需要等到區塊後面有了足夠多的“跟隨者”,足以打敗任何一個擁有少數算力的攻擊者時,一筆交易才能算是確認。採用“投票委員會”來確認區塊可以認為是“議會的批准”,而基於“跟隨者”區塊的數量進行判斷更像是“歷史的選擇”。對於前者,在時間上有一定的優勢。

如何內行地評價公鏈(二)


總體來說,在基於 PoS 或 dPoS 的鏈中,委員會的存在可以減少區塊和交易廣播時,需要傳遞數據的數量,也有利於將 T4 到 T5 這一段區塊確認時間壓的比較低。但是,我們之前也提到過,基於 PoS 或 dPoS 的公鏈比基於 PoW 的公鏈有更多的安全性弱點,或是依賴於相對中心化的超級節點。這是一個高安全性與快速確認時間的取捨。

在基於 PoW 的鏈中,我們可以看到,網絡的平均出塊時間 d 扮演著一個很重要的角色。這個時間越長,T2 到 T3, T4 到 T5 這兩個時間段所對應的時間也就越長。但簡單地降低這個時間 d 會導致安全性問題,我們在之前的文章中也討論過這些。

Conflux 的共識機制設計,可以安全地將 d 這個時間降低到 5 ,從而在實驗中達到大概是 4 至 7 分鐘的交易確認時間。這個實驗數據,是來自對 T3 到 T5 的時間的測量。對於前面這一部分,T0 至 T2 的時間一般是秒級,與 4 至 7 分鐘進行對比可以忽略。在 Conflux 的高 TPS 和高出塊率的設定下,除非把 TPS 跑滿,T2 到 T3 的時間間隔也會在 1 分鐘以內。所以從用戶來看,Conflux 的交易確認時間是 5 至 8 分鐘級別的。對於大額支付、支付通道建立、側鏈同步等場景,這個時間是可以接受的。但對於很多場景來說,這個時間還是太長了。所以對於一些對確認時間要求比較高的交易,Conflux 也在考慮在未來支持基於 BFT 或 PoS 的側鏈,來實現較高的確認時間。


如何內行地評價公鏈(二)

相關推薦

推薦中...