将 Tenderly 交易模拟集成到 Rabby Wallet 中
Tenderly Rabby 交易预览演示
项目概览
在本教程中,您将学习如何将 Tenderly Simulation API 集成到 Rabby Wallet Chrome 扩展中。首先,您将学习如何与 API 交互并实现交易模拟逻辑。然后,您将对模拟数据进行分组并向用户展示。通过这种方式,您将通过添加新功能来改善此 Rabby Wallet 示例中的用户体验。前置条件
对于本教程,您需要:- Node.js(版本 14 或更高)
- Yarn
- React.js、TypeScript 和 Tailwind CSS 的知识
第 1 步:克隆 Rabby Wallet 项目
首先,fork 或克隆官方的 Rabby Wallet GitHub 仓库。为此,运行:example
example
example
dist 文件夹。您可以使用它来加载 Chrome 扩展。
前往 chrome://extensions 并启用 Developer mode。然后,点击”Load unpacked”按钮,导航到您的 Rabby 目录,并选择 dist 文件夹。屏幕上将显示未打包的扩展,您可以开始使用 Rabby Wallet。
现在,您可以导入现有钱包或创建一个新钱包。
在开始之前,请务必禁用您已安装的 Rabby Wallet Chrome 扩展的生产版本。如果您遇到任何连接问题,请遵循 Rabby 团队的官方指南。
.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=520d02bca5404aca64622e997566e6f3)
启用未打包版本的 Rabby Wallet
.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=6e4fd241cbd2ebf214eb5e55f3335748)
禁用生产版本的 Rabby Wallet
第 2 步:生成 Tenderly 访问令牌
要使用 Tenderly Simulation API,您需要生成一个访问令牌。请按以下步骤操作:- 免费创建一个 Tenderly 账户或登录您现有的账户。
- 前往 Authorization 页面并点击 Generate Access Token 按钮。
- 令牌密钥仅显示一次。请务必将其复制并存储在安全的位置,因为您以后将无法再检索到它。
如何生成 API 访问令牌
第 3 步:构建模拟逻辑
接下来,我们将涵盖以下步骤:- 为 Tenderly 凭据设置安全的存储系统。
- 创建必要的代码以连接到 Tenderly Simulation API。
- 使用私有和公开端点与 API 交互。
- 为这些端点构建合适的负载。
处理 Tenderly 凭据
首先,您需要获取 Tenderly 凭据。创建文件/_raw/tenderly.json 并更新 Tenderly 凭据:
example.json
build/webpack.common.config.js:
example.js
实现交易模拟逻辑
接下来,创建src/ui/utils/tenderly.ts 文件,并使用 Tenderly Simulation API 实现逻辑。在此获取完整源代码。
example.tsx
example
example
SignTx.tx 组件中调用 simulateTransaction 函数,将其放入在交易签名之前被调用的 explainTx 函数中。有关代码详情,请参考此链接。
第 4 步:显示模拟的交易预览
为了帮助用户了解发送交易时会发生什么,您可以在 UI 中显示人类可读的模拟数据。例如,一旦钱包用户模拟了交易,您可以显示哪些资产已被转移。 在 Rabby Wallet 示例中,我们创建了三个易于理解的部分:Tenderly Simulation Summary:将其视为交易报告卡。它为您提供有关交易的基本信息,并附带直接链接以在 Tenderly Dashboard 中查看详细的模拟概览。Assets In & Assets Out:获得您的钱包即将与之交互的所有资产(ERC20 或 NFT 代币)的清晰列表。Tokens Transferred:查看交易中发生的每一次代币转账。为了更清晰起见,按地址对所有转账进行分组,并突出显示原生代币转账。
.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=5d41e85766b24da2a541d8c60ea31565)
在 Uniswap 上进行 ERC20 代币兑换的交易预览
.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=cfdd30d3b489394ff18d90d9f7304b5c)
在 Joepegs 上购买 NFT 代币的交易预览
Tenderly Simulation Summary
首先,让我们创建 Tenderly Simulation Summary 部分。在这里,我们展示模拟状态、交易执行的网络和 gas 值。 要构建此部分,您需要与 Tenderly Simulation API 响应交互。首先创建一个TenderlySimulationSummary.tsx 文件。您可以在下方或此 GitHub 仓库中找到完整的代码实现。
example.tsx
example.tsx
Tenderly Simulation API
Assets In & Assets Out
第二部分提供了对在 Rabby Wallet 示例中管理和监控资产流动的洞察。它显示传入和传出的资产,以便您更好地查看钱包活动。 要实现这一点,首先创建一个TenderlyWalletChanges.tsx 文件:
example.tsx
- 进入钱包的资产
- 从钱包流出的资产
资产与余额变化
Tokens Transferred
Token Transfers 部分是一个更复杂的组件。此文件主要管理布局,因此让我们首先讨论排序逻辑。您可以在此处找到该部分的实现。 首先创建一个TenderlyAssetChanges.tsx 文件。它包含用于展示两个标签页 Tokens Transferred 和 Native Coins Transferred 的逻辑。为此,您需要添加用于排序、切换标签页以及按地址对数据进行分组的逻辑。

Tokens Transferred UI
example.tsx
组合和预览所有组件
最后,让我们把所有组件放在一起。为此,您需要创建一个TenderlySimulationResult.tsx 文件。您还需要使用 Rabby 团队提供的 useWallet() hook 与已连接的钱包地址交互。
以下是代码概览:
example.tsx