The Open Network (TON) 深度分析(上篇):TVM 的創新與視野

Matt Hou
分享
The Open Network (TON) 深度分析(上篇):TVM 的創新與視野

部分讀者可能對於幾年前 Telegram 的發幣計畫有些印象,當時準備上線的區塊鏈叫做 Telegram Open Network,原生代幣則為 Gram。然而, 美國證交會 SEC 對 Telegram 的指控使其不得已放棄了這條區塊鏈的開發,並將收到的投資退還給了投資人。

(回顧:Telegram 與 SEC 和解!需付 1850 萬美金罰款,三年內發任何幣都要告知)

後來 Telegram 將這條鏈的程式碼開源,讓許多團隊和社群都可以接續開發。其中最為知名的便是「NewTON」也就是今天的 The Open Network 及其背後的 TON 基金會。目前 TON 的原生代幣 TONCOIN,市值已經接近第 10 名。Telegram 也已支援 TON 的加密貨幣錢包已被整合進 Telegram APP 中。

廣告 - 內文未完請往下捲動

(相關內容:Telegram推出數位資產拍賣平台Fragment,可用TON代幣競標用戶名

不只是區塊鏈 

TON 這個名字所代表的其實不僅是一條區塊鏈,而是更龐大的一個 WEB3 生態系。其中包含了:

  1. TON Blockchain 區塊鏈
  2. TON Payment 閃電網路
  3. TON Storage 分散式儲存網路
  4. TON Network(ADNL 協定)原生加密網路協定
  5. TON DNS 去中心化網域名稱系統

ton_infra

而上述這些基礎建設,皆已於 2022 年全數上線,本文將介紹這些 TON 生態系的基礎建設有什麼特別之處,並著重在這些架構對於用戶及應用的影響。

TON 區塊鏈

共識機制與質押

TON 區塊鏈採用的是 POS 共識機制,除了傳統上自建節點與透過第三方服務參與質押外,用戶也可以透過 TON 基金會推出的 Nominator 去中心化質押合約加入公開的質押池,賺取 POS 收益。

TVM 與開發語言

在 TON 區塊鏈上用於執行智能合約的虛擬機稱為 TVM,與 EVM 在設計理念上有諸多不同且並不原生的互相兼容。TVM 上開發智能合的原生語言為 FunC,而在管理、除錯、開發智能合約方面,則有獨特的 Fift 語言。不過,在絕大多數情況下 JS 和 TS 都可以代替 Fift 完成任務,而如果覺得 FunC 太難寫則可以選擇更高階的 Tact 語言。

雖然是新的語言,但目前已經有不少 SDK 和 API 可供開發者使用。另外,在代幣標準方面,同質化代幣(TEP74 、非同質化代幣(TEP62)、 靈魂綁定(TEP85)和版稅(TEP66)等等常見的標準,也在很早期就被提出。

Actor 架構

借鑒了 Web2 當中大型應用的設計架構,TON 的設計哲學認為我們不該強迫用戶為所有服務付費。這就如同 Instagram 或 Twitter 不會要求用戶在每次發文、點贊時都支付一筆伺服器費用一樣。因此,在 TON 區塊鏈的世界裡面,任何人都可以直接跟向智能合約互動,用戶並不一定要有一個「帳戶」來支付手續費才能發出訊息。

TON 採用了 Actor 的概念,所謂的 Actor 指的是下列的行為模式:

  1. 用戶發出訊息
  2. 智能合約按照自身的程式碼處理收到的訊息
  3. 智能合約基於收到的訊息,變更自身的屬性(例如餘額)或對外再發出訊息

因為交易手續費可以是由接收訊息的智能合約支付,所以這裡用戶就可以不是一個帳戶。這樣的設計架構有利於後面會提到的一些應用,比如說原生的 AA 錢包,或是更安全簡便的自動付款機制等等。

手續費與通縮機制

在 TON 的世界裡,智能合約的部署並不是一勞永逸的事情。為了要讓智能合約隨時能夠被呼叫,它將會需要一直被儲存在鏈上,這對整條鏈而言會是一個持續的負擔。因此, TON 在設計上把部署智能合約的手續費設計成租金的形式,合約需要一直保持足夠的餘額以支付租金,若是餘額被扣完了,那麼這個合約將會被從網路中移除。(但不用擔心,只要補充手續費就可以復原)這樣的設計可以讓網路不會被過多長期閒置或棄用的智能合約拖垮。

另外值得一提的是,在 2023 年中的投票通過後,目前 TON 區塊鏈中的交易手續費將會有一半被銷毀。截至撰稿時,已經銷毀了共 63,000 枚 TONCOIN。 

交易的非同步及非原子性

在 EVM 的世界裡面,合約之間的互動是具有原子性的(atomic )。也就是說,一筆交易裡面的所有的動作,在某種程度上被視為一個整體。只要其中的任何一個動作發生錯誤,則這筆交易裡面的所有動作都會失敗,就像沒發生過一樣。這在 DeFi 場景裡面可以有很多用處,例如 DeFi 交易操作中經典的閃電貸,就是透過把借款、交易及還款塞在同一筆交易內,降低了在執行策略時價格或其它因素發生變動所造成的風險。

然而 TON 對於這種作法的可擴展性保持懷疑的態度,因為讓所有的交易都具有原子性雖然方便,但是在概念上就像是把所有合約放在同一台「機器」裡執行。TON 為了追求更高的擴展性,在設計上把每一個合約當作一台獨立的伺服器,而不同的伺服器之間在執行工作時,當然不會互相等待,更不會因為其它伺服器在執行上發生錯誤而回朔自己已經處理完的交易。因此這樣的設計雖然被稱為非同步(asynchronous),但實際上卻可以讓區塊鏈同時的執行多個動作,增加可擴展性。

可修改的智能合約

多數人對於區塊鏈的印象都包含了「不可篡改」(Immutable)的特性。然而這並不符合應用開發的現實,程式碼完全不能「篡改」也意味著無法升級或更新。因此有不少的 DAO 和 DeFi 項目都透過 Proxy (代理)合約的方式來間接達成修改合約內容的目的。

作為新一代區塊鏈的 TON 在設計時就思考到這個現象,既然大家都知道也默許智能合約可以被修改,那麼再硬性預設智能合約不可修改並沒有意義。故而在 TON 區塊鏈上,智能合約是可以被修改的,不可修改的特性成為了一種選項。

原生的帳戶抽象、智能合約錢包

每一個錢包/帳戶都是合約

在 TON 區塊鏈上,錢包並不是在鏈下生成一組公私鑰並產生出地址後就能用,因為用戶的錢包也是一種智能合約,需要自己撰寫和部屬才能用(實務上這些當然都是透過錢包軟體代勞)。在部屬錢包合約前,用戶能先透過自己的公鑰預覽錢包地址,並用這個地址進行收款。當要動用資產時,用戶就必須把錢包合約部屬上鏈,再依據自己部屬的合約規則來管理資產。

以太坊將錢包的管理規則直接被寫進了協議內,無須自己部屬合約來管理,但同時也法變更。對於 TON 的用戶而言,他們對於錢包的管理有完整的控制權。因為每一個錢包都是一個智能合約,所以用戶當然也可以在部屬時設定自己想要的規則,例如自動轉帳、多簽、鎖倉等等。

換句話說,在 EVM 生態系中熱門的帳戶抽象及智能合約錢包,在 TON 區塊鏈上是再平凡不過的,每一位用戶的錢包都是智能合約錢包。之所以能夠這麼做,是因為 TON 的 Actor 模型有辦法讓用戶在還沒有錢包之前就能與區塊鏈互動,完成錢包的部屬。

公鑰不再等於錢包地址

多數區塊鏈中的錢包地址都是直接用公鑰計算得出,因此公鑰和地址是一對一的關係。但 TON 的錢包地址是透過公鑰加上錢包合約的內容產生,也就是說同一把公鑰搭配上規則不同的錢包合約,所產生的地址就會是不同的。當然,用戶也可以只是在同樣的合約裡面額外加上一個識別用的序號,藉此以一個公鑰生成多個地址。這麼做,在某些比較單純的情境下,可以取代複雜的 HD (分層確定性)錢包,更直觀的用同一組公私鑰管理多個地址。

錢包功能的擴展

基於智能合約錢包的自由度,開發者們對於 TON 錢包使用場景的想像持續的在推陳出新。截至 2023 年 10 月份,主流的錢包合約共經過了四次的迭代,目前已從 V1 版本發展至目前最多用戶採用的 V4R2 版本。V1 版本已經包含了接收和發送所有資產的基本功能,V2 和 V3 錢包則增分別增加了「讓交易具有時效性」和「單一公鑰管理多個地址」的功能。而各版本的 R2 更新,主要的差異則是在於是否能夠以 get-method 從合約取得該錢包的公鑰。

至於從 2022 年沿用至今的 V4 版本,則更大程度的體現出 TON 區塊鏈的特色。用戶能夠為自己的 V4 錢包合約安裝「插件」,也就是模組化的為自己的錢包添加額外的「功能」或「規則」。舉例來說,用戶可以安裝一個訂閱扣款插件,允許指定的服務提供商按照一定的規則向自己的錢包收費。因為錢包也是一個智能合約,所以第三方的伺服器可以直接跟這個合約互動進行請款,用戶就不再需要手動的定期付款了(或為了實現自動付款將資金轉移到另一個合約內)。

此外,TON 基金會及其他社群開發者也提供了諸如具有多簽、線性解鎖等功能的錢包合約。其中也包含了「高流量」錢包的範本,供交易所等大型機構使用,該合約在一次呼叫內可以接收最多 254 筆交易,並且可以同時接收多筆呼叫,因此理論上最多能夠在一秒內進行上千筆交易。

(相關閱讀:ABCDE 投研合夥人 Lao Bai 評論:TON 被高估)