बंद करने के लिए ESC दबाएँ

JIT Bot कैसे बनाएँ: Rust Stack और Atomic Smart Contracts

यह हमारी श्रृंखला “पूल में शिकारी: JIT लिक्विडिटी की कला और गणित” का तीसरा लेख है। अब इंजीनियरिंग हिस्से पर चलते हैं: कैसे गणितीय सूत्रों को प्रोग्रामिंग कोड में बदलें जो पलक झपकते ही चल जाए।

2026 में, JIT लिक्विडिटी अब विचारों की लड़ाई नहीं बल्कि इन्फ्रास्ट्रक्चर की लड़ाई है। अगर आपका बॉट Python में लिखा है और HTTP के जरिए पब्लिक नोड से जुड़ता है, तो आप सिर्फ हारेंगे नहीं — आपको यह भी नहीं पता चलेगा कि आपका प्रॉफिट कब छीन लिया गया।

1. टेक्नोलॉजी स्टैक: क्यों Rust हावी है

MEV की दुनिया में, मुकाबला माइक्रोसेकंड्स के लेटेंसी पर होता है।

  • भाषा: Rust। Alloy लाइब्रेरी (जो ethers-rs की जगह आई) का उपयोग इंडस्ट्री स्टैंडर्ड बन चुका है। Alloy Ethereum डेटा टाइप्स के साथ बिना अनावश्यक मेमोरी अलोकेशन के काम करने और JSON-RPC रिक्वेस्ट्स की सुपरफास्ट सीरियलाइजेशन/डीसीरियलाइजेशन प्रदान करता है।
  • कनेक्टिविटी: IPC/WebSockets। बॉट HTTP का इस्तेमाल नहीं करते। वे न्यूनतम नेटवर्क ओवरहेड के लिए लोकल नोड से IPC (Inter-Process Communication) के जरिए जुड़ते हैं।
  • स्वयं का नोड (Geth/Reth): टॉप प्लेयर्स Reth (Rust Ethereum) का इस्तेमाल करते हैं क्योंकि यह उन्हें ट्रांज़ैक्शन की पैरेलल सिमुलेशन के लिए इंजन को कस्टमाइज़ करने की सुविधा देता है।

2. स्मार्ट कॉन्ट्रैक्ट: एटॉमिक या मृत्यु

JIT अटैक को सुरक्षित बनाने के लिए, "पूल में प्रवेश" और "पूल से बाहर निकलना" ऑपरेशन्स को लोहे की लॉजिक से जोड़ना जरूरी है। अगर आप लिक्विडिटी जोड़ते हैं लेकिन उसी ब्लॉक में इसे निकालने में असफल होते हैं, तो आपको भारी Impermanent Loss का सामना करना पड़ सकता है।

बॉट Executor Contract का उपयोग करता है। इसका काम ऑफ-चेन स्क्रिप्ट से कमांड लेना और Uniswap v3 के NonfungiblePositionManager (NFPM) को कॉल करके एक सीरीज execute करना है।

कॉन्ट्रैक्ट आर्किटेक्चर का उदाहरण (Solidity 0.8.x):

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
interface INonfungiblePositionManager {
    struct MintParams {
        address token0;
        address token1;
        uint24 fee;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
    }
    function mint(MintParams calldata params) external returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
    function decreaseLiquidity(uint256 tokenId, uint128 liquidity, uint256 amount0Min, uint256 amount1Min, uint256 deadline) external;
    function collect(uint256 tokenId, address recipient, uint128 amount0Max, uint128 amount1Max) external;
}
contract JITExecutor {
    address private immutable owner;
    INonfungiblePositionManager public immutable nftManager;
    constructor(address _nftManager) {
        owner = msg.sender;
        nftManager = INonfungiblePositionManager(_nftManager);
    }
    // मुख्य फ़ंक्शन: बॉट द्वारा एक ही पास में JIT निष्पादित करने के लिए कॉल किया जाता है
    function performJit(
        INonfungiblePositionManager.MintParams calldata mintParams
    ) external {
        require(msg.sender == owner, "Unauthorized");
        // 1. कॉन्ट्रैक्ट को टोकन्स सप्लाई करें (आमतौर पर टोकन्स पहले से ही हैं या Flash Loan के जरिए आते हैं)
        
        // 2. लिक्विडिटी जोड़ें (Mint)
        (uint256 tokenId, uint128 liquidity, , ) = nftManager.mint(mintParams);
        // ध्यान दें: क्लासिक Flashbots बंडल में यह कॉन्ट्रैक्ट
        // यहाँ execution समाप्त कर देगा, और withdrawal दूसरी ट्रांज़ैक्शन में होगा।
        // या, अगर विशेष router का उपयोग किया जाए, तो सब कुछ एक साथ हो सकता है।
    }
    
    // तुरंत प्रॉफिट इकट्ठा करने का फ़ंक्शन
    function withdrawJit(uint256 tokenId, uint128 liquidity) external {
        nftManager.decreaseLiquidity(tokenId, liquidity, 0, 0, block.timestamp);
        nftManager.collect(tokenId, msg.sender, type(uint128).max, type(uint128).max);
    }
}

