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 立场无关。 文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。