本文介绍了智能合约验证的重要性,它通过匹配源代码和链上字节码来确保区块链的透明度和信任。文章讨论了在Etherscan和Tenderly等平台进行合约验证的方法,以及Tenderly提供的多种验证方式,包括Hardhat插件、Dashboard和CLI,并区分了私有和公开验证的适用场景,强调了合约验证对于开发流程和生态系统的重要性。
智能合约验证对于确保区块链的无需信任性以及启用必要的开发者工具至关重要。探索验证合约的一些最重要原因、可以在哪里完成验证过程,以及 Tenderly 如何在开发过程中使其更容易。
无需信任、透明性和安全性是通常通过智能合约实现的一些核心区块链价值。但是,你如何确保负责处理链上资产的不可变代码实际上是安全和透明的?如果你对智能合约的逻辑了解有限,无需信任是否可能?
并非那么出乎意料的剧透: 合约验证是解决方案 。 为了支持核心区块链价值并确保合约的完整性,工程师通常在 Etherscan 上运行他们的智能合约进行验证过程。
Tenderly 还允许你通过多种方法验证合约。你可以在无代码、低代码和高代码方法中进行选择,每种方法都带来特定的好处和参与程度。无论是通过 Dashboard,使用 Tenderly Hardhat 插件,还是通过 Tenderly CLI,你可以在开发期间私下验证你的合约,或者在上线后公开验证。
你触手可及有许多选项,所以让我们深入研究验证的概念、它的工作原理以及有哪些验证方法。
🔥 最新动态
使用 Tenderly Virtual TestNets,使用真实链上数据构建和测试真实的合约和协议集成。在几毫秒内启动托管的、协作的开发环境。在来自 80 多个网络的生产数据之上构建,具有内置的浏览器和调试工具。
智能合约验证是将智能合约的源代码与其链上字节码进行匹配的过程。这涉及重新编译智能合约,以验证其源代码是否实际生成了部署在链上的字节码。
该过程允许与特定合约交互的任何人对其逻辑充满信心,因为他们可以仔细检查提交的源代码是否与在合约地址执行的源代码相同。
编译你的 Solidity 合约后,编译器会生成可执行的字节码和应用程序二进制接口 (ABI)。以太坊虚拟机 (EVM) 执行字节码中包含的汇编指令。
编译过程将源代码与部署在区块链上的字节码分离。因此,在验证智能合约时,Tenderly 需要将已部署的字节码与原始源代码连接起来。这被称为源代码映射,是 Tenderly 大多数功能的基础。
智能合约验证
为了实现这一点,该算法会重新编译源代码,然后生成字节码的另一个实例。然后,Tenderly 将新生成的字节码与链上实时的字节码进行比较。如果一切匹配,则合约已成功验证。
验证你的智能合约有几个重要的原因:
根据你的项目需求、开发阶段和环境,可以使用不同的平台进行合约验证。一些流行的选项包括以下内容:
在 Tenderly 上使用已验证的智能合约使你能够观察和监控你的合约周围发生的一切。它允许交易解码并提供启用 Debugger、Alerting、Analytics 和其他 Tenderly 功能所需的信息。
Etherscan 是部署后或部署后进行公共智能合约验证的最常用选项。它使用户能够通过按照直观的 UI 通过网站验证他们的合约。Etherscan 还提供了一种自动化的、程序化的方法来 使用 hardhat-etherscan 插件进行合约验证。
一旦合约在 Etherscan 上验证,Tenderly 会自动使用 Etherscan API 拉取此数据。这使得智能合约可以在 Tenderly 上使用和监控,而无需额外的验证步骤。只需将已验证的合约添加到平台即可。
检查 智能合约验证
你可以使用几种方法通过 Tenderly 验证你的智能合约,具体取决于你是以编程方式还是通过 Dashboard 手动验证它们。根据你选择的方法,你可以实现无缝的迭代合约开发。例如,选择自动化方法将允许验证的可重复性,这在你的合约不断演变时变得至关重要。
尽管如此,重要的是探索每种方法,以便你可以确定哪种方法最适合你的项目。
使用 Tenderly Hardhat 插件时,你可以选择 自动和手动验证方法,这些方法提供不同级别的复杂性和用户参与度。
虽然 自动(无代码)验证方法 是无缝的,并且在使用 Hardhat 部署新合约时会自动发生,但手动方法适用于验证以前部署的合约。此外,对于智能合约的复杂部署,可能需要手动验证。
在 手动验证智能合约 方面,你可以选择 简单(低代码) 或 高级(高代码) 的方式来完成该过程。虽然这两种选项都比自动验证提供更大的控制权,但存在细微的差异:
你可以按照一些用户友好的步骤,从 Tenderly Dashboard 处理合约验证。
这是一种手动的合约验证方法,遵循直观的流程。在你不希望立即部署你的智能合约的开发阶段,它可以很有用。
重要的是要注意,此方法不支持自动验证。因此,如果你想自动执行此过程的这一部分,你应考虑探索其他 Tenderly 方法。
使用 Tenderly CLI 是自动部署和验证你的智能合约的另一种方法。要验证你的合约并将其上传到 Tenderly,你需要调用 verify 命令。
此选项支持在不同网络上部署和验证的可重复性。这样,Tenderly 在你继续开发时支持你的智能合约的演变。
你可以选择公共或私有合约验证,具体取决于你是否希望与 Tenderly 项目之外的其他人共享你的合约:
在 Tenderly 用户中,在开发期间采用私有验证是一种常见的做法,因为它允许你在隔离的环境中工作并微调你的合约。你可以使用不同的工具来尝试和优化你的合约,在你的项目的隐私中,而它仍处于开发阶段。
一旦你对你的合约充满信心,并且乐于与其他 Tenderly 用户共享它,你可以将其公开。这使你有机会按照你自己的节奏处理你的智能合约,并在准备好时与世界分享它。
在你的合约公开后,将其用作第三方合约的开发者将能够看到它如何促成了他们的交易。你甚至可以 共享一个 Sandbox 演示,说明如何与你的合约集成。
最后但同样重要的是,如果你的用户的交易因违反你的智能合约的约束和规则而被回滚,他们将拥有所有必要的工具来了解原因、调整交易,甚至在实际重试之前模拟它们。
这样,Tenderly 帮助你建立强大的开发和质量保证流程。你可以处理你的合约、尝试它,并识别可能使其容易受到攻击的潜在问题,然后再将其公开。它还允许你的用户以有效的方式与你的合约交互。
合约验证是开发过程中必不可少的自然组成部分。通过使合约可验证并可供所有人访问,它有助于区块链的无需信任性、安全性和去中心化。
为了确保验证的无缝性,生态系统提供了众多选项,从无代码到高代码解决方案不等。虽然 Etherscan 是行业标准的公共验证,但 Tenderly 提供了多种模式和方法,在开发过程中带来了隐私、流程的自动化以及基本开发工具的可用性。
最终,你选择的方法应适合你的个人项目及其目的。但无论你选择哪种方法,每个参与者的目标都是相同的:完全透明的信息共享。
- 原文链接: blog.tenderly.co/guide-t...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!