Algorand 2021 年展望:底層性能及數據表現

Algorand 中文
Algorand Foundation
10 min readDec 16, 2020

Algorand 2021 年性能表現:

  • 區塊提議時間將會保持在 0.5 秒
  • 區塊確認時間將從目前的 4.5 秒縮短到 2.5 秒
  • 我們的最終確認 TPS 將從 1000,增長到 46000

Algorand 在不斷發展。如今,我們鏈上日平均交易量達 50 萬筆;500 多家公司正在 Algorand 平臺上積極開發應用,充分利用着我們獨一無二的 Layer-1 第一層智能合約以及其他豐富的功能。而他們所開發的應用,將爲鏈上帶來更多的新交易。

這也是爲什麼,我們在爲 Algorand 公鏈持續增加新功能的同時,也在不犧牲去中心化的前提下,不斷提升公鏈的性能屬性,如下所述。

Algorand 公鏈性能衡量標準:

  1. 區塊提議時間,指的是觀察者們去明確哪個區塊將被永久寫入鏈上的時間
  2. 區塊確認時間,指的是一個新的區塊確認被永久寫入鏈上的時間
  3. 最終確認每秒交易量(TPS)

Algorand 2021 年性能表現:

  • 區塊提議時間將會保持在 0.5 秒

(即使我們的區塊大小已從 5000 筆交易,增加到了 25000 筆,也不影響區塊提議時間。)

  • 區塊確認時間將從目前的 4.5 秒縮短到 2.5 秒
  • 我們的最終確認 TPS 將從 1000,增長到 46000

(這得益於真正的區塊流水線型方式)

遵循原則的發展

Algorand 的首要目標,是提供一個可完美拓展、並消除初代區塊鏈性能瓶頸的一個真正去中心化、開放的、無需許可的網絡。去中心化和安全性是 Algorand 的基本原則,而這兩點原則,將在未來所有包含性能提升在內的平臺升級中被嚴格遵循。

1、終結性指標和最終確認性能

什麼指標?

漸漸地,“性能”一詞在區塊鏈世界中被大量且隨意地使用。當然,速度很重要。但是,什麼的速度?

請思考一下這句關於性能的說法:

“每 0.5 秒提出一個 10000 筆交易的區塊。”

這裏有兩個問題:

  1. 這個說法意指 0.5 秒的延遲嗎?
  2. 這個說法意指吞吐量有 20000TPS 嗎?

針對第一個問題,回答是否定的。區塊提議就相當於整個旅程開始的第一步,並不能保證最終能安全抵達。僅僅提到區塊提議時間,這就輕易地忽略了區塊最終確認的時間 — — 假設該區塊能被最終確認的話。

第二個問題的答案依然是否定的。區塊提議時間本身並不能提供任何吞吐量的保證,因爲它忽略了一個被提議的區塊(假設叫區塊 B)不會被最終確認的可能性。在這個情況下,不光區塊 B 的交易將不得不重新處理,那些在區塊 B 最終確認失敗時間內產生的區塊 B+1,……,B+k 等也將需要重新處理。確實,這些 k 個區塊的交易有賴於區塊 B 交易的有效性。因此,只要區塊 B 最終確認失敗,那麼在 B 最終確認的整個過程中,TPS 都爲 0。

總結來說,上面關於性能的說法是完全基於一個非常粗略的標準的。

終結性指標

區塊鏈的真正目標就是提供一系列完整且不可篡改的交易。

區塊提議速度快,等於被很快地告知“你的錢在路上了”。終結性則指的是“你的錢已經在你手裡了”。不過,這完全取決於你:

  • 如果你更喜歡在被告知“錢在路上了”的時候,就開始發貨、展出你的數字藝術大作、開出保單等等,那你就關注區塊提議時間就好了;
  • 如果你喜歡確定錢款到帳後再運貨等等,那你需要關注區塊終結性。

在 Algorand,終結性才是最重要的,也是我們所真正實現的。

我們的最終確認性能:

信守終結性指標,Algorand 2021 年的性能表現將是:

  • 最終確認延遲:約 2.5 秒
  • 最終確認吞吐量:約 46000TPS

2、Algorand 新的最終確認延遲

