就來(lái)談?wù)?a href="http://www.1cnz.cn/tags/比特幣/" target="_blank">比特幣所采用的最長(zhǎng)鏈規(guī)則,也即“中本聰共識(shí)算法”。
由于 Conflux 采用的是不同于最長(zhǎng)鏈規(guī)則的最重鏈規(guī)則,所以在以往的文章中我們比較經(jīng)常解釋 Conflux 沒(méi)有選擇最長(zhǎng)鏈規(guī)則的原因,而對(duì)最長(zhǎng)鏈規(guī)則本身的優(yōu)勢(shì)介紹得比較少。這次我們將從一個(gè)更全面的視角來(lái)討論最長(zhǎng)鏈規(guī)則的優(yōu)勢(shì)與劣勢(shì)。
首先我們來(lái)談?wù)勛铋L(zhǎng)鏈規(guī)則的優(yōu)勢(shì)。
從比特幣開(kāi)始,無(wú)論是最初的只是改改參數(shù)的萊特幣,還是后來(lái)提出的 Bitcoin-NG [1], 以及采用了 DAG 結(jié)構(gòu)的 OHIE [2],眾多公鏈共識(shí)算法的核心理念都是最長(zhǎng)鏈規(guī)則。
能夠得到如此多公鏈項(xiàng)目的青睞,最長(zhǎng)鏈規(guī)則的過(guò)人之處究竟在哪里呢?
OHIE 的論文 [2] 提到了很重要的一點(diǎn):對(duì)于一個(gè)區(qū)塊鏈系統(tǒng),最重要的是一個(gè)“端到端”的安全性證明——只針對(duì)幾種特定的攻擊方式證明安全性是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)橛肋h(yuǎn)無(wú)法避免將來(lái)有更聰明的人設(shè)計(jì)出更巧妙的攻擊策略。
在端到端的安全性證明這點(diǎn)上,最長(zhǎng)鏈規(guī)則具有足夠的先發(fā)優(yōu)勢(shì)。作為開(kāi)加密貨幣之先河的比特幣的核心規(guī)則,最長(zhǎng)鏈規(guī)則得到了最廣泛和深入的研究。
實(shí)際上,即使是被研究最多的最長(zhǎng)鏈規(guī)則,其安全性的完整證明也要晚至 2016 年 9 月才由康奈爾大學(xué)的密碼學(xué)教授 Rafael Pass 等人首次完成 [3] 。(中本聰在比特幣白皮書(shū)中的證明只考慮了特定的攻擊方式,其它一些更早的工作則只證明了最長(zhǎng)鏈規(guī)則在特定條件下的安全性。)Rafael 的證明可以直接推廣到任何一個(gè)合理設(shè)計(jì)的基于最長(zhǎng)鏈規(guī)則的公鏈系統(tǒng)。
相比之下,其它的共識(shí)算法包括最重鏈規(guī)則在 2019 年以前都沒(méi)有一個(gè)完整的安全性證明,甚至有些共識(shí)算法連在限定條件下的安全性證明都沒(méi)有。我們將把有關(guān)最重鏈規(guī)則的問(wèn)題以及 Conflux 的應(yīng)對(duì)留在之后的幾期來(lái)講,此處不再展開(kāi)。
那么 Conflux 為什么沒(méi)有采用最長(zhǎng)鏈規(guī)則呢?
主要原因在于最長(zhǎng)鏈規(guī)則對(duì)“孤塊”非常敏感。
“孤塊”是指那些形式上合法但是最終沒(méi)有進(jìn)入主鏈(最長(zhǎng)鏈)的區(qū)塊。在理想的情況下,誠(chéng)實(shí)節(jié)點(diǎn)每次生成區(qū)塊都會(huì)將最長(zhǎng)鏈的長(zhǎng)度增加一。但是,如果兩個(gè)誠(chéng)實(shí)節(jié)點(diǎn)近乎同時(shí)挖出了兩個(gè)區(qū)塊,互相都沒(méi)有引用對(duì)方作為父親區(qū)塊,那么這兩個(gè)區(qū)塊就形成競(jìng)爭(zhēng)關(guān)系。相互競(jìng)爭(zhēng)的區(qū)塊最終至多只有一個(gè)進(jìn)入最長(zhǎng)鏈中,其余的都會(huì)成為不對(duì)最長(zhǎng)鏈做出任何貢獻(xiàn)的“孤塊”。
一旦系統(tǒng)中的“孤塊”過(guò)多,最長(zhǎng)鏈的增長(zhǎng)速率就會(huì)受到影響,進(jìn)而給攻擊者可乘之機(jī)。例如在 50% 的誠(chéng)實(shí)區(qū)塊成為“孤塊”的情況下,最長(zhǎng)鏈的平均增長(zhǎng)速度就只有誠(chéng)實(shí)節(jié)點(diǎn)出塊速度的一半,此時(shí)攻擊者只需要 34% 的總算力(多于誠(chéng)實(shí)算力的一半)就可以對(duì)任意早的交易發(fā)起雙花攻擊。
“孤塊”的出現(xiàn)頻率與一個(gè)比值有關(guān):平均生成一個(gè)區(qū)塊所需的時(shí)間 / 區(qū)塊在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中廣播需要的時(shí)間,我們暫且稱為安全性系數(shù)。這個(gè)比值越高,則孤塊出現(xiàn)的頻率越少,相應(yīng)的也就更安全。根據(jù)文章 [3] 中的分析,在這個(gè)比值大于 7 時(shí),雙花攻擊所需算力的理論閾值是 45% 左右;比值大于 60 時(shí),雙花攻擊所需算力的理論閾值是 49.5% 左右。目前比特幣的比值在 60 左右。
因此我們有以下四個(gè)式子:
1. 安全性系數(shù) = 平均生成一個(gè)區(qū)塊的時(shí)間 / 區(qū)塊廣播時(shí)間
2. 網(wǎng)絡(luò)帶寬系數(shù) =區(qū)塊大小 / 區(qū)塊廣播時(shí)間
3. 單筆交易負(fù)載 = 區(qū)塊大小 / 每個(gè)區(qū)塊交易數(shù)量
4. TPS = 每個(gè)區(qū)塊交易數(shù)量 / 平均生成一個(gè)區(qū)塊的時(shí)間
也就是說(shuō),
安全性比值 * 單筆交易負(fù)載 * TPS = 網(wǎng)絡(luò)帶寬系數(shù)
上式中除了 TPS 之外的每項(xiàng)都對(duì)應(yīng)了一個(gè)在最長(zhǎng)鏈規(guī)則下提高 TPS 的切入點(diǎn):
1. 降低安全性系數(shù):簡(jiǎn)單地改比特幣的參數(shù),犧牲一部分安全性以換取更高的效率。例如縮短出塊時(shí)間或者增大區(qū)塊尺寸(相當(dāng)于增加區(qū)塊廣播時(shí)間)。
2. 降低單筆交易負(fù)載:使用致密區(qū)塊(compact block)技術(shù),把完整傳輸每筆交易(約數(shù)百 KB)變成傳輸交易的短 ID(4~6 B)。
3. 提高網(wǎng)絡(luò)帶寬系數(shù):提高共識(shí)節(jié)點(diǎn)的加入門檻,犧牲去中心化程度以換取更高的效率。極端情況下可以只保留少量光纖直連的超級(jí)節(jié)點(diǎn)(比如說(shuō) 21 個(gè))。
這幾個(gè)修改的方向都非常直接有效,但是可以帶來(lái)的性能提升是比較有限的,過(guò)度使用帶來(lái)的犧牲也非常大。例如將區(qū)塊的尺寸增加到上百 MB 或者將共識(shí)節(jié)點(diǎn)數(shù)量減少到 20 個(gè)都很可能是得不償失的做法。
實(shí)際上,Bitcoin-NG 和 OHIE 利用一些特殊的設(shè)計(jì)繞過(guò)以上限制。另一方面,如果將樹(shù)圖結(jié)構(gòu)與最長(zhǎng)鏈規(guī)則結(jié)合,其實(shí)也可以很簡(jiǎn)單地設(shè)計(jì)出高 TPS 的共識(shí)機(jī)制。關(guān)于這一點(diǎn),我們將專門寫(xiě)一篇文章詳細(xì)討論,此處先不展開(kāi)。
總而言之,在提高 TPS 這條路上,盡管最長(zhǎng)鏈規(guī)則受到以上分析的制約,但通過(guò)合理的設(shè)計(jì),這個(gè)天花板還是可以繞開(kāi)的。
最長(zhǎng)鏈規(guī)則最大的弱點(diǎn),是區(qū)塊的確認(rèn)時(shí)間。
如果把安全性系數(shù)設(shè)為 10,則等待 6 個(gè)確認(rèn)區(qū)塊的平均時(shí)間是 60 * 區(qū)塊廣播需要的時(shí)間;如果需要在兩分鐘內(nèi)確認(rèn)一筆交易,就需要把區(qū)塊廣播時(shí)間控制在 2 秒內(nèi)。
實(shí)際上,在區(qū)塊廣播中的每一跳,每個(gè)節(jié)點(diǎn)都需要進(jìn)行驗(yàn)證和執(zhí)行等一系列操作之后才能向下一跳轉(zhuǎn)發(fā)。在節(jié)點(diǎn)數(shù)較多的時(shí)候,即使是不大的區(qū)塊想要在 2 秒內(nèi)傳遍全網(wǎng)所有(或絕大多數(shù))節(jié)點(diǎn)也是一件非常困難的事情。從目前的網(wǎng)絡(luò)環(huán)境來(lái)看,3 到 5 分鐘的確認(rèn)時(shí)間基本上已經(jīng)是最長(zhǎng)鏈規(guī)則的極限。
Conflux 的原型版本(也即目前公開(kāi)的版本,新版本的文章和技術(shù)規(guī)范尚未公開(kāi)發(fā)布)中區(qū)塊的確認(rèn)時(shí)間是 4 到 7 分鐘,看起來(lái)也沒(méi)有做得更好。實(shí)際上,隨著我們對(duì)最重鏈規(guī)則進(jìn)行更深入的研究并進(jìn)一步發(fā)掘其特有的潛力,在 PoW 鏈的確認(rèn)時(shí)間這點(diǎn)上我們已經(jīng)取得了驚人的突破,實(shí)現(xiàn)了遠(yuǎn)超最長(zhǎng)鏈規(guī)則的確認(rèn)速度……
評(píng)論
查看更多