Cardano未來的延展性怎麼樣?

2023/10/28閱讀時間約 12 分鐘

原文: Cexplorer.io

原圖: Cexplorer.io

raw-image

這篇文章將討論Cardano目前的延展性,並考慮了Input Endorsers (輸入背書者) 可以如何改進它。我們將不涵蓋Hydra或其他擴展Cardano的選項。在第一層延展性方面最先到來的改進將是Input Endorsers (儘管在此之前可能會有一些部分性的改進)。

Cardano目前的延展性

每秒交易數 (Transactions per Second, TPS) 可以告訴我們在一段特定的時間內有多少人可以使用該網路。TPS是網路的最大吞吐量。

對於Cardano來說,TPS並不是一個合適的指標。基於UTxO的會計模型允許在單個交易中將多個資產發送給多個接收者。這樣的交易可以將資產發送給100個接收者,而且比網路必須處理100筆單獨交易時要輕量得多。

看看Cardano目前處理的交易類型。你會發現大約60%是智能合約交易,35%是簡單交易 (例如A向B發送資產),而5%是帶有元數據的交易。

為了簡單化,我們將在文章中使用TPS指標,並且在大多數情況下,我們僅考慮簡單的交易。

計算TPS相對簡單。對於一個粗略的估計,我們只需要知道區塊大小、平均交易大小和區塊頻率。

Cardano每20秒鐘鑄造一個新區塊。區塊和交易的最大大小由以下協議參數定義:

  • 最大的區塊尺寸: 90,112 bytes
  • 最大的交易大小: 16,384 bytes

一個簡單的Cardano交易的大小在250到500 bytes之間。大多數情況下,你會看到一筆交易大約300 bytes。具有多個輸入或輸出的交易 (比如智能合約交易) 則會更大。

交易中的輸入和輸出越多,交易的大小就越大。通常,會選擇一個較大的輸入,從中創建兩個輸出。一個輸出由接收者收到,另一個輸出將部分資產退還給發件人。該交易必須包含一個見證 (witness,約100-200 bytes)(編按:"見證"是為了確保該交易行為是由持有者授權的簽章所簽屬進行)。

如果我們假設區塊中只有300 bytes大小的交易,那麼一個區塊可以容納300筆交易。如果將這個數字除以20秒 (鑄造區塊的頻率),我們得到每秒15筆交易 (TPS)

如果我們考慮在區塊中只有大型智能合約交易,大小為16,000 bytes,大約只能容納6筆進入區塊。這樣每秒的交易量 (TPS) 將只有0.3。然而,一個大型智能合約交易可以包含大約250個接收者,因此一個區塊可以為1,500個接收者提供服務。如果我們通過接收者而不是交易數來計算TPS,我們會得到75

考慮到目前的交易類型,Cardano目前的最大吞吐量大約是每秒40-50個接收者。這比僅考慮TPS和簡單交易要多大約3倍。

有必要意識到,與其他區塊鏈相比,Cardano區塊的大小相對較小。比特幣區塊的理論最大大小為4 MB (SegWit)。區塊更現實的最大大小是2 MB。過去一年的平均值大約是1.6 MB。而比特幣平均每10分鐘鑄造新的區塊。比特幣大約可以處理7筆TPS。

以太坊平均每12秒鑄造一個新區塊。以太坊的區塊大小並非固定 (不受區塊大小的限制),而是取決於每個區塊中包含的交易所使用的GAS量。 GAS限制 (交易執行的複雜性) 決定了區塊大小,可以進行動態調整。目前,GAS限制設置為15M。在過去的幾個月中,區塊的大小範圍為140-170 KB。以太坊每天約鑄造7,200個區塊,確認約1百萬筆交易。每個區塊約有140筆交易。以太坊的平均交易大小約為1000 bytes。目前,以太坊接近其容量極限運作,其每秒交易數 (TPS) 為12。

Algorand 的區塊大小為5 KB,區塊時間為3.3秒。它可以實現6,000 TPS,團隊計劃將其提升到10,000。

比特幣具有較長的區塊時間,但也因此可以擁有較大的區塊大小。TPS 主要受區塊時間限制。以太坊的區塊時間大約是卡爾達諾的一半,同時區塊大小大約是卡爾達諾的2倍。儘管如此,目前的TPS僅為12。如果我們僅計算約500 bytes的簡單交易,那麼TPS可能會在30左右。這大約是Cardano的兩倍。

Algorand具有較大的區塊大小,同時擁有非常短的區塊時間。這是其高TPS的原因之一。我們將在與輸入背書者 (Input Endorsers) 相關的內容中地談到這個項目。

Cardano區塊的大小很可能可以增加到180 KB,並且區塊鑄造的頻率可以設置為15秒,而對性能不會產生負面影響。在這種情況下,TPS將為40,略高於以太坊。