Algorand 的區塊非常大。目前 Algorand 一個區塊承載上至 5000 筆交易,在 2021 年這個數字將達到 25000 筆交易。廣播如此之大的一個區塊,需要時間。

爲加快區塊 B 的提議及最終確認處理時間,我們開發出了一個簡潔的方法。

網絡編碼

一旦我們將一個區塊 B 寫入 Algorand 區塊鏈所提供的不可篡改的記錄中,B 的交易就一定要顯示明白。確實,這個區塊 B 可能在若干年後被那些對這些共享內容不甚瞭解的人們所問及。

在區塊 B 生成的過程中,我們也確實爲該區塊的交易想一些簡單的“名字”,充分利用交易在網絡被廣播期間,某個時刻任意兩個人可能看到一些相同的交易的事實。舉個例子,對於大多數交易 T,我可以只發給你 32 個字節的哈希值 H(T),來告訴你我提議的區塊裏包含 T,而不用把所有的 T 都寫出來發給你。實際上來說,沒有兩筆交易擁有同一個哈希值。

爲了提升 Algorand 的性能,我們通過利用 Algorand 通訊網絡操作所用的具體方式,進一步將 32 個字節縮短成了僅僅幾個位。

在 Algorand 中,帳戶並不會直接像大家說八卦一樣,直接交流信息。賬戶會把想要廣播的訊息發給他們的中繼節點。中繼節點再互相廣播信息,將信息傳遞到相關賬戶那裡。得益於 Algorand 協議的重要屬性 — — 針對任意網絡分片的安全性,Algorand 網絡架構引進了無需額外信任的高效性。確實,我們的中繼節點無需信任:他們可以幫助我們,但卻無法傷害我們。任何人都可以志願成爲中繼節點,然後每個賬戶可以和自己選擇的幾個(比如 5 個)中繼節點建立聯繫。如果該賬戶不滿意其中一箇中繼節點的服務,它只需放棄這個聯繫,選擇另一箇中繼節點建立聯繫即可。

現在就讓我們看看帳戶如何更有效地將其提議的區塊傳遞給它的中繼節點。假設我是一個帳戶,負責提議一個新的含有 20000 筆交易的區塊 B。爲了廣播 B,我必須將它發送到我選擇的每個中繼節點,例如,R1, …, R5。在這樣做的時候,我不應該將這 20000 筆交易再發回給那些將它們發送給我的節點!實際上,我的每一箇中繼節點都分別向我發送了這 20000 筆交易中的大部分:比方說,所有的交易加上或減去 100 筆交易,就是我從其他四個節點接收到的。

讓我們來看看 Algorand 如何讓我避免無用的重複性工作。如果我們只關注一箇中繼節點,比如 R2,並假設它已經向我發送了我放入區塊 B 中的 19925 筆交易。然後,R2 和我都知道它向我發送這些交易的順序。因此,與其向 R2 發送區塊 B 的每個交易 T 的哈希值 H(T),我可以只向 R2 發送交易 T 在它自己傳輸列表中的位置(例如,R2 自己列表中的交易編號 16233)。即使這個列表含有 1 萬億筆交易,只需 30 位(而不是 32 字節 !)就足以將 T 指定爲 R2。而那些 R2 還(暫時)沒有發送給我的 75 筆交易,對我來說也是顯而易見。

使用這種編碼方式,我可以用最簡單的方式指定區塊 B 到 R2。其他中繼節點也是如此。值得注意的是,我爲每個 R1,…,R5 指定區塊 B 的方式將是不同的,因爲它們每個發送給我的交易列表略有不同,儘管順序可能會非常不同。但這並不重要。每一箇中繼節點都將正確地學習區塊 B,並將它廣播到所有的中繼節點,而每一箇中繼節點又將依次將區塊 B 推送到它們的所有賬戶中。對於每個這樣的推送,實際使用的都是類似的編碼。

綜上所述,這種網絡編碼是非常簡潔和高效的,並可以通過 Algorand 使用的中繼節點架構得以實現。

這時自然而然出現一個問題:

任何區塊鏈都可以使用相同的中繼節點架構並享受網絡編碼的好處嗎 ?

答案是否定的。例如,在比特幣中,對抗性的中繼節點將導致雙花問題。即使所有礦工都是完全誠實的,這種情況也會發生!

