從技術角度研究背靠Telegram的公鏈TON是如何崛起的

在2018年,Telegram 團隊推出了一個革命性的公鏈專案——TON,一經發佈即吸引了大量眼球,原因在於其背後巨大的潛在Web2用戶群體。

TON 的發展幾經波折,在2023年,TON 推出了DeFi流動性激勵計劃,舉辦了Hack-a-TON駭客松,旨在吸引全球頂尖開發者為TON生態注入新鮮血液,共同探索DeFi、NFT等前沿技術領域。 現如今,其正在成為一個快速發展、充滿活力的生態系統。

TON 發展歷史

在2018年,Telegram 創立了 Telegram Open Network 專案,通過ICO募資約17億美元,但後續 Telegram 受到 SEC 指控非法募資。 在2020年Telegram團隊同意支付1850萬美元的罰款與 SEC 達成和解,放棄Telegram Open Network專案並將資金退還。

Telegram 團隊隨後將 Telegram Open Network 網络中所有的代幣鎖進智能合約中,任何人都可以參與挖礦獲得 TON 代幣(2022年6月,TON挖礦結束,TON網络已完全轉變為PoS)。 Telegram 此舉將 Telegram Open Network 交給了社區,由名為NewTON社區的開發人員繼續開發。 之後 NewTON 社區更名為 TON 基金會,Telegram Open Network 也更名為 The Open Network,這便是現在的TON 公鏈。

而在2020年Telegram等待 SEC 判決時,TON Labs 對 Telegram Open Network 進行了分叉,發佈了 “Free TON” 版本。 目前Free TON已更名為 Everscale,且其發展路線和代碼與原先的 TON 也有很大不同。

TON 鏈上數據

目前鏈上的驗證器數量為357個,PoS 機制下總質押 $TON 數量為5億多個,分佈在24個國家當中。

源:

TON 代幣數據

$TON 在ETH和 BSC 鏈上均有代幣合約。 根據 EagleEye 平台的數據,在9月17日,$TON 的鏈上交易出現短期峰值,Buy/Sell Ratio 接近 1.17。 $TON 價格在9月20日達到近期高點2.6美元。

源:

此外,EagleEye 平台監控到中心化交易所 MEXC 上近期交易 $TON 非常活躍。 10月5日,TON 宣布獲得 MEXC Ventures 千萬美元投資,同時雙方建立戰略合作夥伴關係。 MEXC 將為 TON 生態提供行銷服務和推廣,提供 $TON 抵押借款服務。

源:

TON 設計特點

1 智能合約的調用為異步

與乙太坊等公鏈不同,TON 的智能合約之間的調用是異步的。 這樣的設計提高了可拓展性,因為當一個智慧合約調用另一個智慧合約的函數時,這個調用不會立即執行,不需要在一個區塊中處理完所有的交易。 但同時異步性也增加了開發者在TON鏈上開發和維護應用的門檻。

來源:貝奧辛

3 分散式哈希表

區塊鏈網路數據存儲和訪問方式會影響其網路的數據一致性、可訪問性和安全性。 TON 採用哈希表進行數據存儲。

首先,哈希表是一種數據結構,它通過使用哈希函數將鍵(key)映射到存儲桶(bucket)中,從而實現快速數據訪問。 在 TON 中,哈希表是分散式的,意味著數據被存儲在網路中的多個節點上。

當需要存儲一個數據項時,TON 使用一個哈希函數來確定應該將數據項存儲在哪個節點上。

當需要檢索數據時,使用相同的哈希函數來快速找到存儲數據的節點,允許高效的數據插入、刪除和查找操作。

數據被加密和冗餘存儲在多個節點上,即使某些節點發生故障或被攻擊,數據仍然可以從其他節點恢復,確保了數據的安全性和持久性。 與傳統的哈希表相比,分散式哈希表在分散式和大規模環境中提供了更高的性能和可靠性。

以下是 TON 與 Ethereum、Bitcoin 網路的對比:

Telegram 中推出的“Secret Chats”功能採用端到端加密技術,旨在提高用戶之間消息傳輸的安全性。 進入2022年年末,Telegram 進一步更新,推出了基於區塊鏈的匿名號碼登錄功能,允許使用者無需手機號註冊,僅通過保存 TON 錢包的助記詞進行登錄,從而提供一個額外的隱私選項。

2023年1月,TON 進一步擴展其功能,發佈了 TON Storage。 這是一個點對點的文件共享系統,與Dropbox和 torrents 有某些相似之處。 這一系統的特點是簡化文件交換過程,併為存儲在區塊鏈上的檔提供加密保護。 同時,為了確保檔的持久存儲,託管這些文件的節點運營者也能獲得相應激勵。

