來源:Beosin
11月10日,TON基金會在TON Gateway活動中向开發者講述了TON的生態與技術發展,表明其重心在於如何與Telegram开展合作將數億用戶帶入Web3。11月28日,Animoca Brands宣布對TON Play遊戲基礎設施進行投資,並成爲TON的最大驗證者以支持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的目標。
source: Beosin
目前,TON與Telegram已達成合作關系。Telegram將集成TON的支付和原生應用,向其超過8億的活躍用戶推廣TON及其生態項目。
TON新推出的Tact語言有何特性
TON的智能合約編程語言有三種:Fift,FunC和Tact。其中Tact是TON新推出的靜態類型高級編程語言,旨在降低开發智能合約的難度和提高安全性。
source: Beosin
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的語言特性、注意以上提到的安全建議,在完成开發後進行安全審計也尤爲重要,以檢測並修復潛在的漏洞和風險。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。