UPLC Link 将 Cardano 合约与已发布代码进行比对

与 Cexplorer 的集成把源码验证引入合约浏览,同时链上记录保留了开发者和审计方重复检查所需的详细信息。

By SongMarketCap

Updated:

Cardano News - UPLC Link 将 Cardano 合约与已发布代码进行比对

UPLC Link 让 Cardano 用户检查已部署的智能合约是否与为其发布的源码相匹配。这个开源平台会重建合约并比较它们的加密指纹。通过 Cexplorer,用户可以访问所查看脚本关联的仓库与构建信息。

Cexplorer 将 Cardano 脚本与其源码连接起来

Cexplorer 的“Verify Source”选项把合约检查与 UPLC Link 连接起来,提供源码仓库、精确代码修订版本、编译器版本以及合约参数的访问。

Cardano Foundation 的高级区块链架构师 Giovanni Gargiulo 于 9 月 25 日在 Developers Office Hours 中演示了该工作流。10 月 7 日发布的会议摘要记录了这项集成以及扩展编译器支持的计划。

该工具弥合了发布代码与识别链上实际运行内容之间的空白。一个项目或许会发布其源码并委托审计,但用户仍需要一种方式来确认已部署的合约与被审查的版本相对应。

对于处理 ADA 及其他 Cardano 资产的应用,这将可供检查的规则与管理兑换、借贷或锁定资金的脚本连接起来。源码验证建立这种连接,安全审计则评估代码中的漏洞。

重建合约以产生可核对的匹配结果

Cardano 智能合约以编译后的 Untyped Plutus Core,即 UPLC 的形式执行。它们的脚本哈希标识了已编译的程序,但不会透露是由哪个源码修订版本或构建设置生成的。

UPLC Link 以特定的 GitHub 提交和编译器版本为起点。它构建源码,计算得到的脚本哈希,并将其与预期的链上标识符进行比较。

该平台也能处理参数化合约,其最终形式取决于设置过程中提供的数值。开发者可以通过界面输入这些数值,包括对其他脚本的引用,然后重新计算结果。

要实现匹配,必须提供正确的源码、编译器与参数。

当前的公共界面标注为 alpha,并支持 Aiken 合约。演示介绍了面向 Scalus、Plutarch 与 plu-ts 支持的工作,以及与 Blaster 的计划性连接,用于对合约属性进行自动化形式化验证。

这些扩展将把平台的覆盖范围拓展到当前 Aiken 工作流之外。

链上记录支持独立验证

CIP-0171 提出了一种共享元数据格式,用于记录重现 Cardano 合约构建所需的信息。它使用交易元数据标签 1984 来标识源码仓库、代码修订版本、编译器、构建环境与参数。

源码仍保留在其仓库中,而区块链保存构建指令。审计人员与研究者可以独立于最初的部署者发布记录,然后通过重建被引用的代码并检查生成的哈希来进行测试。

该规范在官方 CIP 注册表中仍处于提案状态。其格式可适配数个编译器家族,由各个验证工具自行决定支持哪些。

UPLC Link 已支持通过签名的 Cardano 交易进行登记,网络费用以 ADA 支付。其后端会为已提交的记录建立索引,以便通过公共注册表进行发现。该项目还为其他服务提供 API,并发布了在本地运行该平台的说明。

对于已登记的合约,审查者可以从其地址或脚本哈希出发,检索记录的构建细节,并自行检查与源码的连接。应用团队可以在其代码与审计报告旁提供该可重现实的记录。