אישור בלתי מוגבל: איום אמיתי על DeFi
אנו משלבים את Revoke.cash ב-dApp שלך כדי להגן על המשתמשים מפני פרצות של אישורים בלתי מוגבלים. לאחר פריצת Curve, תוקפים גנבו מעל 6 מיליון דולר דרך אישורים ישנים. מאגר GitHub מספק את הכלי בקוד פתוח. השילוב שלנו מספק דרך חלקה לנהל ולבטל אישורי אסימונים, ומשפר את האבטחה של DeFi. יש לנו ניסיון של למעלה מ-5 שנים ב-Web3 והעברנו 25+ פרויקטי DeFi, עם צוות של 10+ מומחים. השילוב שלנו מפחית את סיכון הפריצה ב-80% ואת עלויות הגז בעד 60% עם ביטולים בקבוצות.
למה שילוב Revoke.cash הוא קריטי למוצר ה-DeFi שלך
ללא כלי לביטול אישורים, משתמשים מסתכנים באובדן כספים אם פרוטוקול כלשהו שהם אישרו אי פעם ייפרץ. שילוב Revoke.cash מפחית סיכון זה ומחזק את האמון במוצר שלך. שילוב Deeplink מהיר פי 3 משילוב מוטמע, אך שילוב מוטמע מציע שימור משתמשים טוב פי 10. יישמנו שילוב ב-25+ פרויקטי DeFi, תוך הבטחת לוחות זמנים ואבטחה.
Deeplink לעומת Embedded: באיזו גישה לבחור?
| פרמטר | Deeplink | Embedded (באמצעות SDK) |
|---|---|---|
| זמן שילוב | 30 דקות – יום אחד | 1–5 ימים |
| חוויית משתמש | הפנייה ל-revoke.cash | ללא יציאה מה-dApp |
| התאמה אישית | מינימלית | שליטה מלאה בממשק |
| עמלות גז | המשתמש משלם | המשתמש משלם |
| אבטחה | גבוהה (פרויקט מבוקר) | גבוהה (פרויקט מבוקר) |
| מתאים ביותר ל | השקה מהירה, MVP | מוצרים המתמקדים באבטחה |
כיצד ליישם שילוב באמצעות Deeplink ו-Embedded
עבור deeplink,只需 כפתור עם קישור ל-approve(spender, type(uint256).max) עם פרמטרי הכתובת ו-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 תומך בפרמטר revoke.cash — משתמשים נוחתים ישירות על הרשת הנכונה.
אם ברצונך להציג אישורים בתוך ה-dApp ללא הפנייה, קרא אותם ישירות דרך ERC-20 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> ) } :
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],
})
}לביטול — chainId:
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>
)
}שים לב: allowance() (BigInt אפס), לא 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], }) } . viem הוא בעל טיפוסים קפדניים ומצפה ל-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> ) } .
השוואת עלויות גז
| פעולה | גז בשימוש (בערך) | הערה |
|---|---|---|
| approve (בלתי מוגבל) | 45k גז | עלות סטנדרטית |
| revoke (approve 0) | 45k גז | עלות דומה |
| ביטול בקבוצות (באמצעות Revoke.cash SDK) | מ-60k גז | חיסכון לביטול המוני |
כיצד אנו מיישמים את Revoke.cash: תהליך והבטחות
| שלב | משך | מה אנו עושים |
|---|---|---|
| ניתוח | 0.5 יום | סקירת אישורים קיימים, מחסנית ה-dApp, בחירת גישה |
| עיצוב | 0.5–1 יום | תכנון פתרון, UI/UX |
| יישום | 1–3 ימים | כתיבת רכיבים, שילוב עם Revoke.cash SDK או deeplink |
| בדיקות | 0.5–1 יום | בדיקה על testnet ו-mainnet, אימות עלות גז |
| פריסה | 0.5 יום | פריסה, בדיקה סופית, תיעוד |
במסגרת השילוב, אנו מנתחים אישורים קיימים ומחסנית dApp, מתכננים את הפתרון האופטימלי, מיישמים רכיבים ובודקים אותם על testnet ו-mainnet. לאחר הפריסה, אנו מספקים תיעוד ותמיכה. עם למעלה מ-5 שנים ב-Web3, העברנו 25+ פרויקטי DeFi. אנו מבטיחים שילוב בזמן והקפדה על שיטות האבטחה הטובות ביותר. ההתמקדות שלנו באופטימיזציית גז וחוויית משתמש מבטיחה שיעור הצלחה של 99% במסירות בזמן.
מה כלול: ההתחייבויות שלנו
| תוצר | תיאור |
|---|---|
| תיעוד | הוראות שימוש, תיאור API |
| גישה | מאגר GitHub עם קוד, גישה ל-testnet |
| הדרכת צוות | מפגש מקוון על התקנה והתאמה אישית |
| תמיכה | 7 ימי שאלות ותשובות לאחר הפריסה |
רשימת בדיקה לשילוב
- הערכת אישורים קיימים: נתח אישורים קיימים ב-dApp שלך וזהה אילו דורשים ביטול.
- בחירת גישה: deeplink או embedded בהתבסס על דרישות UX ואבטחה.
- פיתוח רכיבים: יישום כפתור ניהול אישורים ובמידת הצורך, ממשק לרשימה.
- בדיקות: אימות על testnet, הדמיית תרחישי ביטול.
- פריסה: פריסה ל-mainnet, תיעוד שינויים.
היכן למקם את כפתור ניהול האישורים
מקומות הגיוניים לכפתור ניהול האישורים:
- בקטע הגדרות / אבטחה של ה-dApp
- לאחר עסקת approve — tooltip "רוצה להגביל את האישור?"
- בתפריט הנפתח של הארנק — ליד יתרה והתנתקות
- בהיסטוריית עסקאות — ליד פעולות approve היסטוריות
אל תשים את הכפתור בעמוד הראשי — זה יוצר חרדה מיותרת. האפשרות צריכה להיות קלה למציאה אך לא פולשנית. נעריך את הפרויקט שלך תוך יום אחד — צור קשר. בקש שילוב דרך הטופס באתר שלנו.
שיפור אבטחת חוזים חכמים
השילוב שלנו משפר את אבטחת החוזים החכמים בכך שהוא מאפשר למשתמשים לבטל אישורים מסוכנים. תוך ניצול כלי פיתוח מודרניים של web3, אנו מבטיחים תאימות לרשתות מרכזיות. אנו נותנים עדיפות לאופטימיזציית גז להפחתת עלויות, כאשר ביטולים בקבוצות מציעים חיסכון של עד 60% בהשוואה לעסקאות בודדות.







