最近TON 生態大熱,各種TON 上的小遊戲層出不窮,不知道大家有沒有玩過。 TON 作為一個L1 鏈,它相比於其他的鏈不同在哪,到底有什麼優勢,普通人在TON 上能做什麼。
TON 的官方標語
TON 的介紹
TON(The Open Network)是一個去中心化的區塊鏈網絡,它誕生的目的是為了服務Telegram 以億為量級的用戶,超高並發的互動需求的。大家熟知的鏈例如BTC,十分鐘出一個塊,並且在一個塊裡面的交易數量是有上限的,顯然是無法滿足Telegram 的要求,因此TON 就應運而生。 TON 目前可以處理每秒數百萬筆交易。
TON 背靠著Telegram 海量的用戶群,配合上Telegram 推出的小程式框架,讓TON 有巨大的想像空間,也吸引了無數淘金人前來淘金。相較於先前的透過WEB3 來擴展WEB2 的使用者群體,透過Telegram 為媒介,以WEB2 的方式讓使用者接觸WEB3,TON 似乎是走在了另一條道路上。
TON 技術上的特點
TON 技術上最大的技術特性就是高併發、高效率、可擴展。當然這似乎是每一個新鏈的標配了,那TON 到底是如何做到的。
我們以ETH 為例,在出塊節點完成打包區塊對交易進行排序之後,輸入到EVM 中處理,整個過程就是一個串連的過程。這麼做的好處是,結果是確定的,在處理一筆交易的時候不會有其他交易對狀態進行變更,可以保證一致性。但壞處也顯而易見,TPS 會比較低。
TON 拋棄了串列執行的過程,並採用了完全並行的架構進行。這裡就需要解決兩個關鍵問題:如何並行以及如何保證狀態一致。
基於Actor 的平行環境
TON 中的基本單元是Actor,你可以理解為是ETH 中的智能合約。 Actor 是TON 可以執行完全並行的一個基礎。 TON 中沒有區分帳戶和智慧合約的概念,全部的物件都是Actor,你的帳戶也是一個合約。 Actor 有一定的邏輯執行能力以及資料儲存能力,在一次交易的過程中,Actor 會執行以下幾個步驟:
事件觸發(一般來說是收到了外部訊息,例如轉帳)
執行合約的方法處理這個事件
更新合約的狀態
發出訊息(可選)
進入靜默狀態,等待下一個事件發生
可以看到這樣處理之後,每一次交易都是並行獨立的處理,每一次處理完都可以異步地發出訊息來和其他的Actor 進行互動。每個Actor 會獨自維護自己的狀態,所以你會發現你在TON 上的Jetton(Token)會有一個獨立的地址,因為Jetton 的數量這個狀態不會和你的TON 數量在同一個Actor 中維護。
為了好理解並且符合大家以往的認知,Actor 可以理解為錢包或合約,訊息的傳遞可以為合約的交互,大家只需要知道原本的意思。
分片
分片(shard)是TON 中的關鍵機制,它保證了TON 上的可擴展性。分片機制簡單來說就是「動態」地調整一個節點處理交易的量,例如某一時刻進來過多的交易,這些交易會被分成幾個「子集」,分給不同節點並行處理,反之,則合併交易量較小的「子集」為一個分片。
引用官網的一張圖,解釋了分片的過程:
其中依照黑虛線劃分了區塊,其中101、 102、以及103 是在一個區塊裡的同一條分片鏈上, 80 是在另一個分片鏈上,他們都是從100 這個節點進行「分片」得到的;在30 這個區塊裡面, 63 和105 這兩個節點由於交易量較少,在31 這個區塊中被合併成一個,即106 。
以上知識籠統得介紹了整體的流程,以下介紹圖中各個元素的具體意義。
1、帳戶鏈(AccountChain)
在TON 中,一個帳戶對應的一系列交易按照一定的順序組成一條鏈被稱為帳戶鏈。在區塊鏈中,保持執行的邏輯不變、交易的順序不變,那麼最後得到的狀態也是一致的。不同的帳戶鏈可以並行處理。
帳戶鏈並沒有在上圖反映出來。
2、分片鏈(ShardChain)
分片鏈對應的就是上圖的數位節點。分片鏈由多個帳戶鏈組成,選取哪些帳戶鏈進行組合沒有特別的要求,一般是取帳戶的前幾位一致的作為合併的標準。多個分片鏈在一個區塊中,可以由不同的節點進行並行處理。分片鍊是TON 分片機制的執行單元,分片的操作主要在分片鏈上執行。
總結就是:帳戶鏈組成分片鏈,分片鏈組合為一個區塊。
3、工作鏈(WorkChain)
分片鏈需要工作在工作鏈上,也就是上圖的藍色線。工作鏈是一組有自己規則的區塊鏈,每個人都可以在工作鏈上部署一條自己設定規則的鏈,只需要有2/3 的驗證者同意。 TON 允許創建多達「 2 ^ 32 」個工作鏈,每個工作鏈則可細分為多達「 2 ^ 60 」個分片。
目前TON 上只有兩個鏈,「 Basechain 」 以及「 Masterchain 」。工作鏈有些像L2 的概念,有消息指出會有一條新的工作鏈,來支持EVM,這也是TON 可擴展的體現。
4、主鏈(MasterChain)
TON 上可以有多條工作鏈,但是只有一條主鏈,主鏈的主要功能就是同步不同工作鏈的訊息,達成狀態上的共識。達成共識的方式也還是透過訊息傳遞的方式,但是主鏈和工作鏈的訊息傳遞費用較高,因此只會同步區塊的關鍵訊息。
在上圖中也就是黑線所描述的部分。
錯誤復原
在串列的場景下,如果發生了錯誤,那麼交易的狀態就會被回滾。在並行的場景下,回滾是透過內部訊息回彈的方式進行的。 TON 裡的智慧合約互動是透過訊息傳遞的,因此需要對這類訊息(內部訊息)設定可以彈回。在發生錯誤的時候,原始的訊息將彈回訊息,攜帶剩餘的TON 訊息並且設定標誌位元為「 bounced 」。 Actor 接受到彈回訊息之後,進行錯誤處理。
總結
TON 透過使用Actor 模型,讓每個狀態可以獨立處理而不需要依賴其他的狀態,從而實現完全並行。透過分片機制,使得TON 可以動態調整以適應鏈的交易數量變化。 TON 的這套機制,複雜但是高效,其中還有一些技術細節例如邏輯時間、訊息等,就不再訊息介紹了。
體驗TON 時的一些細節
如果你在此之前,只體驗過BTC 或ETH 的話,在體驗TON 的時候,會有一些地方不同。
1、TON 的帳戶模型
在之前的內容中有介紹到,TON 既沒有使用BTC 的UTXO 模型,也不是ETH 裡面的皮夾模型,你的皮夾也是一個「合約」。我們知道,部署合約是需要支付Gas 費用的,但是我們新建錢包的時候,並沒有資金在裡面,那麼這個Gas 要如何支付?
其實在創建TON 錢包的時候,你的錢包並沒有完成創建,只有當你有交易(別人給你轉TON)的時候,你的錢包才會初始化,並扣除一部分的TON 作為合約部署的費用,這也就是你會發現,明明轉了10 TON,但只收到9.99 TON 的原因。
2、TON 的Jetton 交易
根據上面關於Actor 的介紹,每一個Actor 維護獨立的狀態,這個狀態不依賴外在的狀態。因此在TON 上的Jetton,並不是存放在你的TON 錢包裡面,而是一個獨立的地址,連結到你的TON 錢包裡面。
例如下圖的Jetton,它在TON 上有自己的地址「 Jetton wallet 」,但會和TON 皮夾「 Holder address 」連結起來。
3、TON 的Gas 費計算
TON 和大部分其他的鏈一樣,在交易、部署合約、合約互動的時候需要支付Gas 費用。不過實務操作下來,TON 的交易費還是比較貴的,例如一次Jetton 在DEX 的交易可能需要0.05 TON,這個相比於一些鏈來說並沒有優勢。
除此之外,TON 還需要支付儲存費用,所以如果你的錢包長時間沒有交易,那麼可能你的下一筆交易的Gas 費就會高出來不少。
具體的Gas 費細節可以在Transaction Fee中查看。
4、TON 的皮夾類別
TON 的皮夾也有多個地址,這個和BTC 有點像。 TON 的不同地址代表了錢包的版本不同,不同版本的錢包實現的功能也會有所不同。目前使用最多的錢包是「 V4 R 2 」,最近也推出了「 W 5 」錢包,可以支援用其他代幣支付Gas 費用。
在TON 上我們能做什麼
目前在TON 的熱度很大一部分來自於Telegram 上的機器人以及在機器人之上的小程式。尤其是最近一些遊戲小程式的井噴式爆發,為一些WEB3 計畫帶來了巨大的流量。
Telegram 上的小程式
依附在Telegram 上可以做小程式了,讓人彷彿回到了微信小程式井噴的時候。不過TG 上的小程式主要是一些小遊戲,而且品質參差不齊,大家去玩的唯一動力就是期待專案方最後可以發空投。專案方利用這種飄渺的期待,可以在短時間內吸引大量的用戶。
除了透過在遊戲中透過做任務拉用戶來實現裂變,還有一些工具類的小程式可以提供拉用戶的能力,例如TG 上的一個紅包應用,透過發紅包的方式來打廣告,實現拉用戶。
建立一個TON 上的網站
大家可能都聽過網域解析。在ETH 中,你可以購買一個域名,來取代那一長串複雜的地址,這就是WEB3 的域名解析。在TON 中,你除了透過購買TON 的域名來代替你的地址,你真的可以透過這個域名,搭建一個網站來讓別人訪問,實現域名最原本的功能。
域名其實是NFT,你可以交易你的域名,就跟交易NFT 一樣。網域的價格跟網域的長度有關,最便宜的網域需要1 個TON。具體的資訊可以在TON 的官方網域網站中查看。
機器人
機器人和TON 的關係不大,但跟Telegram 關係比較密切,所以也在這裡提一下。 TG 上有大量的機器人,用於交易的查看、監控、快速交易等功能,每次的互動都會收取手續費,大概在1% 左右。每天在TG 上發起的交易巨大,並且各種鏈的機器人都有,包括SOL、ETH 以及TON 等等。
不過現在這塊的競爭也是比較激烈,並且將私鑰交給一個程式碼不公開的機器人管理,總是讓人有點不放心。
本文由ZAN Team(X 帳號@zan_team ) 的Yeezo(X 帳號@GaoYeezo 75065 )撰寫。