再強調一下,因爲我們協議的針對任意網絡分片的安全性,Algorand 可以安全地使用中繼節點架構,更多基本屬性可以在以下網址找到(https://www.algorand.com/what-we-do/technology/security)。

3、我們新的最終確認吞吐量

如果我們在提議和確定另一個區塊之前,要等待上一個新區塊進行最終確認,那麼 Algorand 的吞吐量將由 10000 筆最終確認 T PS 組成。這對應着每 2.5 秒完成 25000 個最終確認交易的區塊。很好!但有了_流水線_,我們可以做得更好,如果使用正確的話,流水線會是區塊生成的強大工具。

理想化的流水線

Algorand 區塊提議階段將需要 0.5 秒。在 99% 的情況下,這個階段會成功地產生一個提議的區塊,該區塊將需要另外 2 秒完成最終確認。這就是爲什麼平均最終確認延遲時間是 2.5 秒。

相應的,大家很容易就會在下方所述的情況下,宣稱自己的吞吐量高達 50000TPS。帳戶一看到最新提議的區塊 B,就開始提議新的區塊,這樣在區塊 B 最終確認期間,可能又提議了 4 個新區塊。又因爲每個區塊包含 25000 筆交易,而我們目前共有 5 個區塊,所以每 2.5 秒就有 125000 筆交易。那麼就是,每秒完成了 50000 筆交易。

上述分析忽略了區塊提議階段可能不成功的事實。在這種情況下,可能會產生多個提議的區塊,但接下來的最終確認階段將無法確認其中任何一個區塊。因此,區塊鏈必須重新處理所有這些區塊的交易,以及在失敗的確認階段提議的所有區塊。此外,當它失敗時,確認階段可能會花費超過 2 秒的時間,因此區塊鏈必須等待更長的時間才能再次開始生成區塊。

真實可靠的流水線

區塊鏈在區塊提議和最終確認的程序和時間表上各不相同。比特幣區塊要經過很長時間才能被認爲是最終確認的(如果出現網絡分片,最終確認也就沒有意義了!)

因此,我們必須考慮以下 3 個重要問題:

問題一:區塊提議階段需要多長時間 ?

問題二:區塊提議階段多久就會失敗一次 ?

問題三:從一個失敗的區塊提議中恢復需要多長時間 ?

需要如實回答這些問題,才能在一個給定的區塊鏈上建立正常性能的區塊流水線。在 Algorand 的情況下,答案分別是:

答案一:0.5 秒

答案二:約 1%

答案三:大約 4.5 秒

考慮到這些問題,再鑑於區塊體量爲 25000 筆交易,Algorand 在 2021 年將實現 TPS 超過 46000。

我們的看法

依靠真正的技術才能兌現區塊鏈的承諾。

重要的是,要確保任何評估區塊鏈技術偉大前景的人,都能以一種公平合理的方式進行比較。

當討論整體性能標準的時候,解釋關於變量、設計選項和權衡方面的差異是非常必要的,這樣就不會模糊底層技術本身的實際侷限性和效用。理解性能差異對區塊鏈解決方案取得長遠成功也是很重要的。

從技術、業務和交付的角度來看,Algorand 專注於在生態系統中構建長期的價值。以正確的方式以及合適的合作伙伴建設我們的核心技術能力,是我們通往持久生態系統價值的必經之路。

我們將繼續以這種方式構建和改進我們的技術。Algorand 在 2021 年將實現 TPS 超過 46000。

原文連結請查看:https://www.algorand.com/120720-Algorand%202021%20Performance.pdf

快來加入Algo大家庭

‧官網:https://www.algorand.com/
‧Twitter:https://twitter.com/Algorand
‧Facebook:https://www.facebook.com/algorandasia
‧Medium:https://medium.com/algorandasia
‧Telegram:https://t.me/algorand
‧Youtube:https://www.youtube.com/algorand
‧Reddit:https://www.reddit.com/r/AlgorandOfficial/
‧Line:搜尋 @algorandasia 私訊小幫手,我要入群

--

--

Algorand 中文
Algorand Foundation

Algorand是由麻省理工教授、图灵奖得主Silvio Micali在2017年发起的公链项目,基于首个无需许可的纯粹权益证明机制,可以满足当今经济活动中的安全性、可扩展性以及去中心化需求,以服务于数十亿用户。