Skip to content

在Moonbeam上使用Tenderly

概览

Tenderly是一个Web3开发平台,包含一套旨在帮助开发者贯穿DApp开发生命周期的工具。通过Tenderly,您可以构建、调试、测试、优化、监控、设置警报,以及查看分析Moonbeam和Moonriver上的智能合约。

Tenderly平台提供以下功能:

  • Contract Verification - 充分利用Tenderly的所有功能以验证智能合约非常重要,Tenderly提供了多种验证方法。您可以通过Tenderly数据面板Tenderly CLITenderly Hardhat插件验证智能合约

  • Debugger - 使用可视化调试器检查交易并更好地了解代码。通过debugger,您可以查看交易的堆栈追踪,查看交易中的调用,识别合约并查看编码输入、输出和状态变量。您可以在Tenderly数据面板或Tenderly Debugger谷歌扩展程序使用debugger

  • Gas Profiler - 查看您更细化的gas花费情况,从而您可以优化您的智能合约并减少交易gas成本

  • Simulator - 在分叉的开发环境中模拟交易,以在无需将交易传送至链上的情况下了解其如何运作。通过这种方式,您可以了解交易的结果并确保在将其发送至网络前按预期运作。您可以尝试不同的参数,模拟历史和当前交易,并编辑合约源代码。您可以从Tenderly数据面板访问模拟器,或用Tenderly Simulation API以编程的方式来利用模拟器

  • Forks - 此功能在隔离环境中模拟实时Moonbeam网络,这使您可以与部署的合约和实时链上数据进行交互。分叉还使交易模拟更进了一步,它使您能够按时间顺序将多个模拟链接在一起。Forks允许复杂的交易测试场景,当出现一个交易依赖于另一个交易,并具有使用实时链上数据的好处。使用Tenderly分叉功能的时候需要注意一些限制。您不能与任何Moonbeam预编译的合约及其函数交互。预编译是Substrate实施的一部分,因此不能在模拟的EVM环境中复制。这禁止您在Moonbeam上与跨链资产交互和使用基于Substrate的功能(如质押和治理)

  • Alerting - 配置实时警报,在特定活动发生时通知,以便让您了解智能合约的情况

  • Web3 Actions - 在JavaScript或TypeScript创建可编程函数,当特定智能合约或链事件发生时,此函数能够通过Tenderly自动执行

  • Analytics - 可视化交易和链上数据以深入了解当前项目进展。您可以使用Tenderly的分析构建器或创建自定义查询和脚本来满足您的分析需求

  • Sandbox - 在您的浏览器使用内置的JavaScript和Solidity编辑器来直接编写、编译、执行和调试您的智能合约。每次您运行您的代码,Tenderly会创建一个临时分叉,其中包含10个预注资的账户,每个账户有用于测试使用的100个Token

注意事项

除Web3网关外,Tenderly完全支持Moonbeam和Moonriver。Tenderly目前不支持Moonbase Alpha。关于支持的功能和网络的更多信息,请查看Tenderly的官方文档网站

开始操作

Tenderly数据面板提供对一站式Web3开发平台的访问。要开始使用数据面板,您将需要先注册一个新账号。注册成功后,您将能够开始使用您的Tenderly数据面板。

Tenderly dashboard

如果您尚未设置账号,您也可以使用Tenderly浏览器访问有限功能。在没有账户的情况下,您仍可以获取合约和交易的信息,然而,您将无法模拟交易或创建分叉的环境。

要以编程的方式与Tenderly的功能交互,您可以查看Tenderly CLI GitHub代码库以获取更多信息。

以下部分将向您展示如何开始在Moonbeam上使用Tenderly。更详细的文档,请参考Tenderly'的文档网站

创建Sandbox

要使用Tenderly Sandbox部署合约至Moonbeam,您可以导向至sandbox.tenderly.co并执行以下步骤:

  1. 在左手边的Solidity编辑器中输入您的智能合约
  2. Network菜单中选择MoonbeamMoonriver,调整任何编译设置,并在需要时指定要在之上运行代码的区块
  3. 为合约更新右侧的JavaScript编辑器。Ethers.jsWeb3.js默认包含在Sandbox中,并可分别用ethersweb3实例化。另外需要注意的是Sandbox包含global variables以简化开发,因此您无需更新Moonbeam的RPC URL
  4. 一切准备就绪后,点击RUN开始编译合约并执行代码

