

大多数软件将数据存储在独立的数据库中,这意味着每次代码更新都伴随着数据丢失或损坏的风险。@dfinity 的互联网计算机(Internet Computer)为使用其专用编程语言 Motoko 构建的应用程序提供了一条不同的路径。
Motoko 无需在每次更新时将数据进出独立存储库进行传输,而是能够自动保留程序状态,实现跨升级的数据持久化,且无需编写额外的代码来处理持久化逻辑。其核心创新在于:运行时系统通过简单地保留而非擦除主内存,从而避免了状态向稳定内存的转移。该运行时系统现在以一种非常高效的方式确保升级时的数据一致性,且这种效率独立于内存大小。
这种方法在形式上被称为“正交持久性”(Orthogonal Persistence)。Canister(智能合约容器)利用正交持久性,使得模块实例看起来像是永久存在,从而使数据库或文件 I/O 变得过时。为了持久化存储变量,开发人员只需将变量写入内存即可。在升级正式生效之前,系统会检查新代码是否能够正确读取现有的已存储数据。如果兼容性检查失败,升级将被回滚,且不会丢失任何数据。
Motoko 增强的正交持久性旨在通过提供一种简单、安全且快速的升级机制,让程序员从处理稳定内存中解放出来。
与其他语言的对比十分鲜明。互联网计算机支持的其他语言使用的是现成的实现方案,这些方案在设计之初并未考虑正交持久性,因此程序员必须显式地使用稳定内存或特殊的稳定数据结构来在升级之间保存数据。与 Motoko 不同,这种方法不仅繁琐,而且不安全且效率低下。
对于互联网计算机上的 Rust 开发者而言,DFINITY 确实维护了一个适用于升级的安全数据结构库。这是一组专为互联网计算机设计的可扩展数据结构,能够在升级间保持持久化,并以稳定内存作为后备存储,允许其增长至千兆字节(GB)级别。然而,管理这一过程的责任仍落在开发者身上,而非语言运行时本身。
随着应用程序的规模扩大,这种能力差距显得尤为重要。“Stellarator”是互联网计算机近期的一个里程碑,被描述为链上数据持久性的突破性进展,它大幅提高了可扩展性和数据存储处理能力,解锁了以往受限于系统约束的复杂数据密集型应用的新机遇,并为区块链技术带来了新的实用价值。
声明:文章不代表币圈网立场和观点,不构成本站任何投资建议。内容仅供参考!
免责声明:本站所有内容仅供用户学习和研究,不构成任何投资建议.不对任何信息而导致的任何损失负责.谨慎使用相关数据和内容,并自行承担所带来的一切风险.