TON Blockchain 介紹

什麼是 TON Blockchain

TON 早期是由 Telegram 開發的一個區塊鏈項目,2018 年由 Telegram 的創辦人 Pavel 和 Nikolai Durov 兄弟探索適用 Telegram 的區塊鏈技術,但他們發現當時的 L1 區塊鏈,並沒有辦法滿滿足支撐
Telegram 的億級用戶群,所以他們開始設計自己的 L1 區塊鏈,並且將其命名為 TON(Telegram Open Network)。當時出售 TON 的代幣 GRAM(一開始代幣的名字),也是一度成為了 ICO 的熱門項目。並募集了 17 億美元,
2019 年,TON 的測試網如期上線,但美國 SEC 認為 TON 是一種證券,且初期有 10 億的代幣向美國的投資者出售,違反了美國的證卷法,所以 Telegram 被迫取消了 TON 的項目。但 TON 並沒有因此而消失,
而是改用社群的方式繼續運作下去,由核心開發者 Tolya 帶領,並將 TON 的開發工作委託給了 Telegram 的 Open Source 社群。

更多的關於 TON 的歷史可以參考這篇文章:TON 歷史和路線圖

TON 的挖礦歷史

由於上面的轉變,在 2020 年 6 月,經過社群的決策,決定使用傳統的 PoW 模式進行代幣分發,由於 TON 區塊鏈的底層是使用了 PoS 的共識機制,所以這次的 PoW 分發是為了讓更多的人參與到 TON 的生態中。為了
實現這一個目標,核心團隊在 TON 上開發了一個名為 Giveaway 的智能合約,這個智能合約可以讓用戶通過 PoW 的方式來獲得 TON 代幣。初始流動數量為 50 億顆,可流通的 98.55% 開放挖礦,剩下的 1.45%
用於團隊和社群建設。最後的一顆 TON 已經在 2022 年 6 月挖出,這也意味著 TON 的 PoW 挖礦已經結束。

TON 的技術架構特點

在講述 TON 的技術架構之前,我們可以先看 TON 的幾個區塊鏈關鍵指標 :

  • TON 的出塊時間 : 2-5s
  • TON 的 TPS : 100k (是的,你沒看錯,100K,這是一個非常驚人的數字)
  • TON 的 平均區塊大小 2mb
  • TON 的 區塊確認時間 < 6s (只需要一個區塊確認)

更多的 Performance 指標可以參考這個網站:TON Performance Test

這些指標讓 TON 在技術上有了很大的優勢,這也是為什麼 TON 能夠支撐 Telegram 這樣的大型應用的原因。那麼 TON 是如何實現這些指標的呢?這就要從 TON 的技術架構來講起了。
首先我們可以先看 TON 白皮書內提到的與其他區塊鏈的比較 :

Project Year G. Cons. Sm. Ch. R. Sh. Int.
Bitcoin 2009 1 PoW no 1
Ethereum 2013, 2015 2 PoW yes 1
NXT 2014 2+ PoS no 1
Tezos 2017,? 2+ PoS yes 1
Casper 2015, (2017) 3 PoW/PoS yes 1
BitShares 2013, 2014 3’ DPoS no m ht. no L
EOS 2016, (2018) 4 DPoS yes m ht. no L
PolkaDot 2016, (2019) 4 PoS BFT yes m ht. no L
Cosmos 2017, ? 4 PoS BFT yes m ht. no L
TON 2017, (2018) 5 PoS BFT yes m mix dyn. T

G. - Generation, (世代)
Cons. - Consensus, (共識演算法)
Sm. - Smart contracts, (是否具備圖靈完善的智能合約)
Ch. - Sharding, (單鏈/多鏈/混合架構)
R. - Rollups, (同質/異質架構)
Sh. - Sharding, (是否支持分片)
Int. - Interoperability, (區塊鏈間交互, L 鬆耦合, T 緊耦合)

