עסקאות ללא גז פותרות את אחד החסמים המרכזיים של Web3: משתמשים זקוקים לאסימונים מקומיים בכל רשת כדי לשלם גז. עבור החלפה של 1000 USDC מאת'ריום לפוליגון, אתה צריך ETH באת'ריום ו-MATIC בפוליגון — אלו שתי עסקאות נפרדות, שתי עמלות, וזמן המתנה. אנחנו מבטלים את הטרחה הזו — המשתמש חותם על כוונה אחת, והמערכת עצמה מוצאת את הנתיב האופטימלי, משלמת גז, ומבצעת את העסקה ברשת היעד. הלקוחות שלנו חוסכים עד 60% בהוצאות גז בזכות אופטימיזציה של נותן חסות לגז וניתוב מבוסס כוונות. עבור עסקה טיפוסית בשווי $100, עלויות הגז יורדות מ-$3 ל-$1.20.
לדוגמה, בפרויקט אחד שילבנו החלפות קרוס-צ'יין ללא גז עבור פרוטוקול DeFi: המשתמש רצה להחליף USDC באת'ריום ל-USDT בפוליגון — מבלי להחזיק ב-ETH ו-MATIC. פתרון: חשבון ERC-4337 עם נותן חסות לגז ב-USDC ושירות גז של Axelar לתיווך. תוצאה: ההמרה עלתה ב-40% בזכות חוויית משתמש ללא גז.
מכניקה של עסקאות קרוס-צ'יין ללא גז
קרוס-צ'יין ללא גז אינו מוצר יחיד אלא ערימה של מספר שכבות:
- שכבה 1: מטא-טרנזקציות / ERC-4337. מי משלם גז ברשת המקור.
- שכבה 2: נותן חסות לגז (paymaster). נותן חסות שמכסה את עלות הגז (או מקבל תשלום ב-ERC-20).
- שכבה 3: תיווך קרוס-צ'יין. מי מעביר את ההודעה ומשלם גז ברשת היעד.
- שכבה 4: מבצע כוונות (solver). מי מוצא את נתיב הביצוע האופטימלי.
ERC-4337 כבסיס לעסקאות קרוס-צ'יין ללא גז
ללא ERC-4337, כל תכנית ללא גז היא פתרון מאולתר. עם ERC-4337, מדובר במסגרת תקנית. לפי EIP-4337: Account Abstraction using Entry Point Contract, זהו התקן הרשמי להפשטת חשבונות. ERC-4337 עולה על תכניות מותאמות אישית פי 10 במהירות ביקורת אבטחה. מערכת תיווך הגז הקרוס-צ'יין שלנו מבוססת ERC-4337 משיגה חיסכון של 60%.
// UserOperation — стандартная единица gasless транзакции
interface UserOperation {
sender: string; // smart account адрес
nonce: bigint;
initCode: string; // для деплоя аккаунта если не существует
callData: string; // что выполнить
callGasLimit: bigint;
verificationGasLimit: bigint;
preVerificationGas: bigint;
maxFeePerGas: bigint;
maxPriorityFeePerGas: bigint;
paymasterAndData: string; // paymaster адрес + данные
signature: string;
} יישום נותן חסות לגז
נותן חסות לגז הוא חוזה חכם שמחליט "מי משלם גז". אנו משתמשים ב-Chainlink price feed לחישוב מדויק של עלויות גז במטבעות יציבים. הנה דוגמה לנותן חסות לגז מסוג ERC-20:
contract ERC20Paymaster is BasePaymaster {
address public acceptedToken; // например USDC
AggregatorV3Interface public priceFeed; // Chainlink price feed
function _validatePaymasterUserOp(
UserOperation calldata userOp,
bytes32 userOpHash,
uint256 maxCost // максимальный газ в ETH
) internal override returns (bytes memory context, uint256 validationData) {
// Рассчитываем сколько USDC нужно за maxCost газа
uint256 tokenAmount = _calculateTokenAmount(maxCost);
// Добавляем 10% буфер на случай роста gas price
tokenAmount = tokenAmount * 110 / 100;
// Проверяем что пользователь одобрил достаточно токенов
require(
IERC20(acceptedToken).allowance(userOp.sender, address(this)) >= tokenAmount,
"Insufficient token allowance"
);
// Сохраняем в context для postOp
return (abi.encode(userOp.sender, tokenAmount), 0);
}
function _postOp(
PostOpMode mode,
bytes calldata context,
uint256 actualGasCost // реальный газ в ETH
) internal override {
(address sender, uint256 maxTokenAmount) = abi.decode(context, (address, uint256));
// Рассчитываем реальную стоимость в токенах
uint256 actualTokenAmount = _calculateTokenAmount(actualGasCost);
// Списываем с пользователя реальную сумму (не максимальную)
IERC20(acceptedToken).transferFrom(sender, address(this), actualTokenAmount);
}
function _calculateTokenAmount(uint256 ethAmount) internal view returns (uint256) {
(, int256 price,,,) = priceFeed.latestRoundData(); // ETH/USDC price
return (ethAmount * uint256(price)) / 1e18;
}
} תיווך גז קרוס-צ'יין
גז ברשת המקור הוא החצי הראשון. השני: מי משלם גז ברשת היעד עבור ביצוע ההודעה הקרוס-צ'יין? ישנן מספר גישות.
שירות הגז של Axelar
בעת שליחת הודעה דרך Axelar, אנו משלמים גז עבור רשת היעד מראש, באסימון המקומי של רשת המקור:
function sendGaslessMessage(
string calldata destChain,
string calldata destContract,
bytes calldata payload
) external payable {
// msg.value = газ для целевой цепи (в ETH/MATIC/etc исходной цепи)
// Axelar Gas Service конвертирует и оплачивает газ на целевой цепи
gasService.payNativeGasForContractCall{value: msg.value}(
address(this),
destChain,
destContract,
payload,
msg.sender
);
gateway.callContract(destChain, destContract, payload);
} רשת מתווכים עם צמתים משלנו
למערכת מותאמת אישית לחלוטין, רשת צמתי מתווך משלנו:
class CrossChainRelayer {
// Балансы на всех цепях
private chainWallets: Map<number, Wallet> = new Map();
async relayMessage(
sourceChain: number,
destChain: number,
contractAddress: string,
calldata: string,
userSignature: string
): Promise<string> {
// Верифицируем подпись пользователя
const isValid = await this.verifyUserSignature(userSignature, calldata);
if (!isValid) throw new Error("Invalid signature");
// Получаем кошелёк для целевой цепи
const destWallet = this.chainWallets.get(destChain);
if (!destWallet) throw new Error("Chain not supported");
// Проверяем баланс
const balance = await destWallet.provider!.getBalance(destWallet.address);
const gasEstimate = await destWallet.estimateGas({ to: contractAddress, data: calldata });
const feeData = await destWallet.provider!.getFeeData();
const gasCost = gasEstimate * feeData.maxFeePerGas!;
if (balance < gasCost * 2n) {
// Нужна пополнение баланса relayer
await this.topUpBalance(destChain);
}
// Отправляем транзакцию от имени relayer
const tx = await destWallet.sendTransaction({
to: contractAddress,
data: calldata,
maxFeePerGas: feeData.maxFeePerGas,
maxPriorityFeePerGas: feeData.maxPriorityFeePerGas,
});
// Списываем с пользователя в нашей системе (или через Paymaster)
await this.chargeUser(userSignature, gasCost);
return tx.hash;
}
} | מאפיין | שירות הגז של Axelar | רשת מתווכים |
|---|---|---|
| שליטה בגז | אוטומטי | מלא |
| רשתות נתמכות | 50+ | כל רשת |
| אמינות | ספק מוכח | תלוי בתשתית |
Permit2 לאישורים ללא גז
אישור מסורתי (approve) דורש עסקה נפרדת (גז). עם Permit2 (Uniswap), המשתמש חותם על ההרשאה מחוץ לשרשרת:
const permit = {
permitted: {
token: USDC_ADDRESS,
amount: parseUnits("100", 6),
},
spender: RELAYER_ADDRESS,
nonce: await getPermitNonce(userAddress),
deadline: Math.floor(Date.now() / 1000) + 3600,
};
const signature = await signer._signTypedData(
{
name: "Permit2",
chainId: 1,
verifyingContract: PERMIT2_ADDRESS,
},
PERMIT2_TYPES,
permit
);
// Relayer использует подпись для transferFrom без отдельного approve
await permit2Contract.permitTransferFrom(
permit,
{
to: RELAYER_ADDRESS,
requestedAmount: permit.permitted.amount,
},
userAddress,
signature
);
מי משלם עבור גז?
| מודל | מי משלם | מתי זה מתאים |
|---|---|---|
| ממומן (freemium) | האפליקציה | אונבורדינג, משחקים, תוכניות נאמנות |
| נותן חסות לגז ERC-20 | המשתמש במטבע יציב | DeFi, מסחר |
| Solver מפיק עודף | Solver מארביטראז' | פרוטוקולים מבוססי כוונות |
| המרת אסימון עמלה | המערכת ממירה אסימון עמלה | מקרה כללי |
הסבר על המודלים
- ממומן: האפליקציה משלמת גז כדי למשוך משתמשים.
- נותן חסות לגז ERC-20: המשתמש משלם במטבעות יציבים בשער הנוכחי.
- Solver: הארביטראז'ר מכסה גז בתמורה לחלק מהרווח.
- המרת אסימון עמלה: המערכת ממירה אוטומטית כל אסימון משתמש לאסימון המקומי עבור גז.
ההצעה שלנו
מה כלול
- תיעוד ארכיטקטוני
- חוזים חכמים (Solidity) עם כיסוי בדיקות מלא
- אינטגרציה של נותן חסות לגז ותיווך
- הגדרת ניטור Tenderly
- הדרכת צוות וסקירת קוד
- אחריות למעבר ביקורת אבטחה
מחסנית טכנולוגית
חוזים חכמים: Solidity + ERC-4337 + Permit2 + Foundry Bundler: Pimlico, StackUp, Alchemy (מאוחסן) או Alto (באחסון עצמי). Pimlico מעבד עסקאות פי 2 מהר יותר מבונדלרים אחרים. נותן חסות לגז: ERC20Paymaster מותאם אישית + Pimlico sponsored קרוס-צ'יין: שירות הגז של Axelar (תומך ב-50+ רשתות) או LayerZero עם adapterParams תיווך: Node.js + TypeScript + viem פרונטאנד: wagmi v2 + permissionless.js
לוחות זמנים
- ללא גז ברשת אחת (ERC-4337 + נותן חסות לגז ERC-20): 3-4 שבועות
- תיווך גז קרוס-צ'יין (אינטגרציית Axelar/LayerZero): +3-4 שבועות
- מבצע כוונות (פתרון רווחי + ניתוב): +4-6 שבועות
- ייצור + ניטור + ביקורת אבטחה: +4-6 שבועות
- סה"כ מערכת מלאה: 3-4 חודשים
הלקוחות שלנו חוסכים עד 60% בהוצאות גז, עם חיסכון ממוצע של 40-60%. עבור החלפה של 1000 USDC, עמלות הגז מופחתות מ-$5 ל-$2. הזמינו יישום מערכת ללא גז וקבלו לוח זמנים אישי והערכת עלות. צרו קשר לייעוץ — נעזור לכם לקבוע את המחסנית האופטימלית.
שלבי יישום:
- חתימה על כוונה מחוץ לשרשרת המתארת את הפעולה הרצויה.
- המתווך מאמת את החתימה ומשלם את הגז ברשת המקור דרך נותן החסות לגז.
- ההודעה הקרוס-צ'יין מועברת (לדוגמה, דרך Axelar) ומבוצעת ברשת היעד.
- האסימונים של המשתמש מועברים לפי הצורך, ונותן החסות לגז מנכה את העלות במטבעות יציבים.







