Интеграция Tenderly Transaction Simulations в Rabby Wallet
Демо предпросмотра транзакции Tenderly Rabby
Обзор проекта
В этом руководстве вы узнаете, как интегрировать Tenderly Simulation API в расширение Chrome для Rabby Wallet. Сначала вы узнаете, как взаимодействовать с API и реализовать логику симуляции транзакций. Затем вы сгруппируете данные симуляции и выведете их пользователю. Таким образом, вы улучшите пользовательский опыт в этом примере Rabby Wallet, добавив новую функциональность.Предварительные требования
Для этого руководства вам понадобятся:- Node.js (версии 14 или новее)
- Yarn
- Знание React.js, TypeScript и Tailwind CSS
Шаг 1. Клонируйте проект Rabby Wallet
Сначала форкните или клонируйте официальный репозиторий 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)
.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=6e4fd241cbd2ebf214eb5e55f3335748)
Шаг 2. Сгенерируйте токен доступа Tenderly
Чтобы использовать Tenderly Simulation API, вам нужно сгенерировать токен доступа. Выполните следующие шаги:- Создайте бесплатную учётную запись Tenderly или войдите в существующую.
- Перейдите на страницу Authorization и нажмите кнопку Generate Access Token.
- Секрет токена отображается только один раз. Обязательно скопируйте и сохраните его в безопасном месте, так как позже его нельзя будет восстановить.
Как сгенерировать токены доступа API
Шаг 3. Соберите логику симуляции
Далее мы рассмотрим следующие шаги:- Настройте безопасное хранилище для учётных данных Tenderly.
- Создайте необходимый код для подключения к Tenderly Simulation API.
- Используйте как приватные, так и публичные эндпоинты для взаимодействия с API.
- Составьте правильный payload для этих эндпоинтов.
Работа с учётными данными 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
simulateTransaction внутри компонента SignTx.tx, поместив её внутри функции 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)
.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=cfdd30d3b489394ff18d90d9f7304b5c)
Tenderly Simulation Summary
Сначала создадим раздел Tenderly Simulation Summary. Здесь мы показываем статус симуляции, сеть, в которой выполнена транзакция, и значение газа. Чтобы построить этот раздел, вам нужно взаимодействовать с ответом 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. Для этого вам нужно добавить логику сортировки, переключения между вкладками и группировки данных по адресу.

example.tsx
Группировка и предпросмотр всех компонентов
Наконец, соберём все компоненты вместе. Для этого вам нужно создать файлTenderlySimulationResult.tsx. Также вам нужно использовать хук useWallet(), предоставленный командой Rabby, для взаимодействия с подключённым адресом кошелька.
Вот обзор кода:
example.tsx