TON 本身在區塊鏈擴容機制上,採用了一種稱做無限分片的機制,這種機制可以讓 TON 的區塊鏈在需要的時候,可以無限的擴容,分片其實是來自資料庫設計的概念,將一個超大的 Dataset 分割,並且分布在多個不同的資料庫當中,實現水平擴展的能力。TON 在區塊鏈分片上,分為下列四種類型的分片鏈:

  • MasterChain: TON 上的主鏈,用來儲存基礎訊息,主要包含協議的參數、驗證者集合,以及對應的分片鏈的資訊。紀錄當前活躍的 WorkChains 和它們的分片 (shards) 組,以及最重要的是所有 WorkChains 和 ShardChains 裡最新的區塊 Hash,這條鏈是唯一一條,且確定了系統的全局狀態
  • WorkChain: 最多可達 2^32 條,但目前只有一條,理論上每個人可以構建自己的 WorkChain,不同的 WorkChain 可以有不同的規則,不同的帳戶格式、交易格式、VMs。
  • ShardChain: 最多可達 2^60 條,是屬於 AccountChain 的集合
  • AccountChain: 最低層級,按理想情況,每個帳戶都有自己的 ShardChain,但實際上,一個 ShardChain 可能包含多個帳戶。AccountChain 則包含帳戶一系列的交易。

img

TON 錢包

在 TON 上面的錢包帳戶,跟傳統以太坊的 EOA 帳戶非常不一樣,在 TON 上面,每個錢包都是一個智能合約,這代表著 TON 的錢包帳戶一開始就支持了帳戶抽象化,同一套註記詞可以根據不同合約類型建立不同的帳戶,根據合約類型不同,可以支持不同的版本,當前最新的版本為 Wallet V5 (Beta),由 TonKeeper 推出,下列是幾個不同版本的錢包合約比對

錢包合約版本 功能
Wallet V1 一次只能發送一筆交易
Wallet V2 加入交易時間限制,防止交易長時間未被確認
Wallet V3 加入 SubWalletId 功能,可以創建子錢包
Wallet V4 加入插件和訂閱功能,且兼容 V3 所有功能
Wallet V5(Beta)
  • 減少 25% gas fee
  • 類似 AA 錢包可讓第三方支付 gas (目前 USDT 轉帳減免)
  • 更靈活的 plug interface
  • TON 智能合約地址格式

    TON 的帳戶地址格式基本上分為兩種類型,一種稱為用戶友好類型,另外一種則是原始格式的類型

    • 用戶友好: EQDKbjIcfM6ezt8KjKJJLshZJJSqX7XOA4ff-W72r5gqPrH
    • 原始格式: 0:ca6e321c7cce9ecedf0a8ca2492ec8592494aa5fb5ce0387dff96ef6af982a3e

    在原始格式的部分,由工作鏈 ID 和帳戶 ID 組成
    [0] : 工作鏈 ID
    [ca6e321c7cce9ecedf0a8ca2492ec8592494aa5fb5ce0387dff96ef6af982a3e] : 帳戶 ID

    原始地址無法在發送交易前驗證地址,所以 TON 有了用戶友好的地址 (但其實對於使用者來說也還是一段亂碼)。但用戶友好地址提供地址驗證功能,可以很好的防止用戶輸入不合法的地址,跟信用卡使用的算法很像,防止用戶輸入不合法的卡號,更多細節可以參考這篇文章:TON Address

    其中用戶友好地址最終要的其實是第一個標誌位,開頭的第一個符號,可以代表智能合約收到消息的反應,目前用戶友好地址格式的符號類型包括

    • isBounceable: 是否可以回彈,當目標智能合約不存在,或者交易過程中發生某些問題,消息將被彈回給發送者,包含了扣掉 gas 費的資產部分
      isBounceable=false,通常意味著接收者是一個錢包
      isBounceable=true,通常意味著接收者具有自己應用邏輯的自定義智能合約(可能是 Dex)
    • isTestnetOnly: 表示僅用於測試網的類型,不應該被主網上的合約所接受
    isTestnetOnly isBounceable 地址類型 描述
    false true EQ.. 主網智能合約地址
    false false UQ.. 主網錢包合約地址
    true true KQ.. 測試網智能合約地址
    true false 0Q.. 測試網錢包合約地址

    總結

    上面從 TON 的發展歷史,到 TON 的技術特點以及部分技術細節做了一個簡單的通盤介紹,希望可以讓大家更能理解 TON 多一點,之後會深入探討更多 TON 的部分,包括 TON 的智能合約開發,TON 的錢包開發,以及 TON 的生態建設等等。