יישום עסקאות חוצות-רשת ללא גז

משתמשי Web3 נתקלים לעיתים קרובות במחסום: כל עסקה דורשת אסימונים מקוריים ברשתות שונות, מה שמסבך את האינטראקציות ומעלה עלויות. אנחנו בונים מערכות עסקאות חוצות-רשת ללא גז המאפשרות פעולות ללא צורך בהחזקת אסימוני גז בכל רשת. הצוות שלנו מספק את הפרויקט במפתח מלא—מהארכיטקטורה ועד היישום—תוך הבטחת אמינות ותמיכה מתמשכת.

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

שאלות נפוצות

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

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

עסקאות ללא גז פותרות את אחד החסמים המרכזיים של 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. הזמינו יישום מערכת ללא גז וקבלו לוח זמנים אישי והערכת עלות. צרו קשר לייעוץ — נעזור לכם לקבוע את המחסנית האופטימלית.

שלבי יישום:

  1. חתימה על כוונה מחוץ לשרשרת המתארת את הפעולה הרצויה.
  2. המתווך מאמת את החתימה ומשלם את הגז ברשת המקור דרך נותן החסות לגז.
  3. ההודעה הקרוס-צ'יין מועברת (לדוגמה, דרך Axelar) ומבוצעת ברשת היעד.
  4. האסימונים של המשתמש מועברים לפי הצורך, ונותן החסות לגז מנכה את העלות במטבעות יציבים.