公鏈 TON 目前已與知名通訊軟體 Telegram 達成合作關係。Telegram 將集合 TON 的支付和原生應用,對其超 8 億的用戶們推廣 TON 還有其生態項目。本文將介紹 TON 的新的程式語言 Tac,語言特性及如何實踐安全性。
(前情提要:觀點》Microcosm Labs:「TON+Telegram」超越微信,打造全球化金融樞紐公鏈)
(背景補充:TON白皮書解析:揭祕世界上最高TPS區塊鏈的背後技術)
11 月 10 日,TON 基金會在 TON Gateway 活動中向開發者講述了 TON 的生態與技術發展,表明其重心在於如何與 Telegram 開展合作將數億使用者帶入 Web3。11 月 28 日,Animoca Brands 宣佈對 TON Play 遊戲基礎設施進行投資,併成為 TON 的最大驗證者以支援 TON 網路。
此前,Beosin 對 TON 及其生態做了全面的介紹和分析 。今天 Beosin 將為開發者分析 TON 推出的新型程式語言 Tact,幫助大家瞭解 Tact 的語言特性以及安全實踐。
背靠 Telegram,TON 有多大潛力?
TON (The Open Network) 是一個去中心化的網路平臺,由 TON 區塊鏈、TON Proxy、TON Storage 等系統構成。其中 TON 區塊鏈為 TON 的核心,一般所指的 TON 為 TON 區塊鏈。
與以太坊等公鏈不同,TON 的智能合約之間的呼叫是非同步的。這樣的設計提高了可拓展性,因為當一個智能合約呼叫另一個智能合約的函式時,這個呼叫不會立即執行,不需要在一個區塊中處理完所有的交易。但同時非同步性也增加了開發者在 TON 鏈上開發和維護應用的門檻。
TON 區塊鏈的架構為主鏈 (Masterchain),工作鏈 (Workingchains)和分片鏈 (Shardchains),具有高效能和高拓展性。TON 區塊鏈通過分片以實現百萬級 TPS 的目標。
目前,TON 與 Telegram 已達成合作關係。Telegram 將整合 TON 的支付和原生應用,向其超過 8 億的活躍使用者推廣 TON 及其生態專案。
TON 新推出的 Tact 語言有何特性
TON 的智能合約程式語言有三種:Fift,FunC 和 Tact。其中 Tact 是 TON 新推出的靜態型別高階程式語言,旨在降低開發智能合約的難度和提高安全性。
Tact 與 Javascript 的一些語言特性相似:支援非同步呼叫,支援面向訊息程式設計。
1. 非同步呼叫
Tact 支援非同步呼叫,這樣智能合約可以並行執行,無需等待其它合約完成。這增強了 TON 區塊鏈的效能和響應能力。
2. 面向訊息程式設計
(Message-Oriented Programming)
面向訊息程式設計的核心思想是不同物件之間通過傳遞訊息來進行通訊,而不是直接互相呼叫。這種設計可以消除呼叫者和接收者之間的耦合,同時物件可以隨時訂閱和取消訂閱訊息,這讓物件之間的依賴關係和更新變得更加容易。
這種降低依賴關係的設計被引入到 Tact 合約開發中,開發者可以基於 MOP 開發多個合約,合約之間通過訊息進行整合和互動。這樣合約之間既進行了隔離,降低了風險,又簡化了互動流程,大大提升了合約開發的安全性。
Tact 智能合約的安全性
在使用 Tact 進行智能合約開發時,合約的安全性不可忽視。以下是針對使用 Tact 進行合約開發的安全建議:
1. 注意數學相關問題
開發者在處理數學計算時,需注意使用的資料型別和計算的精度問題。如果合約出現整形溢位問題,則合約會出現異常並中止當前交易。開發者需在相關業務中進行整形檢查。
2. 訪問控制
Tact 使用面向訊息程式設計,開發者需要對合約中涉及核心業務的函式做好訪問控制,以確保相關函式接收到正確訊息並被正確呼叫。
3. 對輸入訊息進行驗證
開發者在智能合約中應對外部輸入進行適當驗證或過濾,避免攻擊者使用偽造的訊息和和資料進行攻擊。
4. 控制好訊息型別
由於 Tact 合約開發中使用訊息進行通訊,開發者可能使用結構體構造新的資料型別進行訊息傳遞,因此訊息型別的數量可能會迅速增加。這可能會讓程式碼庫變得混亂。開發者需要仔細管理訊息型別。
5. 程式執行流程的複雜度
由於合約可隨時訂閱和取消訂閱訊息的動態特性,因此開發者在進行大型複雜專案開發時梳理應用程式的執行流程可能會困難很多。這可能會使程式的檢查和測試變得困難,而清晰的文件和流程圖對於後續的開發和審計會有很大幫助。
6. 進行詳盡測試
開發者在進行合約開發時,應使用 Sandbox 進行測試,優化 Gas 消耗以及檢查邊緣情況。Sandbox 會模擬合約執行的所有階段:計算階段(computational phase),執行階段(actions phase)和反彈階段(bounce phase),比起 Ton-contract-executor 更接近真實網路的執行情況。Tact-emulator 是 TON 官方提供的另一個測試工具集,但目前還未有詳細的使用文件。
7. 錯誤處理
由於 TON 的設計,程式碼的結束路徑需要由開發者進行處理。合約可能收到回退訊息(bounced messages),合約需要對這些訊息進行正確的處理。另外,在處理回退訊息時還需要考慮 gas 耗盡的情況,這同樣會產生意外的漏洞。
8. 審計與安全監測
開發者在完成專案開發後,建議進行安全審計和鏈上監測服務,以監控合約執行狀態。Beosin 的 EagleEye 鏈上監測平臺為廣大使用者提供快捷的專案資料查詢和預警。目前,EagleEye 已支援分析鏈上巨鯨地址,檢測合約風險,監控專案社媒平臺和鏈上活動,為使用者提供全面的專案資訊。
趨勢還是機會?如何看待 TON 的未來發展
在本文中,我們對 TON 進行了簡單的介紹,分析了 Tact 的語言特性並提供了詳細的 Tact 智能合約開發的安全實踐。
Telegram 作為一個全球範圍內擁有龐大使用者群的平臺,具有巨大的潛力。而 Tact 作為 TON 基金會大力推行的新型程式語言,為開發者提供了友好且簡潔的方式來構建 TON 網路的智能合約。這為開發者創造了更便捷的開發環境,並吸引了更多人加入 TON 生態專案的開發中。隨著更多的開發者加入和探索,Tact 語言的生態系統也將逐漸擴大,為 TON 網路的發展提供更多機會。
然而,需要注意的是,加密貨幣和區塊鏈領域的發展仍然面臨著一些挑戰和風險。政府監管、市場接受度、技術問題等都可能對 TON 的發展產生影響。因此,對於 TON 的趨勢和機會,我們需要持續關注市場動態、技術進展和法規環境的變化,並進行深入的研究和分析。同時,Beosin 需要提醒開發者在使用 Tact 進行合約開發過程中需理解 Tact 的語言特性、注意以上提到的安全建議,在完成開發後進行安全審計也尤為重要,以檢測並修復潛在的漏洞和風險。