TON 區塊鏈的架構為主鏈(Masterchain),工作鏈(Workingchains)和分片鏈(Shardchains),具有高性能和高拓展性。
封面:Photo by Eyestetix Studio on Unsplash
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 使用面向消息程式設計,開發者需要對合約中涉及核心業務的函數做好訪問控制,以確保相關函數接收到正確消息並被正確調用。
receive(msg: changeFee){ ... require(sender() == self.owner, "No Permission") // 只有合约 owner 可以修改费用 ...}
3. 對輸入消息進行驗證
開發者在智慧合約中應對外部輸入進行適當驗證或過濾,避免攻擊者使用偽造的消息和和數據進行攻擊。
4. 控制好消息類型
由於 Tact 合約開發中使用消息進行通信,開發者可能使用結構體構造新的數據類型進行消息傳遞,因此消息類型的數量可能會迅速增加。 這可能會讓代碼庫變得混亂。 開發者需要仔細管理消息類型。
struct Point { x: Int; y: Int; //使用结构体自定义数据类型} message SetValue { key: Int; value: Int?;}
5. 程序执行流程的复杂度
由于合约可随时订阅和取消订阅消息的动态特性,因此开发者在进行大型复杂项目开发时梳理应用程序的执行流程可能会困难很多。这可能会使程序的检查和测试变得困难,而清晰的文档和流程图对于后续的开发和审计会有很大帮助。
6. 進行詳盡測試
開發者在進行合約開發時,應使用 Sandbox 進行測試,優化 Gas 消耗以及檢查邊緣情況。 Sandbox 會類比合約執行的所有階段:計算階段(computational phase),執行階段(actions phase)和反彈階段(bounce phase),比起 Ton-contract-executor 更接近真實網路的執行情況。 Tact-emulator 是 TON 官方提供的另一個測試工具集,但目前還未有詳細的使用文檔。
import ...//Tact 测试模版 describe('Fireworks', () => {... expect(deployResult.transactions).toHaveTransaction({... }); });it('should deploy', async () => { // the check is done inside beforeEach // blockchain and fireworks are ready to use});
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 的語言特性、注意以上提到的安全建議,在完成開發後進行安全審計也尤為重要,以檢測並修復潛在的漏洞和風險。
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。