TON 開發語言

在 TON 上開發智能合約,開發者有三種程式設計語言選擇:Fift、FunC 和 Tact。 Fift 偏底層,包含TVM和Fift彙編指令,使用 Fift 進行開發難度較大,極少開發者選擇使用 Fift 語言開發智能合約。 Tact 是 TON 新推出的高級語言,語法類似 Type,旨在降低開發難度。 目前使用最多的開發語言為 FunC,它是類似C語言的程式設計語言。

來源: 貝奧辛

在開發 TON 智慧合約時,Beosin安全團隊建議開發者需要注意以下7點

  1. FunC 與 Tact 均為靜態類型語言,開發者需要非常清楚地知道其代碼中變數存儲的數據類型。 讀取非預期的類型和值都會引起錯誤。

  2. TON 區塊鏈不包含revert消息。 因此開發者需要考慮好代碼運行的結束路徑。

  3. TON 區塊鏈有多個交易階段:計算階段(computational phase),執行階段(actions phase)和反彈階段(bounce phase)。 計算階段會執行合約代碼,執行階段才會發送消息。 因此,開發者在測試代碼時需要注意交易執行目前位於第幾階段。

  4. FunC 中有 method_id 標識符的函數可用於接收區塊鏈內部和外部消息。

  5. TON 區塊鏈是異步的,開發者需注意處理失敗的調用資訊。

  6. 注意智慧合約中處理反彈資訊(bounced message)的代碼。 如果智慧合約發送帶有 TON 資產的反彈資訊到其它帳戶,建議在智慧合約中扣除gas費。

  7. 對於外部消息,開發者需要注意重放攻擊的風險。 可以通過設置計數器或是標識符來避免重放攻擊。

Beosin 安全團隊正式推出針對 TON 智慧合約的安全審計服務,旨在提前發現並協助專案方修復專案中的安全風險,保障使用者與專案方的資產安全。 其主要安全審計項包括:

1. 重放攻擊

保護智慧合約不遭受外部資訊(external messages)重放攻擊的最簡單方法是在智慧合約的持久數據中存儲一個 32 位計數器 cur-seqno,並在任何入站外部資訊(簽名部分)中預期一個 req-seqno 值。 只有當簽名有效且 req-seqno 等於 c007r-seqno 時,外部資訊才會被接受。 處理成功后,持久數據中的 cur-seqno 值會增加一個,因此同一外部資訊將不會再被接受。

如果沒有 seqno(或其他防止重放攻擊的機制),任何人(通常是資金接收方)都可以讀取交易數據(例如來自區塊鏈瀏覽器)並創建另一筆虛假交易並將其重新發送到原始錢包智慧合約並強制其執行再次重新發送 TON,最終耗盡其所有資金。

2 訪問控制

在合約中應該只有特定的用戶擁有對於特定操作的許可權。 例如操作 NFT 轉帳,應該只能由 NFT 的 owner(或被owner授權的帳戶)進行。 合約應該嚴格檢查許可權,如果通過,則進行轉帳操作。 如果不通過,交易應該回退。

3 變數覆蓋

FunC 合約中通過 set_data 函數寫入變數,如果變數順序或者變數名編寫錯誤,很容易意外地寫入錯誤變數並將原來的變數覆蓋。

4 業務設計

部分專案合約在設計上就存在被攻擊的風險,需要嚴格地從攻擊者的角度考慮設計上是否存在攻擊的可能。

5 業務實現

一些專案中,設計上並不存在攻擊風險,但是在具體實施時,並未按照原有設計或實現方式存在問題,導致了漏洞的產生。

6 錯誤處理

由於 TON 的設計,代碼的結束路徑需要開發者進行考量。 合約可能收到回退消息(bounced messages),合約需要對這些消息進行正確的處理。 另外,在處理回退消息時還需要考慮gas耗盡的情況,這同樣會產生意外的錯誤。

7 校驗缺失

消息流每個階段都需要檢查,攻擊者可以在消息流第一階段執行的同時啟動另一個消息流,導致先前的檢查失效。

8 消息流錯誤

應該保證消息流符合設計,否則會帶來意外的錯誤和損失。

9 數據結構檢查

FunC 裡面會有函數進行消息傳遞和階段,可能存在問題,(例如:end_parse() 函數,檢查切片是否為空,否則拋出異常。 它可以確保切片具有預期的效果。 拋異常的邏輯在代碼編寫時可能會寫的有問題,例如拋異常但是沒返回值。 其他函數也可能會有一樣的問題)。

10 序列化消息傳遞問題

可能會有接收或者get函數中序列化消息錯誤,例如send_raw_message函數。

