BTC期权未平仓合约达到约
豪言要将数亿用户带入Web3 TON的智能合约开发语言有何特性?
来源: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?;
}