十月底 TON 公鏈創造了新的 TPS 世界紀錄,TON 基金會的 Vivi 針對白皮書做出了官方的詮釋與解讀。
(前情提要:TON 鏈上生態報告:趨勢與機會,如何在 TON 生態中找到切入口 )
(背景補充:杜拜開綠燈!XRP與TON獲金管局核准,DIFC合格企業可開展交易服務 )
2023 年 10 月 31 日,TON (原 Telegram Open Network) 創造了新的世界紀錄,在首次公開效能直播測試中達到了每秒 104,715 筆交易的驚人峰值,在 25 分鐘內完成了總計 107,652,545 筆交易。經 Certik 驗證和確認,這一效能使 TON 成為世界上速度最快、可擴容性最強的區塊鏈,超過了所有 L1 區塊鏈和 PayPal、Visa 和 Mastercard 等著名中心化支付網路的處理速度。
TON 無疑是一個令人矚目的專案。本文將對 TON 白皮書進行深入解析,揭示其獨特的技術特性和創新之處,為何 TON 能成為世界上最快的區塊鏈。
擴容難題
在區塊鏈技術的發展過程中,可擴容性一直是一個巨大的難題。區塊鏈的擴容方案主要是為了提升系統的吞吐量和降低交易費用,使得區塊鏈網路能夠處理更多的交易並更好地適應大規模應用。儘管不同的公鏈不斷嘗試新的共識和架構設計,但目前的結果依然不如人意,成為區塊鏈走向大規模應用的瓶頸,難以承載我們 TG 十億使用者的願景。目前主流的擴容方案可以分為以下幾類:
- 分片 (Sharding): 將網路分割成多個較小的部分,每個分片能夠並行處理交易和智慧合約,從而顯著提高網路的吞吐量。 但是分片隨之帶來了潛在的安全性問題,因為每個分片的安全性可能低於整個網路。此外,跨分片通訊也是一個技術挑戰。 代表例子:曾經的 Ethereum 2.0 和 NEAR 夜影協議。
- 側鏈 (Sidechains): 側鏈是一種獨立於主鏈執行的區塊鏈,它可以有自己的共識機制和區塊引數。通過側鏈,使用者可以在兩個鏈之間轉移資產,從而解除安裝主鏈的負擔。代表例子:Polygon
- 二層方案 (Layer 2 solutions): 通過在主鏈上層構建另一層結構,L2 能夠提供更快的交易確認時間和更低的交易費用。拿較知名的 L2 來說, Optimism 和 Arbitrum: 這兩個都是專門為以太坊設計的擴容解決方案。因此,Optimism 和 Arbitrum 的部分架構位於 Layer 1。隨著以太坊的升級,它們的每秒交易數(TPS)上限從原來的 2-4k 增加到了大約 2w。
- zkSync 2.0: 相較於 zkSync 1.0 的幾百 TPS 上限,zkSync 2.0 帶來了顯著的提升。zkSync 團隊宣稱其 2.0 版本能達到 10w TPS 的上限,但多數機構預測其真實上限可能在 1-2w。Starknet: 在六月份完成了 Quantum Leap 的升級後,其 TPS 目前稍微超過 100TPS。
- Solana: Solana 使用了一種名為 Proof of History(PoH,歷史證明)的創新共識演算法作為其擴容方案的核心。雖然 Solana 自稱其 TPS 可以達到 65,000,但實際上大部分 TPS 是作為節點間的通訊。真正的交易量可能只有 6-8k TPS 上限。而且,由於其中心化的共識機制設計,Solana 在面對大量請求時多次出現當機,如在 NFT 鑄造時。此外,Solana 也尚未成功實現中心節點的輪換。
TON 區塊鏈的設計者,來自於 Telegram 創辦人及核心團隊。作為全球最受歡迎的社交平臺之一,Telegram 擁有月活躍使用者近 9 億,在具備高度的安全性和隱私性的同時,也提供了穩定和流暢的使用者體驗,每天軟體內傳輸數百億條訊息。web3 理念已經相對家喻戶曉,但實際上的加密原生使用者依舊是少數者,多數人依賴中心化的交易所接觸通證。世界上最流行的去中心化加密錢包 Metamask 目前的月活僅 3000 萬。而 TON 的設計理念,從一開始基於服務數十億使用者而不僅僅只是少數 web3 極客。
延伸閱讀:LD Capital: TON背靠Telegram,打開8億用戶Web3大門
無限分片正規化
分片是一個來自資料庫設計的概念。它指的是將一個大的邏輯資料集分割,然後分佈到多個互不共享的資料庫中,這些資料庫可以分佈在多個伺服器上。簡單來說,分片提供了水平擴容的能力,允許將資料分解為可以並行處理的獨立部分。
TON 並非首個將分片技術引入到區塊鏈中的專案,例如,以太坊 2.0 曾經宣佈了固定的 64 個分片後因難度太大放棄,而 NEAR 的夜影協議計劃在明年實現 100 個分片,目前現行分片有 4 個。
延伸閱讀:NEAR:夜影分片第一階段上線,如何變革 DeFi 產業?
與傳統的分片方法不同,TON 採用了無限分片的策略。
然而,TON 的方法之所以被視為先進,並不是因為其擁有更多的分片,而是因為以下兩個獨特之處:
- 分片數量不固定:TON 根據業務需求支援不斷增加的分片,最大可達 2^60 個工作鏈,這個數量近乎無限。
- 分片數量具有彈性:TON 可以在系統負載高時自動分割分片,並在負載降低時合併它們。這是一種非常有效的應對動態擴容需求的策略。
目前,TON 由兩個工作鏈組成,用於同步和治理的主鏈(Masterchain),以及用於智慧合約的工作鏈(Workchain)。在工作鏈之下是分片鏈(Shardchain)以及最底層的虛擬帳戶鏈(Accountchain)
工作鏈可以分為 N 個分片(從 1 到 256 個分片)。 每個分片都有自己的驗證器組。 工作鏈小組負責在自己的分片中執行交易。 與此同時,它不斷地從其工作鏈的所有其他分片下載區塊。一般來說,區塊鏈是一系列記錄其狀態變化的區塊。對於 POS 區塊鏈,驗證者首先通過編譯包含更改列表的區塊來同意他們希望如何更改區塊鏈狀態。之後投票給這個區塊,如果收集到足夠的選票,他們就會將該區塊應用於區塊鏈狀態並移動到下一個區塊。
一個區塊執行緒的吞吐能力非常有限,因為驗證者必須在同意接受區塊之前檢查該區塊中的所有交易。所以 TON 中有很多執行緒,可以簡單地把它們想像成迷你微型區塊鏈。它們並行存在的同時每個都有自己的一組驗證器。
主鏈
主鏈是 TON 中的主要區塊執行緒。它用於同步所有其餘的塊,並重新計算驗證器集。當所有執行緒就新塊達成一致後,它們對其進行簽名並將其註冊到主鏈中。但是,主鏈驗證器不會驗證該塊的有效性,它們僅檢查它是否由適當的驗證器簽名。所以很多執行緒可能並行共存。來自不同執行緒的合約通過傳送訊息來相互通訊。
工作鏈
工作鏈是獨立的地址空間,可以按照其規則執行。例如,他們可能有不同的虛擬機器或延長發布具有高 gas 限制的區塊的時間。最重要的是,工作鏈必須具有相同的訊息佇列格式,以便它們可以交換訊息。這也意味著所有工作鏈必須具有大致相同的安全保證。由於它們可以交換訊息,因此這些訊息攜帶網路通證。現在有兩個工作鏈處於活動狀態:主鏈和第一個處理工作鏈。工作鏈由地址字首決定:-1:ax…1s2 – 主鏈中的帳戶地址。-1 是主鏈字首。
0:zx…123 – 第一個工作鏈中的帳戶地址。0 – 是第一個處理工作鏈的字首。
分片鏈
處理執行緒或者叫分片鏈是處理工作鏈中的獨立塊執行緒。預設情況下,工作鏈 0 只有一個執行緒和一個鏈。該執行緒的驗證者接受外部訊息並處理他們自己傳送或從其他工作鏈傳送的內部訊息。如果出現執行緒在最近 N 個塊期間過載的情況,則該執行緒將被拆分:一個執行緒被分為兩個,其中的事務並行進行。
地址以 0:00.. – 0:88.. 開頭的帳戶現在位於執行緒 1 中,帳戶 0:88.. – 0:FF.. 位於執行緒 2 中。由於所有智慧合約彼此非同步通訊,沒有任何故障,而吞吐量卻增加了兩倍。當負載下降時,執行緒會在一段時間後合併回來。如果負載持續增加,兩個執行緒可以一次又一次地拆分,以此類推。主鏈只有一個執行緒。
TON 中的區塊不僅僅是需要完成以實現狀態更改的交易列表。 相反,一個塊是:
執行事務的訊息列表,將它們從傳入佇列中刪除。訊息處理後進入傳出佇列的新訊息,然後訊息處理導致智慧合約狀態發生變化。也就是說,為了讓分片 X 的驗證器維持分片 Y 的當前狀態,它不需要執行分片 Y 塊中的所有交易。它只是下載該塊並彙總已發生的更改。 發生在訊息佇列和智慧合約狀態。
從根本上改變區塊鏈世界不可能沒有代價。 為了利用這種激進的方法,TON 智慧合約開發者必須以不同的方式設計他們的合約。TON 區塊鏈的基本原子單元是智慧合約。 智慧合約具有地址、程式碼和資料單元(持久狀態)。 這種單元被稱為原子單元,因為智慧合約始終具有對其所有持久狀態的原子同步訪問。
超立方體網路路由
TON 獨創了智慧路由機制來確保任何兩個區塊鏈之間的交易始終能夠快速處理,無論系統有多大, 在 TON 區塊鏈之間傳送資訊所需的時間隨著鏈的數量只以對數方式增加,因此,就算擴展到數百萬條鏈也能使它們以最快速度進行通訊。
在 TON 區塊鏈中,快速路由(Instant Hypercube Routing)和慢速路由(Slow Routing)是兩種用於處理跨鏈交易的路由機制。
快路由(Instant Hypercube Routing):TON 提出的加快訊息路由速度的想法,允許跨鏈交易在極短的時間內完成。在傳統慢立方體路由過程中,一條訊息是由一個分片鏈沿著超立方體網路路由到目的分片鏈。但是在訊息路由過程中,這個訊息的目的分片鏈所屬的的驗證器(validator)可以選擇提前處理這條訊息加入區塊,然後提供一個 merkel 證明(收據),傳送回執來銷燬掉這條正在傳輸的訊息。它允許跨鏈交易在極短的時間內完成。快路由通過構建一個高維立方體(hypercube)的路由結構,實現了高效的跨鏈互動。在這種結構中,每個鏈都被反射到立方體的一個頂點,而鏈之間的距離表示為頂點之間的跳數。通過這種方法,交易可以在最短路徑上快速路由,從而實現跨鏈互動的高效性。 快速路由可以在數秒內完成跨鏈交易,而無需等待區塊確認。
慢速路由(Slow Routing):慢路由是一種相對傳統的跨鏈交易處理方法,它通過將交易從源鏈逐步轉移到目標鏈來實現。在這種方法中,交易首先在源鏈上被打包到一個區塊中,然後通過中繼器(relayer)將其轉移到目標鏈。目標鏈的驗證者會驗證交易的有效性,然後將其打包到目標鏈的一個區塊中。慢速路由相對於快速路由的優勢在於它提供了更高的安全性和去中心化程度,因為跨鏈交易需要經過完整的區塊確認過程。類似 TCP/IP 網路,通過目的 IP 地址定址傳送到目的地,能夠保證訊息按順序可靠傳播到目的鏈。對於一個規模為 N 的分片鏈超立方體網路,需要經過的中間分片鏈 hop = log16 (N)-1。因此,只需要 4 個路由節點(中間分片鏈),就能支援百萬條的分片鏈。
為什麼要這麼設計?
分散式需要驗證節點。如果系統非常龐大要有幾萬個節點,負擔過重無法展開擴容。分片之後每一個分片有一個集合,shard0,shard1…… 又要做到跨 shard 通訊。通訊是可以跨分片的,從一個到一個分片,就意味分片和分片要有一個路由機制。連線形成一個路由,通過某些中間節點跳過去。資訊每經過一次路由,相當於傳輸時間增加一個區塊時間。
而隨著分片鏈總數增長,這將需要大量的計算能力和網路頻寬,從而限制系統的可擴容性。因此,不可能直接從任何一個分片直接傳遞訊息到其他所有分片。相反,每個分片只與在它們(w,s)分片識別符號的一個十六進位制數位上不同的分片 「連線」。通過這種方式,所有分片鏈構成一個 「超立方體」 圖,訊息沿著這個超立方體的邊傳遞。
如果訊息被發送到與當前不同的分片,當前分片識別符號的一個十六進位制數位(確定性地選擇)將被目標分片的相應數位所取代,結果識別符號將作為近似目標,成為轉發訊息的接受者。
超立方路由的主要優勢在於區塊有效性條件,建立分片鏈區塊的驗證者必須收集和處理 「相鄰」 分片鏈的輸出佇列中的訊息,否則就會失去他們的 staking。通過這種方式,可以預期任何訊息遲早會到達其最終目的地;訊息既不會在傳輸過程中丟失也不會被重複傳遞。
超立方路由引入了一些額外的延遲和費用,因為需要通過幾個中間分片鏈轉發訊息。但是,這些中間分片鏈的數量增長非常緩慢,與總分片鏈數 N 的對數 log N 相關。
通訊非同步
TON 上的智慧合約實行的是通訊非同步, 可以把 TON 上的智慧合約類比成網際網路微服務。 每個微服務僅對其本地資料進行原子同步訪問。 兩個微服務之間的通訊涉及通過網路傳送非同步訊息。
系統架構中,更大的系統往往需要架構微服務。 這種分散式方法需要付出一些 trade off 才能採用,但可以帶來使用者體驗的好處。 現代系統管理依賴於像 Kubernetes 這樣的序列器來獲取一組容器化微服務,並按需自動啟動新例項(自動縮放),並在機器之間有效地對其進行分割槽。
用 Kubernetes (大規模叢集管理系統)做類比,這正是 TON 所做的事情。 隨著特定分片鏈上的負載增加,它被分成兩部分。 由於智慧合約是原子的,因此它們永遠不會被分成兩半。 這意味著曾經位於同一個分片鏈上的一些智慧合約有一天可能會發現自己位於不同的分片鏈上。
TON 的虛擬機器(TVM)正在將分散式微服務的概念應用到對標以太坊 EVM 的整體架構中。
狀態去中心化
這是分片領域最為複雜、最具有挑戰性的一種分片機制。整個資料庫被分開,分別放在了不同的分片上。每個分片儲存自己分片中的所有資料,而不是整個區塊鏈的狀態。
TON 區塊鏈分片中,所有服務都以智慧合約的方式實現,智慧合約的狀態資料也只在對應的分片網路中儲存,以此來實現狀態分片。
不僅如此,在 TON 中,合約實現了一種業界絕無僅有的實現路徑,每個使用者都能在自己的合約管理通證狀態,真正實現了從區塊鏈狀態上的去中心化。我通過案例詳細探討這種設計的原理。
首先,需要了解 Wallet contract 和 Jetton wallet contract。Wallet contract 是一個使用者專屬的智慧合約,用於管理使用者在 TON 區塊鏈上的代幣。Jetton(俄語:寶石) wallet contract 則是一種特殊的 Wallet contract,專門用於管理使用者的 Jetton 通證。這些通證可用於支付網路費用和執行智慧合約。每個使用者都有自己的 Wallet contract 和 Jetton wallet contract。這些合約充當使用者的數位錢包,用於儲存和管理通證。與此同時,這些合約還可以與其他使用者的合約進行互動,實現去中心化的資產轉移和交易。
此時假設使用者 A 和使用者 B 分別擁有自己的 Wallet contract。使用者 A 想要向用戶 B 轉帳一定數量的通證。在這種情況下,使用者 A 的 Wallet contract 會與使用者 B 的 Wallet contract 進行互動,實現通證的轉移。整個過程不需要依賴於一個中心化的合約,而是通過兩個去中心化的合約來實現。
TON 區塊鏈的使用者都擁有自己的合約來管理資產狀態,這意味著不存在唯一中心化合約承擔管理所有資產的風險。從而提高了系統的去中心化程度,降低了單點故障的風險。所有使用者的資產狀態由一個專屬的合約管理,攻擊者無法通過攻擊單一的中心化合約來影響整個系統。使用者之間的資產交易也可以通過智慧合約自動執行,避免了人為操作的風險。還可以根據需求訂製自己的 Wallet contract 和 Jetton wallet contract,實現更多的功能和應用場景。這為使用者提供了更大的靈活性和自主權。每個人都在自己的合約中管理資產狀態,系統的可擴容性得到了提高。隨著使用者數量的增加,合約的數量也會相應增加,但這不會對整個系統造成過大的壓力,因為每個合約都是獨立執行的。
以上是我對 TON 區塊鏈可擴容性以及白皮書技術架構理念的分析,感謝 Dr.Awesome Doge 對第一版初稿做出了編輯。感謝俄羅斯和烏克蘭開發團隊堅持不懈的深耕,最後感謝 Telegram 創辦人 Nikolai Durov 先生在多年前的偉大設計,而這些都是為了人類心智的榮耀。
📍相關報導📍
鏈上儲存》TON Storage和Arweave優缺點大比拼