如果您的代码包含部署合约或发送交易的逻辑,您将会在页面左下角的Simulated Transactions部分下方看到交易。

Tenderly Sandbox

添加合约

开始使用Tenderly数据面板的入门操作是添加已部署的智能合约。添加合约后,您将能够创建交易模拟和分叉、使用debugger、设置监控和警报,等等。

要添加新合约,您可以点击数据面板左侧的Contracts,然后点击Add Contract。随后将跳出弹窗,请执行以下步骤:

  1. 输入合约地址
  2. 根据您想要部署智能合约的目的地,选择MoonbeamMoonriver作为网络
  3. (可选)为合约设置名称
  4. (可选)如果您要添加其他合约,您可以启动Add more滑块。这将允许您在添加初始合约后添加更多合约
  5. 最后点击Add contract将合约添加至数据面板

Add a contract

添加合约后,该合约将出现在Contracts数据面板的合约列表当中。如果合约尚未被验证,数据面板将会显示Unverified状态以及Verify按钮。

Contract in list of contracts

要充分利用Tenderly工具集,建议您验证您的智能合约,您可通过点击Verify按钮完成此操作。您可以通过上传合约的JSON、ABI或源代码验证您的合约。更多信息,请参考Tenderly的文档

创建分叉

Tenderly的分叉功能在隔离环境中模拟实时Moonbeam网络,这使您能够与部署的合约和实时链上数据进行交互。

使用Tenderly分叉功能的时候需要注意一些限制。您不能与任何Moonbeam预编译的合约及其功能交互。预编译是Substrate实施的一部分,因此不能在模拟的EVM环境中复制。这禁止您在Moonbeam上与跨链资产交互和使用基于Substrate的功能(如质押和治理)。

Tenderly使通过数据面板创建分叉变得非常简单。首先,点击左侧菜单的Forks,然后点击Create Fork。随后,执行以下步骤:

  1. Network下拉菜单中选择MoonbeamMoonriver
  2. (可选)为您的分叉设置名称
  3. 如果您只需要特定区块前的数据,您可以关闭Use Latest Block滑块并指定区块号。反之,您可以保持滑块启动的状态以包含所有区块直到最新的区块
  4. 点击Create

Fork Moonbeam

创建分叉后,您可以通过向分叉部署合约或使用其创建交易模拟来开始使用。

要部署合约至分叉,您可以点击Deploy Contract按钮,上传您的合约源代码,并设置编译器配置。提交部署后,您将看到部署的交易出现在Simulated Transactions标签下,并且可以点击simulation获取更多信息。

Fork simulations

要创建额外的模拟,您可以点击New Simulation按钮并输入模拟的配置。更多关于模拟的信息,请参考Tenderly的如何模拟交易的文档

现在您已经了解如何在Moonbeam上使用一些Tenderly的功能,您可以随时查看并了解其开发平台上的其他可用工具。更多信息请访问Tenderly的文档网站。您同样也可以查看Moonbeam的相关教程,使用Tenderly模拟和调试交易

本网站的所有信息由第三方提供,仅供参考之用。Moonbeam文档网站(https://docs.moonbeam.network/)上列出和描述的任何项目与Moonbeam立场无关。Moonbeam Foundation不保证网站信息的准确性、完整性或真实性。如使用或依赖本网站信息,需自行承担相关风险,Moonbeam Foundation不承担任何责任和义务。这些材料的所有陈述和/或意见由提供方个人或实体负责,与Moonbeam Foundation立场无关,概不构成任何投资建议。对于任何特定事项或情况,应寻求专业权威人士的建议。此处的信息可能会包含或链接至第三方提供的信息与/或第三方服务(包括任何第三方网站等)。这类链接网站不受Moonbeam Foundation控制。Moonbeam Foundation对此类链接网站的内容(包括此类链接网站上包含的任何信息或资料)概不负责也不认可。这些链接内容仅为方便访客而提供,Moonbeam Foundation对因您使用此信息或任何第三方网站或服务提供的信息而产生的所有责任概不负责。
Last update: January 25, 2024
| Created: December 28, 2022