תארו לעצמכם שמשתמש מגיע לפרוטוקול ה-DeFi שלכם, רוצה להחליף טוקנים, אבל אין לו ETH עבור גז. הוא עוזב למתחרה — ההמרה יורדת. לפי הנתונים שלנו, עד 30% מהמשתמשים נוטשים dApp בעסקה הראשונה בגלל חוסר בגז. עסקאות ללא גז (חסות גז) פותרות את זה: הפרוטוקול משלם את העמלה במקום המשתמש באמצעות ERC-4337 account abstraction או meta-transactions עם Paymaster. אבל חסות גז ללא בקרות היא דרך ישירה לפשיטת רגל. הקמנו מערכת חסות turnkey עם מגבלות, ניטור וחוקים גמישים כך שאתם משלמים רק על פעולות ממוקדות.
עסקאות ללא גז: איך לתת חסות לגז בלי לשבור את הכיס
יש שלוש אפשרויות יישום, והבחירה לא מובנת מאליה. בואו נפרק כל אחת.
איזו ארכיטקטורה לבחור: meta-tx, ERC-4337, או relayer משלכם?
Meta-transactions (EIP-2771). המשתמש חותם על נתונים off-chain, relayer עוטף אותם לעסקה ומשלם גז. החוזה מחלץ את השולח המקורי דרך ERC2771Context. החיסרון הוא relayer מרכזי שאתם חייבים להריץ בעצמכם או לשלם לשירותים (Gelato, Biconomy).
ERC-4337 Account Abstraction + Paymaster. תקן ל-account abstraction ללא שינויי קונצנזוס (ראו EIP-4337 Specification). המשתמש עובד דרך חשבון חכם, וה-Paymaster נותן חסות לגז. רכיבים: UserOperation, Bundler, EntryPoint, Smart Account. ה-Paymaster יכול להחיל חוקים: רק N העסקאות הראשונות, רק מחזיקי טוקנים וכו'.
| רכיב | תפקיד |
|---|---|
| UserOperation | "עסקה" מהמשתמש (לא עסקה אמיתית) |
| Bundler | אוסף UserOps ושולח עסקה אמיתית |
| EntryPoint | חוזה מתאם גלובלי (0x5FF1...7780) |
| Paymaster | מחליט אם לתת חסות לגז עבור UserOp ספציפי |
| Smart Account | הארנק של המשתמש (Safe, Biconomy, ZeroDev) |
Custom Relayer. שירות backend עם ארנק לפתרונות B2B סגורים. הפשוט ביותר אבל מרכזי.
מתי meta-transactions (EIP-2771) הן הבחירה הנכונה?
Meta-tx מתאימות לחוזים קיימים עם שינויים מינימליים. אתם יורשים ERC2771Context ומחליפים msg.sender ב-_msgSender(). דוגמה:
import "@openzeppelin/contracts/metatx/ERC2771Context.sol";
contract MyContract is ERC2771Context {
constructor(address trustedForwarder) ERC2771Context(trustedForwarder) {}
function doSomething() external {
address sender = _msgSender();
// логика
}
}אינטגרציה בסיסית לוקחת 3–4 ימים. הבעיה הנסתרת העיקרית: אם החוזה בודק import "@openzeppelin/contracts/metatx/ERC2771Context.sol"; contract MyContract is ERC2771Context { constructor(address trustedForwarder) ERC2771Context(trustedForwarder) {} function doSomething() external { address sender = _msgSender(); // логика } } במתודות אחרות שלא הותאמו — שגיאות הרשאה בפרודקשן. ראינו פרויקט שבו 15% מהעסקאות נכשלו בגלל זה.
מתי ERC-4337 עם Paymaster מספק יכולת מקסימלית?
ל-dApps חדשים עם UX מתקדם: התחברות חברתית דרך WebAuthn, אצווה (batching), שחזור ארנק. המערכת האקולוגית צעירה, אבל bundlers (Alchemy, Pimlico, Stackup) וספקי Paymaster כבר יציבים. דוגמת אינטגרציה עם Pimlico דרך msg.sender:
import { createSmartAccountClient } from "permissionless";
import { signerToSimpleSmartAccount } from "permissionless/accounts";
import { createPimlicoPaymasterClient } from "permissionless/clients/pimlico";
const paymasterClient = createPimlicoPaymasterClient({
transport: http(`https://api.pimlico.io/v2/${chainId}/rpc?apikey=${PIMLICO_KEY}`),
entryPoint: ENTRYPOINT_ADDRESS_V07,
});
const smartAccount = await signerToSimpleSmartAccount(publicClient, {
signer: walletClient,
factoryAddress: SIMPLE_ACCOUNT_FACTORY,
entryPoint: ENTRYPOINT_ADDRESS_V07,
});
const smartAccountClient = createSmartAccountClient({
account: smartAccount,
entryPoint: ENTRYPOINT_ADDRESS_V07,
chain: mainnet,
bundlerTransport: http(bundlerUrl),
middleware: {
sponsorUserOperation: paymasterClient.sponsorUserOperation,
},
});
const txHash = await smartAccountClient.sendTransaction({
to: contractAddress,
data: encodeFunctionData({
abi,
functionName: "doSomething",
args: [],
}),
});
לפי המדידות שלנו, ERC-4337 משפר את ה-UX פי 2–3 בהשוואה ל-meta-tx: המשתמש אפילו לא רואה דיאלוגים של גז. ציר זמן אינטגרציה מלא — 4–5 ימים.
למה עסקאות ללא גז מפחיתות נטישת משתמשים?
שימו לב: כשהמשתמש לא צריך לחשוב על גז, ההמרה מזנקת. בפרויקט אחד, החלפנו עסקאות רגילות בעסקאות ללא גז דרך ERC-4337 — נטישת המשתמשים ירדה ב-40% בחודש הראשון. לפי הנתונים שלנו, מעבר לעסקאות ללא גז מפחית את עלויות הגז של המשתמשים ב-30–50%. משתמשים נשארים כי הם לא נתקלים בעמלות בלתי צפויות או בדחיות בגלל יתרה נמוכה.
השוואת ארכיטקטורות
| פרמטר | Meta-tx | ERC-4337 | Custom Relayer |
|---|---|---|---|
| דצנטרליזציה | בינונית (relayer) | גבוהה (רשת Bundler) | נמוכה |
| מורכבות אינטגרציה | נמוכה | בינונית | נמוכה |
| UX | טוב | מצוין | טוב |
| עלות גז | גבוהה | בינונית (אצווה) | בינונית |
פרט טכני: פריסת Paymaster
ל-Paymaster חייב להיות הפקדה ב-EntryPoint. בעת יצירת UserOperation, ה-Paymaster בודק תנאי (למשל, `verifySponsor`), ואם כן, מחזיר `context`. אם ה-Paymaster לא יכול לשלם, העסקה נדחית. אנו ממליצים להגדיר מגבלות והתראות כאשר היתרה יורדת מתחת לסף.מה כלול בהקמת עסקאות ללא גז?
- ניתוח הארכיטקטורה הקיימת ובחירת הסכימה האופטימלית (meta-tx / ERC-4337 / relayer)
- פיתוח והתאמת חוזים חכמים (EIP-2771, Paymaster, Smart Account)
- הגדרת bundler ו-Paymaster (Pimlico, Alchemy, Biconomy)
- אינטגרציית frontend דרך
permissionless.js/import { createSmartAccountClient } from "permissionless"; import { signerToSimpleSmartAccount } from "permissionless/accounts"; import { createPimlicoPaymasterClient } from "permissionless/clients/pimlico"; const paymasterClient = createPimlicoPaymasterClient({ transport: http(`https://api.pimlico.io/v2/${chainId}/rpc?apikey=${PIMLICO_KEY}`), entryPoint: ENTRYPOINT_ADDRESS_V07, }); const smartAccount = await signerToSimpleSmartAccount(publicClient, { signer: walletClient, factoryAddress: SIMPLE_ACCOUNT_FACTORY, entryPoint: ENTRYPOINT_ADDRESS_V07, }); const smartAccountClient = createSmartAccountClient({ account: smartAccount, entryPoint: ENTRYPOINT_ADDRESS_V07, chain: mainnet, bundlerTransport: http(bundlerUrl), middleware: { sponsorUserOperation: paymasterClient.sponsorUserOperation, }, }); const txHash = await smartAccountClient.sendTransaction({ to: contractAddress, data: encodeFunctionData({ abi, functionName: "doSomething", args: [] }), });/wagmi - פריסת ניטור יתרת Paymaster, מגבלות והתראות
- תיעוד הסכימה לצוות שלכם
- תמיכה במהלך בדיקות והשקה
ניטור ומגבלות: איך להימנע מגירעון
עסקאות ללא גז הן חסות, ובלי מגבלות התקציב בורח במהירות. הקמנו:
- גז מקסימלי לכל UserOp
- מגבלה יומית לכתובת
- מגבלה יומית גלובלית
- ניטור יתרת Paymaster + מילוי אוטומטי
Paymaster שנגמר לו ההפקדה מתחיל לדחות את כל העסקאות. משתמשים רואים "עסקה ללא גז לא זמינה" ללא הסבר — UX גרוע. התראות הן חובה.
צירי זמן: מ-3 עד 5 ימים
סכימת עסקאות ללא גז בסיסית (meta-transactions) — 3–4 ימים. אינטגרציית ERC-4337 מלאה עם Paymaster מותאם, frontend וניטור — 4–5 ימים. העלות מחושבת באופן אישי.
קבלו ייעוץ לפרויקט שלכם — נעריך את מורכבות יישום עסקאות ללא גז ונבחר את הארכיטקטורה. הזמינו יישום turnkey עם ניטור ותמיכה. אנו מבטיחים פעולה יציבה תחת עומס. ניסיון — מעל 10 פרויקטים עם עסקאות ללא גז על Ethereum ו-L2.