然而,增加10個TPS將不會帶來顯著的差異。在未來幾年內,區塊鏈必須能夠以每秒數千的TPS比例進行擴展。有些網路據稱已經能夠實現這一點。Cardano的使命要求達到類似的數字。Cardano能夠通過輸入背書者實現這一目標嗎?

輸入背書者 (Input Endorsers)

輸入背書者可以增加Cardano的吞吐量和速度,因為交易可以持續流動,而不需要等待共識。Cardano將擁有三種類型的區塊,分別是排名區塊、背書區塊和輸入區塊。交易只會在輸入區塊中。背書區塊將參考多個輸入區塊。

Cardano將時間細分為槽 (slots)。目前,大約20秒鑄造一個區塊,因此大多數的時間節點處於閒置狀態。(編按:此圖每一格為一秒,只有間隔大約20秒會產生一個區塊)

Cardano將時間細分為槽 (slots)。目前,大約20秒鑄造一個區塊,因此大多數的時間節點處於閒置狀態。(編按:此圖每一格為一秒,只有間隔大約20秒會產生一個區塊)

這與Algorand已經實施的概念非常相似,稱為區塊流水線。Algorand使用了交易參考的概念,這是其高吞吐量的原因之一 (當然這不是唯一的原因)。在我們深入了解輸入背書者之前,讓我們簡單解釋一下Algorand中的區塊流水線是如何運作的。

Algorand網路會隨機選擇每個區塊的用戶委員會,然後在單一回合中對該區塊進行提議和投票。

在Algorand中有兩種類型的區塊:主鍵區塊和微區塊。主鍵區塊用於在網路上達成共識。除了其他信息 (有關提議者、委員會等的信息),主鍵區塊還引用多個微區塊。微區塊用於儲存交易數據。

委員會只對主鍵區塊進行投票,不對微區塊進行投票。在微區塊被包含在主鍵塊中之前,參與節點會對其進行驗證。

Algorand只在主鍵區塊中包含對狀態變化的引用,而不是整個帳本的狀態。引用只是在一個區塊中狀態發生變化的哈希值 (32 bytes)。哈希比儲存整個狀態要小得多。這減小了主鍵區塊的大小,並允許更快地在網路中傳播和驗證塊。

輸入背書者和區塊管道在許多方面都有相似之處:

  • 這兩個功能將區塊分為兩部分:一個用於共識,一個用於交易。
  • 這兩個功能都允許不受共識過程的影響,不斷地流動交易塊。
  • 這兩個功能旨在通過減少區塊傳播時間並允許更高的交易速率來提高網路的吞吐量和速度。

可以說IOG團隊實施了一個已在實際運作的相似解決方案。另一方面,這兩種解決方案也存在一些差異。最大的區別可能是Algorand的區塊管道依賴於單層的認證塊,而Cardano的輸入背書者則依賴輸入、認證和排名區塊的分層結構。

讓我們描述一下在實施輸入背書者功能後將在Cardano中使用的區塊。我們將從頂部 (網路共識) 描述到底部 (數據)。

  • 排名區塊 (RB, ranking blocks) 用於在Cardano網路上達成共識。它們與當前的區塊相似,唯一的區別是它們不包含任何交易數據。相反,它們包含對彼此兼容的一組認證區塊的引用。此外,每個排名區塊都包含了創建它的區塊生成者的簽名。排名塊由插槽 (slots) 領袖生成,這些領袖根據其質押份額由協議隨機選擇。排名區塊負責維護區塊鏈的安全性和最終性。它們每15-30秒可以產生一次。
  • 背書區塊 (EB, Endorsement blocks) 包含對單個輸入區塊的引用,以及創建它的輸入背書者的簽名。它們由輸入背書者生成並整合傳輸,並由區塊生成者進行有效性檢查。背書區塊有一個父母區塊,即鏈上的最後一個排名區塊,它們可以擁有多個 (兼容的) 子區塊。它們每5-10秒可以產生一次。
  • 輸入區塊 (IB, Input blocks) 包含交易數據。它們由隨機選擇的輸入背書者生成並進行整合傳輸,這些輸入背書者可以從內存池中選擇交易並將其傳播到網路中。輸入區塊沒有任何父母區塊或子區塊,也不參與共識過程。它們僅僅是向網路傳播交易的一種方式。它們每0.2-2秒可以產生一次。
圖中為所有區塊可能的鑄造頻率。輸入區塊 (IB) 每秒鑄造。背書區塊 (EB) 每5秒鑄造。排名區塊 (RB) 每20秒鑄造。

圖中為所有區塊可能的鑄造頻率。輸入區塊 (IB) 每秒鑄造。背書區塊 (EB) 每5秒鑄造。排名區塊 (RB) 每20秒鑄造。

