技術解讀:單鏈的艱難權衡

買賣虛擬貨幣

作者:Steven Pu

眾所周知,即使對技術人員來說,區塊鏈技術白皮書的資訊密度也是相當大的。因此,我們編寫了一系列文章,嘗試把Taraxa白皮書裡的技術術語分解成更便於理解的短文並配上了更多圖片,從而提高閱讀樂趣。

速度vs. 安全性—你想選擇哪一邊?

對速度的訴求

隨著區塊鏈領域的成熟,比特幣和以太坊這樣的先驅性網路正在陷入效能上的瓶頸,例如:

  • 吞吐量:網路在一定時限內能夠處理的交易數量

  • 延遲性:一筆交易從傳送到最終確認需要多長的時間

  • 可擴充套件性:隨著網路規模的擴大(例如,節點數量),網路吞吐量和延遲性的降級程度

吞吐量通常用TPS來衡量

在這三個術語中,或許吞吐量是最能引起讀者的興趣的,那麼我們首先來談談如何改善這個指標。吞吐量的衡量標準通常是一個網路每秒能夠處理的交易數量,或者說TPS。

關於安全性

礦工決定“押注”哪個區塊成為最長鏈

像比特幣或以太坊這樣的系統都是由包含多組交易的區塊組成的單鏈。網路一次向前推進一個塊(在給定的平均時限內),這意味著網路在該時限內可以處理的最大交易數量受到區塊容量的限制。

在任何給定時間內,總體而言網路產生的不是一個而是多個區塊(這種情況發生的頻率取決於特定區塊鏈的具體情況)。在單鏈系統中,礦工積極選擇他們希望接受(下注)的區塊,並在這個區塊上繼續構建新的塊。最終,只有最長的鏈,也就是最大的礦工群體所押注的鏈能夠勝出,而其他鏈條上的區塊則會被丟棄,基本上就等於白做功。

區塊鏈並不是一條鏈,它更像是一棵樹,不斷地丟棄一些樹枝

因此,儘管區塊鏈被描述成一條「單鏈」,它實際上更像一棵樹,有很多枝條的樹。但只有一根樹枝能存活下來,剩下的樹枝都會被丟棄。

試圖欺騙網路的攻擊者通常會嘗試透過擊敗網路中其餘的使用者,構建最長的樹枝並將惡意交易插入該分支上的區塊中來篡改歷史記錄。例如,攻擊者A向B購買了一些東西並向B傳送1個幣。B向A提供其購買的商品。然後A攻擊網路並建立一個更長的鏈,在這個鏈上它將幣傳送給了C而不是B。在這種情況下,A現在得到了B提供的產品,但B從未收到付款。

許多單鏈網路通常會採取一種簡單方法來改善惡意分支,就是延緩網路程序。這樣做降低了攻擊者透過更少的資源,利用網路延遲產生的臨時資訊不對稱性來誤導誠實的節點押注其惡意分支的可能性。例如,在BTC網路中,他們調整了工作量證明的迷題難度,從而設定了網路的出塊間隔,並確保這個延遲遠遠長於一個區塊傳播到整個網路中的所有節點所需的時間。

一些單純的提速方案

為了增加TPS,我們提出了兩個單純的解決方案:增加區塊可以容納的交易數量或增加在同一時間段內能夠處理的塊數。讓我們來看看這兩個方案的結果。

方案1:更多區塊

區塊數量的增加能夠提高吞吐量嗎?

如果同一時段內能夠處理的區塊數量增加了會怎樣?舉個例子,假設在每一段時間內平均處理的區塊從1塊增加到了10快。

請記住,我們仍然只能在每個時間段內選擇一個區塊。如果你只是簡單地增加區塊的總數,這意味著每個礦工現在會有更多的選擇,但他們仍然只需要選擇一個區塊,這意味著當有了更多的區塊選擇,被棄置的區塊也會更多。

理所當然地,在同一時段記憶體在更多的區塊選擇也會帶來更多的「樹枝」,讓攻擊者可以更輕鬆地利用網路。

這不是一個理想的解決方案。讓我們看看下一個。

方案2:更大的區塊容量

容量更大的區塊能夠提高吞吐量嗎?

如果我們能夠擁有容量大得多的區塊鏈會怎樣?舉個例子,假設我們現在可以在一個區塊中輸入20,000筆交易,而不是2,000筆,也就是說我們在同一時間段內能夠儲存的交易比以前多了很多。

當區塊容量變得更大,由於其規模,區塊在整個網路中傳播的速度就會慢很多。在既定的時間範圍內,不同節點在任一時刻看到不同區塊的可能性又被提高了。

同樣地,這個計劃也會產生更多的「樹枝」,降低網路的整體安全性。

吞吐量和安全性的艱難權衡

《在比特幣網路中確保交易處理速度的高效性》,Sompolinsky和Zohar

在單鏈網路中,吞吐量和安全性之間似乎始終難以平衡。如果你提高了吞吐量,最終就不得不犧牲安全性,而當你在嘗試彌補這些安全漏洞時,最終又會抹殺在吞吐量方面取得的增長。Sompolinsky和Zohar首先在他們的論文中對這種權衡進行了調查,他們的研究也啟發了Taraxa的賬本設計。

這種困境應該如何解決?我們的選擇是從單鏈拓撲轉變為DAG拓撲,具體內容將在下一篇文章中討論。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;