Midnight 计划在单笔交易内实现智能合约相互调用

即将到来的升级将使开发者能够连接可复用的合约函数。该网络的路线图将私有可组合性列在 2027 年第一季度。

By SongMarketCap

Updated:

Midnight News - Midnight 计划在单笔交易内实现智能合约相互调用

Midnight 宣布了一项即将到来的升级,将允许智能合约在同一笔交易内相互调用。该计划中的功能称为合约到合约执行,将为开发者提供另一种在这条注重隐私的网络上跨应用组合函数的方法。

Midnight 预计这一变化将帮助建设者扩展现有合约功能,并在创建更复杂的合约时复用组件。公告未给出激活日期。

Midnight 合约将如何协同工作

智能合约包含定义应用可执行操作的代码。借助该计划功能,一个合约将能够调用另一个合约中的函数,并将结果用作交易的一部分。

将独立组件组合在一起的能力被称为可组合性。开发者可以设计这样一种应用:一个合约检查某个条件,另一个合约使用结果来执行操作。这只是对一种可能的应用设计的示例,并非 Midnight 宣布的产品。

Midnight 的 Compact 文档包含一个更简单的示例:某个函数将给定数字加倍,并将结果传递给另一份合约中的函数。该示例展示了一个合约如何调用另一个合约定义的操作,并提供其所需的信息。

该网络还会检查合约声明的调用是否与交易中包含的调用相对应。发起调用的合约会标识预期的目标、入口点以及与该调用的输入和输出绑定的密码学承诺。要使交易满足相关的有效性条件,每个已声明的调用都必须与同一交易片段中的且仅一个调用精确匹配。

Ledger 9 与 Compact 开发工具

跨合约调用需要 Ledger 9 以及与之兼容的 Compact 工具链,即用于编译 Midnight 合约的一组工具。文档称,面向 Ledger 8 的工具链会在编译期间拒绝此类调用。

根据文档的最新更新,Midnight 的 Preview、Preprod 和 Mainnet 网络运行的是 Ledger 8。因此,使用新调用的合约尚无法部署到这些公共网络。Compact 工具链 0.35.0 面向 Ledger 9,并对跨合约调用的运行时接口进行了更改。

当前的 Compact 参考还描述了合约之间相互调用的限制。循环序列,如合约 A 调用合约 B 而 B 又再次调用 A,会在运行时失败。文档将其标识为当前账本的限制。

为下一次网络硬分叉,Midnight 已发布 Ledger 9.1.0.0。软件发布及其所对应的工具与在网络上激活相应能力是两件相互独立的事情。

[NEWSBREAK]

隐私与可组合性的路线图

Midnight 使用零知识证明来支持在不暴露全部底层信息的情况下验证条件的应用。其合约既可以包含记录在账本上的公共状态,也可以包含保存在用户设备上的私有状态。

合约的设计决定了哪些信息会被公开。Midnight 的 Compact 参考指出,跨合约调用会暴露被调用合约的地址,并要求开发者在合约之间传递参数时考虑信息披露。因此,互联的应用既可以包含公共信息,也可以包含在公共账本之外处理的私有数据。

Midnight 的路线图将 Private Composability 列在 2027 年第一季度。该项目将其目标描述为在保持各自数据隐私的同时使合约能够相互调用,从而让开发者将私有应用组合成更大的产品。