钱包合约类型
您可能听说过 TON 区块链上不同版本的钱包。但这些版本究竟是什么意思,它们之间有什么区别?
在本文中,我们将探讨 TON 钱包的各种版本和修改。
信息
共同概念
要打破这种紧张关系,我们首先应该明白,钱包并不是 TON 生态系统中的一个特定实体。它们仍然只是由代码和数据组成的智能合约,从这个意义上说,它们与 TON 中的任何其他角色(即智能合约)都是平等的。
与您自己的定制智能合约或其他任何合约一样,钱包可以接收外部和内部信息,发送内部信息和日志,并提供 "获取 "方法。 那么问题来了:它们提供哪些功能,不同版本之间有何不同?
您可以将每个钱包版本视为提供标准外部接口的智能合约实现,允许不同的外部客户端以相同的方式与钱包进行交互。您可以在主 TON monorepo 中找到这些 FunC 和 Fift 语言的实现:
基本钱包
钱包 V1
这是最简单的一种。它只允许您一次发送四笔交易,而且除了您的签名和序列号外不检查任何东西。
钱包源代码:
这个版本甚至没有在常规应用程序中使用,因为它存在一些重大问题:
- 没有从合约中获取序列号和公钥的简单方法。
- 没有
valid_until
检查,因此无法确保交易不会太晚确认。
第一个问题已在 V1R2
和 V1R3
中解决。R
代表 修订
。通常情况下,修订版只是增加获取方法的小更新;你可以在 new-wallet.fif
的更改历史中找到所有这些更新。在下文中,我们将只考虑最新的修订版本。
尽管如此,由于每个后续版本都继承了前一个版本的功能,我们仍应坚持使用它,因为这将有助于我们以后版本的开发。
持久内存布局
- seqno:32 位长序列号。
- public-key: 256 位长公开密钥。