{ 跳至内容 }

Sourcify:迈向更安全的合约人机交互

作者:Edi Sinovčić,Franziska Heintel,发布于 2020 年 6 月 2 日

公告

tl;dr:为人类构建合理的区块链应用程序很难。您可以通过利用开源的力量来提升您 dapp 的用户体验。通过将源代码发布到此去中心化存储库并使用元数据文件(将“随机”十六进制字符串转换为人类可读语言),提高用户对他们在区块链上与您的代码进行交互(例如,签署交易)时实际操作的意识,并提高透明度。Sourcify 是一种工具,可以帮助您实现这一点。如果您想上传您的源代码,可以访问verification.komputing.orgSourcify Github 仓库或使用 Remix 中的 Sourcify 插件。此外,要了解 Sourcify 的工作原理及其重要性,请继续阅读。

您可能已经知道 Sourcify 的旧名称“Source-Verify”/ “Source-Verifier” - 不要担心,我们只是决定给它一个更简洁的名字!

YOLO 签名 - 当今以太坊用户体验中的日常问题之一 🙈📝🧨

想想以下问题:您认识多少您正在使用的 dapp 的开发人员?

让我们假设您想使用 MetaMask 与一个 dapp 进行交互,它显示了这个对话框

Yolo Signing

您只活一次 (YOLO) 签名 - 签署需谨慎

这些十六进制数据到底意味着什么?您基本上不知道自己在同意什么 - 但您只活一次,对吧?您是拒绝还是确认?如果您继续签名,您就是在YOLO 签名。YOLO 签名很糟糕,因为即使您只活一次,您也可能会永远后悔某些事情! ;)

通过确认,您盲目地信任此 dapp 的开发人员,相信它会按承诺执行。虽然对人类抱有信心很好,但能够验证发生的事情并做出明智的决定更好。

源代码验证和 NatSpec 来解救

为了防止您的用户不得不盲目地信任您并 YOLO 签名,您(作为 dapp 开发人员)可以验证您的代码。

通过验证并上传您的代码,您允许任何其他开发人员重新编译源代码并自行检查。

正确地“验证”您的代码涉及两个步骤

  1. 使用 NatSpec 注释代码。NatSpec 是以太坊自然语言规范格式,它以友好的方式描述函数、返回值等。
  2. 将 dapp 的源代码及其元数据发布到去中心化网络。

认识 Sourcify,一种去中心化的自动化合约验证服务 📝🔍✔️

Sourcify 试图使源代码验证过程(上述列表中的步骤 2)变得简单透明。您可以通过多种方式使用该工具。

您可以...

  • 使用托管在 verification.komputing.org 上的界面
  • 使用 Remix 插件(我们将在后续文章中向您展示操作步骤!)
  • 手动将每个源代码文件和元数据文件发布到 IPFS(Sourcify 将在部署时自动获取它们)
  • 运行 Sourcify 本身

Sourcify 在幕后是如何工作的? 📖

Sourcify 是以太坊区块链上的一个项目,它

  • 监听智能合约的部署。
  • 检查它们的元数据和源代码是否已发布在 IPFS 或 Swarm 上。
  • 重新编译代码。
  • 检查它是否与已部署的代码相同。
  • 永久存储源代码、ABI 和其他元数据到 IPFS 上。

Sourcify Flowchart

Sourcify 验证流程

Sourcify 拥有一个监控服务,该服务监听以太坊区块链上挖出的新区块。目前,它正在监控以太坊主网和 Rinkeby 和 Goerli 测试网。

它获取区块中的交易,推导出它们的字节码元数据,并尝试在数据中找到指向 IPFS 或 Swarm 的链接,用于源代码和元数据文件。

随后,它尝试获取这些文件。如果成功,检索到的文件将被发送到验证器,验证器尝试重新编译代码并检查它是否与已部署的代码相同。如果一切顺利,并且重新编译的元数据和代码匹配,所有内容都会被索引、固定和存储(在公共去中心化系统中,目前为 IPFS)。

如果您想验证验证器,没问题:只需从 IPFS 中获取文件并自行重新编译 - 必要的编译器选项也存储在系统中。

验证所有源代码 - 我们到了吗? ⛅

坏消息:通往更安全、更了解、更受教育和更去信任的以太坊 dapp 用户体验的道路无疑还很长。

好消息:我们可以做很多事情现在为之做出贡献!

dapp 开发人员可以做的事情

  • 使用 NatSpec 注释您的代码
  • 使用 Sourcify 上传您的源代码

更广泛的以太坊社区可以做的事情

  • 扩展 NatSpec
  • 将 NatSpec 实施到钱包中
  • 让钱包对 NatSpec 的来源充满信心(例如,通过 Sourcify)
  • 实施对 Sourcify 的钱包支持
  • 支持 dapp 开发人员使用 NatSpec、元数据、Sourcify,通过扩展围绕它的开发工具(例如,提供自动发布工具的帮助)

随着 版本 0.6.8 的发布,Solidity 添加了一项建议,即为所有源文件使用 SPDX 许可证标识符,这也存储在合约元数据中。此更改有助于 Sourcify 等工具以及部署工具,通过允许它们在上传代码之前检查开源许可证。

我们希望您喜欢这个关于为什么源代码验证很重要以及它如何工作的初级介绍。如果您有任何问题,请随时与我们联系,并请继续关注我们即将发布的更多内容。


Twitter 上关注 Sourcify。

Gitter 上与我们聊天。

Github 上查看 Sourcify 代码。

在此处浏览已验证的合约 这里

上一篇

下一篇

参与

GitHub

Twitter

Mastodon

Matrix

了解详情

博客文档用例贡献关于论坛

2024Solidity 团队

安全策略

行为准则