Ми – команда з 5-річним досвідом у Web3, реалізували 25+ проєктів. Пропонуємо інтеграцію Revoke.cash для керування апрувалами.
Інтеграція Revoke.cash у dApp: ключові переваги
Необмежений апрув — стандартна практика в DeFi для економії газу, але й вектор атаки при компрометації протоколу. Користувач дає approve(spender, type(uint256).max) один раз і забуває. При зламі протоколу зловмисник може вивести всі кошти через старі апруви. Revoke.cash — open-source інструмент для перегляду та відкликання таких дозволів (див. оригінальний репозиторій). Ми інтегруємо його у ваш dApp: від швидкої deeplink-кнопки до повноцінного embedded списку allowances. Інтеграція Revoke.cash deeplink займає в 10 разів менше часу, ніж написання кастомного рішення, і коштує $500. Заощаджуйте до 80% часу на розробці. Замовте інтеграцію — підвищіть довіру користувачів.
Чому інтеграція Revoke.cash критична для DeFi-продукту?
Без інструменту відкликання апрувалів користувачі ризикують втратити кошти при зламі будь-якого протоколу, якому коли-небудь дали approve. Інтеграція Revoke.cash знижує цей ризик і зміцнює довіру до вашого продукту. Batch revoke через SDK виконується в 1.5 рази швидше, ніж окремі транзакції, і економить до 30% газу. Deeplink-інтеграція займає 30 хвилин і підходить для швидкого запуску. Embedded версія через SDK займає 1–5 днів, але дає повний контроль над UI та не виводить користувача з dApp. Ми реалізували впровадження в 25+ DeFi-проєктів, гарантуємо терміни та безпеку.
Deeplink vs Embedded: який підхід обрати?
| Параметр | Deeplink | Embedded (через SDK) |
|---|---|---|
| Час інтеграції | 30 хвилин – 1 день | 1–5 днів |
| UX | Редирект на revoke.cash | Без покидання dApp |
| Кастомізація | Мінімальна | Повний контроль інтерфейсу |
| Газові витрати | Користувач платить сам | Користувач платить сам |
| Безпека | Висока | Висока |
| Підходить для | Швидкого запуску, MVP | Продуктів із фокусом на безпеку |
Як реалізувати інтеграцію через deeplink та embedded?
Для deeplink достатньо кнопки з посиланням на revoke.cash із параметрами адреси та chainId. Приклад компонента на React:
import { useAccount } from 'wagmi' function ManageApprovalsButton() { const { address, chainId } = useAccount() const revokeUrl = address ? `https://revoke.cash/${address}?chainId=${chainId ?? 1}` : 'https://revoke.cash' return ( <a href={revokeUrl} target="_blank" rel="noopener noreferrer" className="flex items-center gap-2 text-sm text-yellow-400 hover:text-yellow-300" > <ShieldAlert className="h-4 w-4" /> Керування дозволами </a> ) } Revoke.cash підтримує параметр chainId — користувач одразу потрапляє на потрібну мережу.
Якщо потрібно показувати allowances всередині dApp без редиректу — читаємо напряму через ERC-20 allowance():
import { createPublicClient, http, erc20Abi } from 'viem' async function getAllowance( tokenAddress: `0x${string}`, owner: `0x${string}`, spender: `0x${string}`, chainId: number ): Promise<bigint> { const client = createPublicClient({ chain: getChain(chainId), transport: http() }) return client.readContract({ address: tokenAddress, abi: erc20Abi, functionName: 'allowance', args: [owner, spender], }) } Для revoke — approve(spender, 0):
import { useWriteContract } from 'wagmi' import { erc20Abi } from 'viem' function RevokeButton({ tokenAddress, spender }: { tokenAddress: `0x${string}`, spender: `0x${string}` }) { const { writeContract, isPending } = useWriteContract() return ( <button onClick={() => writeContract({ address: tokenAddress, abi: erc20Abi, functionName: 'approve', args: [spender, 0n], })} disabled={isPending} > {isPending ? 'Відкликання...' : 'Відкликати дозвіл'} </button> ) } Зверніть увагу: 0n (BigInt нуль), не 0. viem строго типізований і очікує bigint для uint256.
Порівняння витрат газу
Таблиця витрат газу
| Операція | Gas used (приблизно) | Коментар |
|---|---|---|
| approve (unlimited) | 45k gas | Стандартна витрата |
| revoke (approve 0) | 45k gas | Аналогічна витрата |
| batch revoke (через Revoke.cash SDK) | від 60k gas | Економія при масовому відкликанні |
Для тих, хто шукає "token approval revoke" або "ERC-20 approve безпека", Revoke.cash є еталонним рішенням.
Як ми впроваджуємо Revoke.cash: процес і гарантії
| Етап | Тривалість | Що робимо |
|---|---|---|
| Аналітика | 0.5 дня | Вивчаємо поточні allowances, стек dApp, обираємо підхід |
| Проєктування | 0.5–1 день | Розробляємо архітектуру, UI/UX |
| Реалізація | 1–3 дні | Пишемо компоненти, інтеграція з Revoke.cash SDK або deeplink |
| Тестування | 0.5–1 день | Тестуємо на testnet і mainnet, перевіряємо gas cost |
| Деплой | 0.5 дня | Розгортання, фінальна перевірка, документація |
В рамках інтеграції ми аналізуємо поточні allowances та стек dApp, проєктуємо оптимальне рішення, реалізуємо компоненти та тестуємо їх на testnet і mainnet. Після деплою надаємо документацію та підтримку. За 5 років роботи ми реалізували 25+ Web3-проєктів. Гарантуємо інтеграцію в строк і відповідність найкращим практикам безпеки.
Що входить у роботу: наші зобов'язання
| Deliverable | Опис |
|---|---|
| Документація | Інструкція з використання компонентів, опис API |
| Доступи | GitHub-репозиторій з кодом, доступ до тестових мереж |
| Навчання команди | Онлайн-сесія з налаштування та кастомізації |
| Підтримка | 7 днів після деплою — відповідаємо на запитання |
Як проходить інтеграція: покроковий чеклист
- Оцінка поточних апрувів: аналізуємо існуючі allowances вашого dApp та визначаємо, які з них потребують відкликання.
- Вибір підходу: deeplink або embedded — виходячи з вимог до UX та безпеки.
- Розробка компонентів: реалізуємо кнопку керування allowances та, за потреби, UI для відображення списку.
- Тестування: перевіряємо на тестовій мережі, емулюємо сценарії відкликання.
- Розгортання: деплоїмо в mainnet, документуємо зміни.
Де розмістити кнопку керування allowances
Логічні місця для кнопки керування allowances:
- У розділі Settings / Security dApp
- Після approve транзакції — спливаюча підказка «Хочете обмежити дозвіл?»
- У Wallet dropdown — поруч з балансом та disconnect
- У Transaction history — поруч з історичними approve операціями
Показувати кнопку на головній сторінці не варто — це створює зайву тривогу. Можливість має бути легкознахідною, але не нав'язливою. Оцінимо ваш проєкт за 1 день — зв'яжіться з нами. Замовте інтеграцію через форму на сайті.







