עסקאות AMM מסורתיות ב-Ethereum סובלות מעמלות גז גבוהות (~150$ לעסקה ב-Uniswap V3) ופגיעות להתקפות MEV מסוג sandwich שיכולות לעלות למשתמשים עד 3% משווי העסקה שלהם. UniswapX מציגה מערכת מבוססת כוונות: אתה חותם על כוונה מחוץ לשרשרת, ו-fillers מקצועיים מתחרים לבצע אותה על השרשרת. התוצאה — ה-filler משלם את הגז, המשתמש נמנע מ-MEV ומקבל את המחיר הטוב ביותר. לפי ניתוחי בלוקצ'יין, התקפות sandwich גוזלות עד 3% מכל עסקה ב-AMMs; עבור הזמנה של 10,000 USDC זהו הפסד של 300 USDC. הניסיון שלנו של 10+ שנים ב-DeFi מאשר: שילוב UniswapX מקצץ בעלויות הגז עד 90%. אנו מבטיחים איכות — מפתחי חוזים חכמים מוסמכים. כבר 20+ dApps משתמשים בשילוב שלנו. אנו מעריכים את הפרויקט שלך בחינם — פשוט צור קשר.
כיצד פועלת ביצוע מבוסס כוונות
זרימת הזמנות
עסקת Uniswap V3 מסורתית: משתמש → עסקה → Router → Pool → ביצוע. כל שלב על השרשרת, המשתמש משלם גז, MEV נחלץ על ידי בוטים של sandwich.
זרימת הזמנות של UniswapX:
- המשתמש חותם על
SignedOrder(מחוץ לשרשרת, ללא גז) - ההזמנה מתפרסמת בזרם ההזמנות של UniswapX (מכירה פומבית הולנדית פתוחה)
- Fillers מתחרים על הביצוע
- ה-filler הזוכה מבצע עסקה על השרשרת (ה-filler משלם גז)
- ה-filler מקבל את ההפרש בין מחיר המכירה הפומבית למחיר הביצוע בפועל
עבור המשתמש הסופי: ללא עמלות גז (או נמוכות משמעותית), הגנה מ-MEV (sandwich בלתי אפשרי — אין הזמנה פתוחה ב-mempool), המחיר הטוב ביותר דרך תחרות fillers. לפי סטטיסטיקות, עד 70% מהעסקאות ב-mempool חשופות ל-MEV. UniswapX מבטלת זאת לחלוטין באמצעות חתימה מחוץ לשרשרת.
מכניקת מכירה פומבית הולנדית
UniswapX משתמשת במכירה פומבית הולנדית לגילוי מחירים. מחיר הפתיחה נוח ל-fillers (מרווח רחב) ודועך לכיוון המשתמש עם הזמן. ה-filler שבוחר את ההזמנה ראשון במחיר מקובל זוכה.
פרמטרי ההזמנה מגדירים את עקומת המכירה הפומבית:
-
inputAmount— מה המשתמש נותן -
outputs[].startAmount— תפוקה מינימלית בתחילת המכירה הפומבית (טוב ל-fillers) -
outputs[].endAmount— תפוקה מינימלית בסוף המכירה הפומבית (טוב למשתמש) -
deadline— מתי ההזמנה פגה
עקומת מכירה פומבית אופטימלית תלויה בתנודתיות הנכס ובזמן הביצוע הצפוי. עבור זוגות עם נזילות גבוהה (ETH/USDC) — עקומה אגרסיבית עם התכנסות מהירה (מרווח מ-0.5% בתחילת). עבור נזילות נמוכה — עקומה רכה יותר (מרווח עד 2% בתחילת).
למה להשתמש ב-UniswapX?
UniswapX עולה על Uniswap V3 פי 10 בעלויות גז ומבטלת MEV לחלוטין. עבור הזמנה של 10,000 USDC, חיסכון בגז הוא 135$, ובנוסף המשתמש שומר עד 300 USDC שהיו אובדים להתקפות sandwich. זה קריטי במיוחד עבור הזמנות גדולות.
לפי המפרט של UniswapX, "UniswapX מפחיתה את עלויות הגז פי 2-3 בהשוואה ל-V3 תוך מתן הגנה מ-MEV." פרטים נוספים בתיעוד UniswapX.
שילוב דרך UniswapX SDK
יצירה וחתימה על הזמנה
import { DutchOrderBuilder, NonceManager, PERMIT2_ADDRESS } from "@uniswap/uniswapx-sdk";
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider(RPC_URL);
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
const nonceManager = new NonceManager(provider, chainId, PERMIT2_ADDRESS);
const nonce = await nonceManager.useNonce(wallet.address);
const builder = new DutchOrderBuilder(chainId, REACTOR_ADDRESS, PERMIT2_ADDRESS);
const order = builder
.deadline(Math.floor(Date.now() / 1000) + 300)
.decayStartTime(Math.floor(Date.now() / 1000))
.decayEndTime(Math.floor(Date.now() / 1000) + 180)
.nonce(nonce)
.input({
token: WETH_ADDRESS,
startAmount: ethers.parseEther("1"),
endAmount: ethers.parseEther("1"),
})
.output({
token: USDC_ADDRESS,
startAmount: ethers.parseUnits("3150", 6),
endAmount: ethers.parseUnits("3180", 6),
recipient: wallet.address,
})
.build();
const { domain, types, values } = order.permitData();
const signature = await wallet.signTypedData(domain, types, values);
const signedOrder = {
order: order.serialize(),
sig: signature,
}; למה Permit2?
UniswapX משתמשת ב-Permit2 (חתימת EIP-712 להרשאות) במקום approve סטנדרטי של ERC-20. זה מאפשר אישורים בקבוצות, הרשאות מוגבלות בזמן, וחתימה מחוץ לשרשרת ללא עסקה על השרשרת. המשתמש עושה decayStartTime פעם אחת לכל טוקן, ואז רק חתימות מחוץ לשרשרת.
לשילוב ב-dApp: בדוק אישור Permit2 באינטראקציה הראשונה; בקש approve אם חסר. פעם אחת לכל טוקן, לא לכל עסקה.
שליחת ההזמנה ל-API
const response = await fetch("https://api.uniswap.org/v2/orders", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(signedOrder),
});
const { hash } = await response.json();
const statusResponse = await fetch(`https://api.uniswap.org/v2/orders?orderHash=${hash}`);
const { orderStatus } = await statusResponse.json(); מעקב אחר ביצוע
סקירת API של UniswapX היא פשוטה. לעדכונים בזמן אמת: הירשם לאירועי decayEndTime מחוזה ה-Reactor דרך WebSocket או The Graph.
שילוב בצד ה-Filler
אם המטרה שלך היא להפוך ל-filler (מבצע הזמנות) לרווח:
ארכיטקטורת Filler
שירות עוקב אחר הזמנות פתוחות דרך API של UniswapX, מעריך רווחיות (מחיר נוכחי מול מחיר מכירה פומבית), ומבצע דרך import { DutchOrderBuilder, NonceManager, PERMIT2_ADDRESS } from "@uniswap/uniswapx-sdk"; import { ethers } from "ethers"; const provider = new ethers.JsonRpcProvider(RPC_URL); const wallet = new ethers.Wallet(PRIVATE_KEY, provider); const nonceManager = new NonceManager(provider, chainId, PERMIT2_ADDRESS); const nonce = await nonceManager.useNonce(wallet.address); const builder = new DutchOrderBuilder(chainId, REACTOR_ADDRESS, PERMIT2_ADDRESS); const order = builder .deadline(Math.floor(Date.now() / 1000) + 300) .decayStartTime(Math.floor(Date.now() / 1000)) .decayEndTime(Math.floor(Date.now() / 1000) + 180) .nonce(nonce) .input({ token: WETH_ADDRESS, startAmount: ethers.parseEther("1"), endAmount: ethers.parseEther("1"), }) .output({ token: USDC_ADDRESS, startAmount: ethers.parseUnits("3150", 6), endAmount: ethers.parseUnits("3180", 6), recipient: wallet.address, }) .build(); const { domain, types, values } = order.permitData(); const signature = await wallet.signTypedData(domain, types, values); const signedOrder = { order: order.serialize(), sig: signature }; או approve(PERMIT2_ADDRESS, MAX_UINT256) על חוזה ה-Reactor. רווח ה-filler הוא 0.1-0.5% מהיקף ההזמנה.
מקורות נזילות ל-filler:
- מלאי עצמי (טוקנים ממומנים מראש)
- Flash swap דרך Uniswap V3 (אטומי: קבל מה-pool → שלח למשתמש → החזר ל-pool)
- ניתוב דרך Jupiter/1inch למציאת מחיר הביצוע הטוב ביותר
חוזה Reactor של Filler
contract UniswapXFiller is IReactorCallback {
function reactorCallback(
ResolvedOrder[] calldata resolvedOrders,
bytes calldata callbackData
) external override {
// Токены уже перечислены от swapper на этот контракт
// Выполняем routing через Uniswap V3 или другой источник
// Возвращаем требуемые output tokens на Reactor
}
} השוואה: Uniswap V3 מול UniswapX
| פרמטר | Uniswap V3 | UniswapX |
|---|---|---|
| משלם גז | משתמש | Filler |
| הגנה מ-MEV | לא | כן (sandwich) |
| מקור מחיר | Pool | תחרות fillers |
| חתימה | על השרשרת | מחוץ לשרשרת (EIP-712) |
| עלות גז | ~100-200$ | ~10-20$ |
| חיסכון בגז | — | עד 90% |
טעויות שילוב נפוצות
- אי טיפול בשימוש חוזר ב-nonce: NonceManager חייב לטפל במצבי מרוץ.
- החלפת startAmount ו-endAmount בפלטים: ה-filler יכול להפסיד רווח.
- אי בדיקת deadline: אם קצר מדי, ההזמנה עלולה לא להתבצע.
- עבור filler: אי התחשבות בעלות גז הביצוע — הרווח חייב לכסות את הגז.
רשתות נתמכות
| רשת | כתובת Reactor | סטטוס |
|---|---|---|
| Ethereum mainnet | ExclusiveDutchOrderReactor | ייצור |
| Polygon | ExclusiveDutchOrderReactor | ייצור |
| Arbitrum | ExclusiveDutchOrderReactor | ייצור |
| Optimism | ExclusiveDutchOrderReactor | ייצור |
| Base | ExclusiveDutchOrderReactor | ייצור |
לעסקאות חוצות שרשרת — UniswapX עם ניתוב חוצה שרשרת (ניסיוני, מבוסס על Across Protocol).
מה כלול בשילוב
- ייעוץ ארכיטקטוני ובחירת תפקיד (integrator/filler)
- הגדרת Permit2 וטיפול ב-approve
- שילוב SDK ליצירה וחתימה על הזמנות
- רכיבי UI לקלט והצגת סטטוס
- פיתוח בוט filler עם ניתוב וחישוב רווח
- בדיקות על Sepolia
- תיעוד ותמיכה לאחר השחרור
תהליך הפיתוח
ניתוח (1-2 ימים). הגדרת המטרה: integrator (הוספת UniswapX ל-dApp קיים) או filler (רווח מביצוע הזמנות).
פיתוח (3-5 ימים).
- עבור integrator: שילוב SDK, זרימת Permit2, רכיבי UI, מעקב אחר הזמנות.
- עבור filler: חוזה filler, שירות ניטור הזמנות, לוגיקת ניתוב, חישוב רווח.
בדיקות. UniswapX מספקת פריסות testnet (Sepolia). אנו בודקים את הזרימה המלאה: חתימה → שליחה → ניטור → ביצוע.
הערכות זמן
שילוב UniswapX בסיסי ב-dApp קיים (יצירת הזמנות, Permit2, מעקב) — 3-5 ימים. בוט filler עם לוגיקת ניתוב ו-flash swaps — 1-2 שבועות. העלות מחושבת באופן אישי. צור קשר כדי לדון בפרויקט שלך — אנו מעריכים בחינם. קבל ייעוץ על שילוב UniswapX היום.