3. Flashbots Bundles: वास्तविकता को जोड़ना

JIT बॉट की ट्रांज़ैक्शन को शिकार की ट्रांज़ैक्शन के चारों ओर होना चाहिए। इसके लिए Bundles का इस्तेमाल होता है।

बॉट Flashbots (या BeaverBuild, Titan जैसे अन्य MEV relay) को ट्रांज़ैक्शन का एरे भेजता है:

  • [Tx_Mint] — आपकी लिक्विडिटी जोड़ने वाली ट्रांज़ैक्शन।
  • [Tx_Target] — mempool से यूज़र की ट्रांज़ैक्शन (जिसे आपने इंटरसेप्ट किया)।
  • [Tx_Burn] — आपकी withdrawal ट्रांज़ैक्शन।

कम ज्ञात तथ्य: गैस बचाने के लिए, एडवांस बॉट कभी-कभी उसी ब्लॉक में Burn नहीं करते अगर वे सुनिश्चित हों कि अगली ब्लॉक में कीमत tick से बाहर नहीं जाएगी। लेकिन यह “Passive LP” का रिस्क बन जाता है। असली JIT शिकारी हमेशा $N$ ब्लॉक में पोज़ीशन बंद करता है।

4. ऑफ-चेन बॉट लॉजिक (Off-chain Engine)

Rust बॉट अनंत लूप में चलता है:

  • Mempool स्ट्रीमिंग: newPendingTransactions सुनना।
  • सिमुलेशन: प्रत्येक बड़ी ट्रांज़ैक्शन के लिए, बॉट eth_call या revm (Rust EVM) के जरिए “वर्चुअल execution” करता है ताकि यह अनुमान लग सके कि वह कितनी फीस कमाएगा।
  • बंडल जनरेशन: अगर profit > 0, तो पैकेज बनाया जाता है।
  • Bidding: बॉट coinbase.transfer() जोड़ता है — वैलिडेटर के लिए रिश्वत।

इनसाइडर नोट: 2026 में, वैलिडेटर को दिया गया tip बॉट के profit का 99% तक हो सकता है। बॉट शेष 1% net profit के लिए लड़ते हैं, क्योंकि लाखों डॉलर के वॉल्यूम में 1% भी बहुत बड़ा पैसा है।

5. प्रैक्टिकल टिप: multicall का उपयोग

अधिकतम दक्षता के लिए, अपने कॉन्ट्रैक्ट में multicall लॉजिक का उपयोग करें। इससे approve, mint, decreaseLiquidity और collect एक ही ट्रांज़ैक्शन में execute हो सकते हैं यदि आप अपने फंड का उपयोग कर रहे हैं न कि Flash Loans का। यह पुनरावृत्ति कॉल्स पर लगभग 40–60k गैस बचाता है।

 

लेख का सारांश

JIT बॉट की आर्किटेक्चर स्मार्ट कॉन्ट्रैक्ट इंजीनियरिंग का शिखर है। आप “वन-टाइम” लिक्विडिटी बनाते हैं जो केवल सेकंड के हिस्से के लिए मौजूद रहती है।

अगले लेख में: हम “भारी तोपखाना” पर जाएंगे। बिना अपने लाखों के, JIT अटैक कैसे करें? हम Flash-JIT और Flash Loans के उपयोग को समझेंगे ताकि विशाल पूलों में 99.9% लिक्विडिटी कब्जा की जा सके।


JIT लिक्विडिटी में महारत: Uniswap में MEV के लिए संपूर्ण गाइड: 5 में से भाग 3

Astra EXMON

Astra is the official voice of EXMON and the editorial collective dedicated to bringing you the most timely and accurate information from the crypto market. Astra represents the combined expertise of our internal analysts, product managers, and blockchain engineers.

...

अपनी राय साझा करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। अनिवार्य फ़ील्ड चिह्नित हैं *