什么是交易预览?
交易预览为 dapp 和钱包提供了一种安全的测试方案,使用户能够在实际网络上执行交易之前预览交易结果。该方案使用 Tenderly 的 Simulation API 在模仿区块链最新状态的虚拟环境中干运行交易,以确保模拟结果真实可靠。 以下示例项目展示了交易预览功能在 Rabby Wallet 中的工作方式。为什么钱包用户需要模拟
为用户提供一种在动用真实资产之前预览交易的方式在多个方面都非常有益。 首先,它帮助用户(尤其是刚接触交易的新手)在真正执行交易之前进行练习,从而避免错误。这让他们更容易开始使用您的钱包,并建立信任。其次,它帮助用户理解自己将支付多少手续费,从而节省资金。但最重要的是,它可以在用户签署交易前提醒他们潜在的安全风险。 Tenderly 的 Simulation API 通过以下方式帮助您实现这些目标:- 显示资产与余额变化,包括同质化代币、非同质化代币和原生代币,并根据来自 CoinGecko 的价格换算为美元。
- 提供准确的 gas 使用估算以执行交易,帮助用户节省费用。
- 告知用户交易是否会失败,帮助他们节省 gas 费。
- 通过人类可读的错误信息帮助用户理解交易失败的原因。
- 为用户提供交易将访问的地址与存储槽的访问列表。
- 以解码形式获取发出的事件、日志名称及相关参数。
- 使用捆绑模拟在 DeFi 平台上验证执行与批准涉及多个中间步骤的兑换(swap)的交易流程。
将模拟集成到钱包中
我们创建了两个开源项目,向您展示如何将 Tenderly 的 Simulation API 集成到您的 dapp 或钱包中。这些示例演示了如何将交易预览功能添加到 MetaMask Snap 和 Rabby Wallet。 您可以在 GitHub 下载这两个项目的源代码。此外,请务必查看 Simulation API 参考以获取有关如何向 API 发起请求和查询结果的指导。带交易预览的 MetaMask Snap
带交易预览的 Rabby Wallet
带交易预览的 MetaMask Snap
MetaMask Snap 项目演示了如何连接到 Simulation API、发送交易数据、获取模拟结果,并在 MetaMask UI 中向用户展示。这包括以美元表示的资产变化、原生资产余额变化、输出值、存储变化、事件日志以及调用追踪。ERC20 转账示例
以下是一个成功的 ERC20 代币转账示例,其中将 1 USDC 发送至 demo.eth。第一张图片说明了发生的资产变化,随后是交易详情的细分。.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=93e6e1d3ee95e1199d47e80f36432c46)
NFT 转账示例
下面是一个 ERC721(NFT)代币转账示例。此示例涉及将 1 个 Crypto Bull 转账到另一个地址。第一张截图显示资产变化,右侧图片显示交易详情。.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=667bfb482dc0111023f85e945fe23245)
指南:如何为 MetaMask Snap 添加交易预览
带交易预览的 Rabby Wallet
第二个项目向您展示如何将我们的 Simulation API 集成到 Rabby Wallet,让用户能够在 UI 中预览交易结果。当用户确信交易将按预期执行时,他们可以在 UI 中签署该交易。在 Uniswap 上的 ERC20 代币兑换示例
下方图片展示了在 Uniswap 上使用 ETH 兑换 1INCH 的一次成功交易,向用户在 Rabby Wallet UI 中同时显示资产变化以及详细的交易细分。
在 Joepegs 上购买 NFT 的示例
以下是一次成功购买 NFT 的示例,附带资产变化及模拟结果摘要。