שילוב UniswapX: SDK, החלפות מבוססות כוונה, Permit2, בוט מילוי

סוחרים בפלטפורמות AMM מסורתיות חשופים לעמלות גז גבוהות והתקפות MEV הפוגעות ברווחים. אנחנו משלבים את UniswapX, ומיישמים מכניקת intent-based, מכירות פומביות הולנדיות ו-Permit2, כך שהלקוחות שלכם מקבלים את המחיר הטוב ביותר ללא עלויות נוספות. הצוות שלנו מספק את הפרויקט במתכונת turnkey—החל מהגדרת SDK ועד השקת filler bots—ומבטיח ביצוע אמין ותמיכה מתמשכת.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1335
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1031

עסקאות 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:

  1. המשתמש חותם על SignedOrder (מחוץ לשרשרת, ללא גז)
  2. ההזמנה מתפרסמת בזרם ההזמנות של UniswapX (מכירה פומבית הולנדית פתוחה)
  3. Fillers מתחרים על הביצוע
  4. ה-filler הזוכה מבצע עסקה על השרשרת (ה-filler משלם גז)
  5. ה-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 היום.