背書區塊僅包含對單一輸入區塊的引用。一個背書區塊可以被其他與之兼容的背書區塊引用。

例如,如果一個背書區塊 EB-1 引用了一個輸入區塊 IB-1,另一個背書區塊 EB-2 引用了一個輸入區塊 IB-2,且 IB-1 和 IB-2 都沒有衝突的交易,那麼 EB-2 可以引用 EB-1 為父區塊。這樣,EB-2 就成為 EB-1 的子區塊,而 EB-1 和 EB-2 互相兼容。這允許創建一種類似樹狀結構的背書區塊,其中每個分支代表了可以經由下一個排名區塊被包含在分類帳本中的不同交易對。

圖上可看到3個引用多個輸入區塊 (IB) 的背書區塊 (EB),同時最後面的背書區塊也會引用前面的背書區塊。

圖上可看到3個引用多個輸入區塊 (IB) 的背書區塊 (EB),同時最後面的背書區塊也會引用前面的背書區塊。

一個背書區塊擁有多個子區塊的目的在於增加找到與每個排名區塊兼容的背書區塊的機會。一個排名區塊可以引用一組彼此兼容的背書區塊,這意味著它們在所引用的輸入區塊中沒有衝突的交易通過為一個背書區塊設置多個子區塊,區塊生成者可以選擇最佳分支,以最大化可以包含在分類帳本中的交易數量。

我們將在另一篇文章中更詳細地解釋輸入背書者 (包括圖片)。但在這篇文章中,我們想澄清基本概念。

最重要的一點是,具有交易的區塊 (即輸入區塊) 基本上可以不斷地被鑄造 (整合)(每0.2-2秒一次)。這意味著與每20秒創建一個數據區塊不同,可以在同一時間內鑄造10至100個輸入區塊。高頻率鑄造輸入區塊並不妨礙網路共識。

現在,讓我們聚焦於潛在的延展性增加。

一個 Cardano 區塊可以容納 300 筆簡單交易。如果將輸入區塊的區塊時間設置為2秒,那麼在20秒內將創建10個區塊,相當於3000筆交易。如果設置為0.2秒,將會有100個區塊,其中包含30,000筆交易。

因此,TPS 將升至150至1500。

如果網路層能夠增加輸入區塊的大小,將對TPS產生積極影響。當將輸入區塊增加到180 KB時,Cardano的TPS可能會在300至3000左右。

提升延展性取決於許多其他網路特性和技術,比如擴散管道、Mithril等。如果能改進其他單獨的網路特性,輸入背書者功能將能更有效地使用。

值得一提的是,我們提出的TPS僅為指標性數字。在實際應用中,交易之間可能會存在衝突,因此在特定次數中可能只有部分背書區塊會進入排名區塊。

輸入背書者帶來的潛在延展性提升不僅僅關乎輸入區塊 (以及其中的交易數量),還關乎排名區塊。

排名區塊需經過區塊生成者的有效性檢查,他們必須確保其遵循協議規則和共識參數。有效性檢查將對資源提出更高要求,因為需要驗證更多交易。排名區塊還具有有限的大小和鑄造頻率。這決定了可以在排名區塊中包含多少參考,以及它們可以多久才能被生成一次 (15-30秒)。因此,延展性受到的限制不僅僅是輸入區塊,還包括排名區塊。

區塊鏈網路無法生成無限數量的交易,因為這會生成龐大的數據。數據可用性是區塊鏈延展性的重要方面之一。在去中心化網路中,有效性檢查發生在遍布全球的節點上,這些節點需要訪問數據以進行檢查。

區塊大小越大,能在區塊中處理的交易數量就越多,但節點需要更多的帶寬和儲存空間。區塊時間越短,確認交易的速度就越快,但分叉和孤立區塊的風險也越高。

團隊必須仔細平衡去中心化和延展性。提升延展性可能會對去中心化產生負面影響,因為它可能會減少能夠參與網路共識的節點數量和多樣性,並增加某些節點對其他節點的影響力。

結論

輸入背書者可能不是對Cardano協議的最後一次改進。人們常說分片對於實現高度延展性是必不可少的。然而,分片也有其缺點,主要來自於分片之間需要進行通聯和同步的需求。在實現輸入背書者之後,Cardano可能會引入分片技術。一個分片的TPS可能大致與具有輸入背書者的Cardano網路相當。因此,一個具有10個分片的Cardano可能會有大約20,000的TPS。然而,這在遠未來,需要解決許多技術細節。例如,在儲存層次進行分片,改進Mithril並引入輕型客戶端,思考剪枝 (丟棄舊交易) 等等。

留言0
查看全部
發表第一個留言支持創作者!