संसाधन लोड हो रहा है... लोड करना...

स्मार्ट कॉन्ट्रैक्ट को कॉल करने की विधि

निम्नलिखित सामग्री कुछ स्मार्ट कॉन्ट्रैक्ट विधि कॉल का एक उदाहरण है।

  • दशमलव दdecimalsविधि हैconstantविधिERC20जो उत्पन्न नहीं करता हैgasखपत, और यह एक की सटीकता डेटा क्वेरी कर सकते हैंtoken. दdecimalsरिटर्न वैल्यूः परिशुद्धता डेटाtoken.

    function main(){
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, in the example the token is 1INCH
        Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
    }
    
  • भत्ता दallowanceविधि हैconstantविधिERC20जो उत्पन्न नहीं करता हैgasखपत, और यह एक निश्चित मात्रा के अधिकृत मात्रा पूछ सकते हैंtokenएक निश्चित अनुबंध पते के लिए। दallowanceविधि को 2 मापदंडों में पारित करने की आवश्यकता है, पहला वॉलेट पता है, और दूसरा अधिकृत पता है।token.

    function main(){
        // The contract address of the token, in the example the token is 1INCH
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"            
        var owner = ""
        var spender = ""
        
        // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the current exchange object bound to the wallet to the spender address authorized 1 1INCH.
        Log(exchange.IO("api", tokenAddress, "allowance", owner, spender))
    }
    

    owner: वॉलेट का पता उदाहरण में स्ट्रिंग owner से बदल दिया गया है. वास्तविक उपयोग में, आपको पता भरने की आवश्यकता है.spender: अधिकृत अनुबंध पते को उदाहरण में स्ट्रिंग spender द्वारा प्रतिस्थापित किया जाता है। वास्तविक उपयोग में, आपको पते को विशेष रूप से भरने की आवश्यकता होती है, उदाहरण के लिए, पते कोUniswap V3 router v1.

  • अनुमोदन करना दapproveविधि एक गैर-constantविधिERC20जो उत्पन्न करता हैgasउपभोग, जिसका उपयोग एकtokenएक निश्चित ठेके के पते पर लेनदेन की राशि। दapproveविधि को 2 मापदंडों में पारित करने की आवश्यकता है, पहला अधिकृत होने वाला पता है और दूसरा अधिकृत राशि है।txid.

    function main(){
        // The contract address of the token, in the example the token is 1INCH
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
        var spender = ""
        var amount = "0xde0b6b3a7640000"
        
        // The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token.
        Log(exchange.IO("api", tokenAddress, "approve", spender, amount))
    }
    

    spender: अधिकृत अनुबंध का पता, उदाहरण स्ट्रिंग spender द्वारा प्रतिस्थापित किया जाता है, वास्तविक उपयोग के लिए विशिष्ट पते को भरने की आवश्यकता होती है, उदाहरण के लिए यह हो सकता हैUniswap V3 router v1 address. amount: अधिकृतियों की संख्या, यहाँ हेक्साडेसिमल स्ट्रिंग का उपयोग करके दर्शाई गई है, जो दशमलव मान के अनुरूप है1e18, से विभाजितtokenउदाहरण में परिशुद्धता इकाई (यानी, 1e18), 1 उत्पन्नtoken authorized.

    के तीसरे पैरामीटरexchange.IOफ़ंक्शन पारित किया जाता है विधि नामapprove, जिसे इस रूप में भी लिखा जा सकता हैmethodId, उदाहरण के लिएः 0x571ac8b0. यह भी पूर्ण मानक विधि नाम लिखने के लिए संभव है, जैसे कि approve(address,uint256) .

  • बहुआयामी दmulticallविधि एक गैर स्थिर विधि हैUniswap V3, जो उत्पन्न करेगाgasखपत और कई तरीकों से टोकन का आदान-प्रदान करने के लिए इस्तेमाल किया जा सकता है। दmulticallविधि में पैरामीटर पास करने के कई तरीके हो सकते हैं. आप विवरण के लिए विधि युक्त एबीआई से क्वेरी कर सकते हैं. आपको विधि को कॉल करने से पहले एबीआई को पंजीकृत करने की आवश्यकता है. रिटर्न मानःtxid.

    विशिष्ट उदाहरणों के लिएmulticallविधि कॉल, कृपया जनता का उल्लेख करेंUniswap V3 ट्रेडिंग क्लास लाइब्रेरी टेम्पलेटहमारे मंच का।

    function main() {
        var ABI_Route = ""
        var contractV3SwapRouterV2 = ""
        var value = 0
        var deadline = (new Date().getTime() / 1000) + 3600
        var data = ""
        exchange.IO("abi", contractV3SwapRouterV2, ABI_Route)
        exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
    }
    

    ABI_Route: Uniswap V3 के राउटर v2 अनुबंध का ABI, इसे वास्तविक स्थिति के अनुसार भरने की आवश्यकता है।contractV3SwapRouterV2: Uniswap V3 के राउटर v2 पता, वास्तविक उपयोग में एक विशिष्ट पता भरने की आवश्यकता होती है...value: हस्तांतरित ईटीएच की राशि, इसे 0 पर सेट करें यदिtokenInएक्सचेंज ऑपरेशन के लिए टोकन ईटीएच नहीं है, इसे वास्तविक स्थिति के अनुसार भरने की आवश्यकता है।deadline: इसे सेट किया जा सकता है(new Date().getTime() / 1000) + 3600, जिसका अर्थ है कि यह एक घंटे के लिए वैध है।data: पैकिंग कार्य के आंकड़े, इसे वास्तविक स्थिति के अनुसार भरने की आवश्यकता है।

    यह भी निर्दिष्ट करना संभव हैgasLimit/gasPrice/nonceविधि कॉल के लिए सेटिंगः

    exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
    

    आप पैरामीटर सेट कर सकते हैं{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}आपकी विशिष्ट आवश्यकताओं के अनुसार, पैरामीटर को अंतिम पैरामीटर पर सेट किया जाता हैexchange.IOकार्य। आप छोड़ सकते हैंnonceऔर सिस्टम डिफ़ॉल्ट का उपयोग करें, या सेट नहींgasLimit/gasPrice/nonceऔर सभी सिस्टम डिफ़ॉल्ट मानों का उपयोग करें.

    यह ध्यान दिया जाना चाहिए कि उदाहरण में, विशेषताstateMutabilityमेंmulticall(uint256,bytes[])विधि हैpayable, औरvalueपैरामीटर को पास करने की आवश्यकता है। विशेषताstateMutability":"payable"से देखा जा सकता है।ABI.exchange.IOसमारोह के अनुसार आवश्यक मापदंडों का निर्धारण करेगाstateMutabilityविशेषता मेंABIजिसे पंजीकृत किया गया है। यदिstateMutabilityविशेषता हैnonpayable, पैरामीटरvalueपास करने की आवश्यकता नहीं है।

निजी कुंजी स्विच करने के लिए समर्थन अन्य फ़ंक्शन कॉल