a. 函數命名,配置命名,私有變數命名,get函數是否合理返回值,revert判斷,0位址檢查。

b. 一些特權風險,func中也會有這樣的函數,可以提中心化或者許可權過高。

FunC 中的 msg 調用和常規不太一樣,簽名和調用長度是按照位置發送的,可能存在問題。

TON 生態

TON 生態中目前擁有 551 個apps, 分佈在19個以上的細分領域中。

錢包

Ton Space 是 @wallet 中的非託管錢包,是 Telegram 中嵌入式的原生錢包,可用於導入現有的 TON 區塊鏈錢包或創建新的 TON 區塊鏈錢包。 使用者還可以選擇使用TG帳號和郵箱保存相應的私鑰,並進行NFT的查看、發送和交易。 Ton Space 即將支援更多功能,包括 DeFi 應用如 DEX、質押和借貸協定等,使用者能使用 TON Connect 來訪問TON上的第三方 dApp。

目前支援平台數量最多的 TON 區塊鏈錢包為 Tonkeeper,支援網頁端與移動端,在移動端還可查看使用者持有的 TON 鏈上的NFT。 值得注意的是,TON 的錢包為智慧合約錢包,除了為實現 TON 網路的更多分片外,還為錢包提供了實現更多複雜應用的可能。

德克斯

目前 TON 生態上共有6個主要的去中心化交易所,包括 Megaton Finance、ION Finance、DeDust、STON.fi 、Flex 和 Tegro Finance。 這些 DEX 在使用者受眾方面都有不同側重,Ston.fi 和 DeDust 擁有最大的使用者群(進行swap的使用者),而 DeDust 和 Megaton 有更活躍的使用者。

此外,去中心化訂單簿模式的交易所 Storm Trade 正在測試中,支援網頁端的同時也支援 Telegram bot 模式,使用者在未來可直接使用 Storm Trade 開發的bot進行交互。

借貸

TON 鏈的第一個借貸專案 Evaa Protocol 預計在10月10日上線Beta版本。 7月19日,Evaa Protocol 宣佈 TONcoin.fund 成為其戰略投資者,10月2日在 Tonstarter 平臺完成了私募融資13萬美元。 借貸協定 Evaa Protocol 的加入將有益於 TON 生態系統的資產流動性。

跨鏈橋

目前 TON 官方跨鏈橋支持資產在 TON 與 ETH、與 BSC 之間的互跨,其它鏈的官方跨鏈橋仍在開發中。

此外,第三方跨鏈橋有 Orbit Bridge,Wallet Bridge 和 Tontake Bridge。 Orbit Bridge 與 Megaton Finance 均由韓國公鏈 Klaytn 上的 DEX 平臺 KlaySwap 團隊開發,支援11條公鏈的互跨。 Wallet Bridge 與 Tontake Bridge 為 Telegram bot 形式,但使用人數較少,使用者需注意交互風險。

數據平臺

其開發團隊 Devnull 在今年7月 Beosin 支援的 Hack-a-Ton 駭客松中獲得二等獎,後續將支援更多 TON 相關的數據分析。

TON的現在與未來

目前,TON 正在大力發展 DeFi 生態。 今年,TON 已經舉辦了兩場大型駭客松,主題均與DeFi相關。 Beosin作為 Hack-a-ton x DWF Labs x AWS 的獨家安全夥伴為開發者提供 workshop 指導與每周答疑,解決開發者構建 TON 生態項目的挑戰

Beosin成為TON駭客松合作夥伴

此外,TON 在各地區大力舉辦社區聚會與開發者訓練營,旨在吸引更多開發者參與 TON 生態建設。 **Beosin 分別在今年7月和8月在新加坡、巴厘島作為本地合作夥伴承辦了 TON 線下meetup,併為首爾 Tact BootCamp 的參賽隊伍進行了合約開發培訓和獲獎專案安全審計折扣。 **

Beosin 與 TON 社區合作

在第二次駭客鬆進行的同時,TON 在6月6日開啟了生態專案流動性激勵計劃的申請,以支援TON 生態的DeFi專案方和吸引更多使用者。

Unibot、Banana Gun 等 Telegram trading bot,它們後續支援 TON 生態代幣的交易並非難事。

Beosin 的 EagleEye 鏈上監測平臺在未來也計劃上線 Telegram bot,為廣大使用者提供快捷的專案資訊與數據查詢。 目前,EagleEye 已支援分析鏈上巨鯨地址,檢測合約風險,監控專案社媒平臺,為使用者提供全面的項目資訊。

綜上,隨著生態的逐步構建和 TON 在行動端的優勢,TON 依然具有非常大的潛力,在未來有很大機會吸引海量的用戶參與其生態。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)