রিসোর্স লোড হচ্ছে... লোডিং...

ওয়েব৩

exchange.IO("আবি",...)

এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মে, এটি মূলত বিভিন্ন ফাংশন বাস্তবায়ন করে, ব্লকচেইন সম্পর্কিত কলগুলিexchange.IO()নিম্নলিখিত ডকুমেন্টেexchange.IO()এর ফাংশন অনুযায়ী পৃথকভাবে কাজ করে।exchange.IO("abi", ...)ফাংশনটি একটি ABI নিবন্ধন করতে ব্যবহৃত হয়।

exchange.IO(k, ঠিকানা, abiContent)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"abi"মানে ফাংশনটি রেজিস্টার করতে ব্যবহৃত হয়ABI. k সত্য স্ট্রিং দ্যaddressস্মার্ট কন্ট্রাক্টের ঠিকানা নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার করা হয়। ঠিকানা সত্য স্ট্রিং দ্যabiContentপ্যারামিটার নির্দিষ্ট করতে ব্যবহৃত হয়ABIস্মার্ট কন্ট্রাক্টের। abiবিষয়বস্তু সত্য স্ট্রিং

function main() {
    // register Uniswap SwapRouter02 abi
    var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
    
    // Get the ```ABI``` content of the contract can be obtained with the following URL, taking the ```result``` field only, e.g:
    exchange.IO("abi", routerAddress, abi)
}

স্মার্ট কন্ট্রাক্ট কল করার পদ্ধতিগুলি যদি ERC20 স্ট্যান্ডার্ড পদ্ধতি হয় তবে নিবন্ধন করার প্রয়োজন নেই। নিয়ে যাওABIচুক্তির বিষয়বস্তু নিম্নলিখিত URL-এ পাওয়া যাবে,resultশুধুমাত্র ক্ষেত্র, উদাহরণস্বরূপঃ

https://api.etherscan.io/api?module=contract&action=getabi&address=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45

exchange.IO("এপি", ,...)

কলিং পদ্ধতিexchange.IO("api", "eth", ...)ফাংশনটি ইথেরিয়াম RPC পদ্ধতির কল করতে ব্যবহৃত হয়।

দ্যexchange.IO("api", "eth", ...)ফাংশন RPC পদ্ধতির রিটার্ন মান ফেরত দেয়। string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

exchange.IO(k, blockChain, rpcMethod)exchange.IO(k, blockChain, rpcMethod,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"api"নির্দেশ করে যে ফাংশনটি কল অনুরোধ প্রসারিত করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যblockChainপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"eth"ইথেরিয়াম নেটওয়ার্কে RPC পদ্ধতির কলের জন্য ফাংশনটি ব্যবহার করা হয়। ব্লকচেইন সত্য স্ট্রিং দ্যrpcMethodপ্যারামিটার RPC পদ্ধতি সেট করতে ব্যবহার করা হয়exchange.IO()ফাংশন। rpc পদ্ধতি সত্য স্ট্রিং দ্যargপ্যারামিটার RPC পদ্ধতির প্যারামিটার নির্দিষ্ট করতে ব্যবহৃত হয়.argপ্যারামিটার।argপ্যারামিটার RPC পদ্ধতি দ্বারা নির্দিষ্ট উপর নির্ভর করেrpcMethodপ্যারামিটার। আরজি মিথ্যা string, number, bool, object, array, function, null, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

function main() {
    // "owner" needs to be replaced with the specific wallet address
    // Parameter labels for the "latest" string position: 'latest', 'earliest' or 'pending', please refrer to https://eth.wiki/json-rpc/API#the-default-block-parameter
    // The return value ethBalance is a hexadecimal string: 0x9b19ce56113070
    var ethBalance = exchange.IO("api", "eth", "eth_getBalance", "owner", "latest")              

    // ETH has a precision unit of 1e18
    var ethDecimal = 18              

    // Because of the JavaScript language precision, it is necessary to use the system underlying package function BigInt, BigDecimal to process
    // Convert ethBalance to readable amount, 0x9b19ce56113070 to 0.043656995388076145
    Log(Number((BigDecimal(BigInt(ethBalance))/BigDecimal(Math.pow(10, ethDecimal))).toString()))
}

আপনার ওয়ালেটে ETH এর ব্যালেন্স পরীক্ষা করুনঃ

function mian() {
    // ETH has a precision unit of 1e18
    var ethDecimal = 18  

    // Number of transfers, readable amount e.g. 0.01 ETH
    var sendAmount = 0.01  

    // Due to the JavaScript language precision, it is necessary to use the system underlying encapsulated functions BigInt, BigDecimal to process, and to convert the readable amount to the data processed on the chain
    var toAmount = (BigDecimal(sendAmount)*BigDecimal(Math.pow(10, ethDecimal))).toFixed(0)
    
    // "toAddress" is the address of the recipient's ETH wallet at the time of the transfer, which needs to be filled in specifically, and toAmount is the number of transfers
    exchange.IO("api", "eth", "send", "toAddress", toAmount)
}

ETH ট্রান্সফারের জন্য, আপনি{gasPrice: 11, gasLimit: 111, nonce: 111}প্যারামিটার, যা শেষ প্যারামিটারে সেট করা হয়exchange.IO()আপনার নির্দিষ্ট চাহিদা অনুযায়ী কাজ করতে পারেন।nonceএবং সিস্টেম ডিফল্ট ব্যবহার করুন, অথবা ছেড়েgasLimit/gasPrice/nonceসব সিস্টেমের জন্য ডিফল্ট মান ব্যবহার করুন।

function toAmount(s, decimals) {
    return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}

function main() {
    var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
    Log("gasPrice:", toAmount(gasPrice, 0))   // 5000000000 , in wei (5 gwei)
}

অনুসন্ধানgasPrice:

function toAmount(s, decimals) {
    // The toAmount function can convert hex-encoded values to decimal values
    return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}                

function main() {
    // Coding approve (authorization) method calls
    var data = exchange.IO("encode", "0x111111111117dC0aa78b770fA6A738034120C302", "approve", "0xe592427a0aece92de3edee1f18e0157c05861564", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
    Log("data:", data)
    var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
    Log("gasPrice:", toAmount(gasPrice, 0))
    var obj = {
        "from" : "0x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",   // walletAddress
        "to"  : "0x111111111117dC0aa78b770fA6A738034120C302",
        "gasPrice" : gasPrice,
        "value" : "0x0",
        "data" : "0x" + data,
    }
    
    var gasLimit = exchange.IO("api", "eth", "eth_estimateGas", obj)
    Log("gasLimit:", toAmount(gasLimit, 0))
    Log("gas fee", toAmount(gasLimit, 0) * toAmount(gasPrice, 0) / 1e18)
}

অনুসন্ধানeth_estimateGas:

দ্বিতীয় প্যারামিটারexchange.IO()সঙ্গে ফাংশন"eth"সরাসরি ইথেরিয়াম নোড সার্ভারে উপলব্ধ RPC পদ্ধতি কল করতে পারেন।

{@ মজার বিগ ডেসিমাল}, {@ মজার বিগ ইন্ট}

exchange.IO("কোড",...)

দ্যexchange.IO("encode", ...)ফাংশনটি ডাটা কোডিং এর জন্য কল করা হয়।

দ্যexchange.IO("encode", ...)ফাংশন এনকোড করা ডেটা ফেরত দেয়। স্ট্রিং

exchange.IO(k, dataFormat,...args)exchange.IO(k, ঠিকানা, ডেটাফর্ম্যাট)exchange.IO(k, ঠিকানা, ডেটাফর্ম্যাট,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"encode"মানে ফাংশনটি ডেটা কোডিংয়ের জন্য ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যaddressপ্যারামিটার স্মার্ট চুক্তির ঠিকানা সেট করতে ব্যবহৃত হয়.exchange.IO("encode", ...)ফাংশন,addressপ্যারামিটার স্মার্ট চুক্তিতে পদ্ধতি কল কোডিং নির্দেশ করে.exchange.IO("encode", ...)ফাংশন,addressপ্যারামিটার পাস করা হয় না, ফাংশন নির্দিষ্ট টাইপ অর্ডার কোড করতে ব্যবহৃত হয় এবং কার্যকরীভাবে সমতুল্য হয়abi.encodeমধ্যেSolidity. ঠিকানা মিথ্যা স্ট্রিং দ্যdataFormatপ্যারামিটারটি কোড করা ডেটার পদ্ধতি, প্রকার এবং ক্রম নির্দিষ্ট করতে ব্যবহৃত হয়। তথ্যফরম্যাট সত্য স্ট্রিং দ্যargপ্যারামিটারটি নির্দিষ্ট ডেটা মান নির্দিষ্ট করতে ব্যবহৃত হয় যাdataFormatপ্যারামিটার. এক চেয়ে বেশি হতে পারেargপ্যারামিটার, এবং টাইপ এবং সংখ্যাargপ্যারামিটার উপর নির্ভর করেdataFormatপ্যারামিটার সেটিং। আরজি মিথ্যা স্ট্রিং, সংখ্যা, টুপেল, অ্যারে, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সব ধরনের

function main() {
    // Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
    // Calling the unwrapWETH9 method requires registering the ABI first, which is omitted here
    // "owner" represents the wallet address, which need to fill in the specific, 1 represents the number of unpacking, unpacking a WETH into ETH
    var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
    Log(data)
}

উদাহরণস্বরূপ, এনকোডিং পদ্ধতি কলunwrapWETH9:

function main() {
    var x = 10 
    var address = "0x02a5fBb259d20A3Ad2Fdf9CCADeF86F6C1c1Ccc9"
    var str = "Hello World"
    var array = [1, 2, 3]
    var ret = exchange.IO("encode", "uint256,address,string,uint256[]", x, address, str, array)   // uint i.e. uint256 , the type length needs to be specified on FMZ
    Log("ret:", ret)
    /*
    000000000000000000000000000000000000000000000000000000000000000a    // x
    00000000000000000000000002a5fbb259d20a3ad2fdf9ccadef86f6c1c1ccc9    // address
    0000000000000000000000000000000000000000000000000000000000000080    // Offset of str
    00000000000000000000000000000000000000000000000000000000000000c0    // Offset of array
    000000000000000000000000000000000000000000000000000000000000000b    // The length of str
    48656c6c6f20576f726c64000000000000000000000000000000000000000000    // str data
    0000000000000000000000000000000000000000000000000000000000000003    // The length of the array
    0000000000000000000000000000000000000000000000000000000000000001    // array the first data
    0000000000000000000000000000000000000000000000000000000000000002    // array the second data
    0000000000000000000000000000000000000000000000000000000000000003    // array the third data
    */
}

এটি কোডিং উদাহরণ এর সমতুল্যabi.encodeমধ্যেSolidity:

function main() {
    var types = "tuple(a uint256,b uint8,c address),bytes"
    var ret = exchange.IO("encode", types, {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }, "0011")
    Log("encode: ", ret)
}

এটি একটি টিপল বা একটি টাইপ অর্ডার এনকোডিং সমর্থন করে যা একটি টিপল ধারণ করে। এই প্রকার আদেশের মধ্যে রয়েছেঃtuple, bytes, তাই যখন কলexchange.IO()এনকোডিং এর জন্য, আপনাকে দুটি পরামিতি পাস করতে হবেঃ

    1. টুপল টাইপ অনুসারে ভেরিয়েবলঃ
    
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    

    পাস করা পরামিতিগুলি অবশ্যই কাঠামোর সাথে সামঞ্জস্যপূর্ণ হতে হবেtuple, যেমন সংজ্ঞায়িতtypesফর্মের প্যারামিটারঃtuple(a uint256,b uint8,c address).

    1. টাইপ অনুসারে ভেরিয়েবলbytes:
    "0011"
    
function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}

এটি অ্যারে বা অ্যারে ধারণকারী প্রকারের ক্রমিক কোডিং সমর্থন করেঃ

দ্যexchange.IO()ফাংশন ক্যাপসুলencodeপদ্ধতি, যা ফাংশন কল কোড ফেরত দিতে পারেhexস্ট্রিং ফরম্যাট। নির্দিষ্ট ব্যবহারের জন্য, আপনি পাবলিকভাবে উপলব্ধ প্ল্যাটফর্মগুলি উল্লেখ করতে পারেনUniswap V3 Trade টেমপ্লেট. যখন কোডিং পদ্ধতি স্মার্ট কন্ট্রাক্টকে কল করে, তখন প্রথমে সংশ্লিষ্ট এবিআই নিবন্ধন করতে হবে।

exchange.IO("encodePacked",...)

দ্যexchange.IO("encodePacked", ...)ফাংশন একটি উপায় যে জন্য ব্যবহৃত হয় কল করা হয়encodePacked encoding.

দ্যexchange.IO("encodePacked", ...)ফাংশন রিটার্ন করেencodePackedকোড করা তথ্য। স্ট্রিং

exchange.IO(k, dataFormat,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"encodePacked"মানে ফাংশনটি ডেটার জন্য ব্যবহৃত হয়encodePackedকোডিং। k সত্য স্ট্রিং দ্যdataFormatপ্যারামিটার টাইপ এবং আদেশ নির্দিষ্ট করতে ব্যবহৃত হয়encodePackedকোড করা তথ্য। তথ্যফরম্যাট সত্য স্ট্রিং দ্যargপ্যারামিটারটি নির্দিষ্ট ডেটা মান নির্দিষ্ট করতে ব্যবহৃত হয় যাdataFormatপ্যারামিটার. এক চেয়ে বেশি হতে পারেargপ্যারামিটার, এবং টাইপ এবং সংখ্যাargপ্যারামিটার উপর নির্ভর করেdataFormatপ্যারামিটার সেটিং। আরজি সত্য স্ট্রিং, সংখ্যা, টুপেল, অ্যারে, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সব ধরনের

function main() {
    var fee = exchange.IO("encodePacked", "uint24", 3000)
    var tokenInAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
    var tokenOutAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"
    var path = tokenInAddress.slice(2).toLowerCase()
    path += fee + tokenOutAddress.slice(2).toLowerCase()
    Log("path:", path)
}

ব্যবহারের সময়Uniswap V3, আপনি এক্সচেঞ্জ পথ মত পরামিতি পাস করতে হবে, আপনি ব্যবহার করতে হবেencodePackedকোডিং অপারেশনঃ

exchange.IO("ডিকোড",...)

দ্যexchange.IO("decode", ...)ফাংশনটি ডিকোডিংয়ের জন্য ব্যবহৃত হয়।

দ্যexchange.IO("decode", ...)ফাংশনটি ডিকোড করা ডেটা ফেরত দেয়। স্ট্রিং ফেরত দেয় যখন শুধুমাত্র একটি ডেটা নির্দিষ্ট করা হয়dataFormatপ্যারামিটার. একটি অ্যারে রিটার্ন করে যখন একটির বেশি ডেটা নির্দিষ্ট করা হয়dataFormatপ্যারামিটার। অ্যারে, স্ট্রিং

exchange.IO(k, dataফরম্যাট, ডেটা)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, এবং এটি সেটিং"decode"মানে ফাংশনটি ডেটা ডিকোডিংয়ের জন্য ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যdataFormatপ্যারামিটারটি ডিকোড করা ডেটার ধরন এবং ক্রম নির্দিষ্ট করতে ব্যবহৃত হয়। তথ্যফরম্যাট সত্য স্ট্রিং দ্যdataপ্যারামিটারটি ডেটা ডিকোড করার জন্য ব্যবহার করা হয়। তথ্য সত্য স্ট্রিং

function main() {
    var types = "tuple(a uint256,b uint8,c address),bytes"
    var ret = exchange.IO("encode", types, {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }, "0011")
    Log("encode: ", ret)            

    var rawData = exchange.IO("decode", types, ret)
    Log("decode:", rawData)
}

বিপরীত অপারেশনexchange.IO("encode", ...)ফাংশনঃ

function main() {
    // register SwapRouter02 abi
    var walletAddress = "0x398a93ca23CBdd2642a07445bCD2b8435e0a373f"
    var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
    exchange.IO("abi", routerAddress, abi)   // abi only uses the contents of the local exactOutput method, the full abi can be searched on the Internet              

    // encode path
    var fee = exchange.IO("encodePacked", "uint24", 3000)
    var tokenInAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    var tokenOutAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"
    var path = tokenInAddress.slice(2).toLowerCase()
    path += fee + tokenOutAddress.slice(2).toLowerCase()
    Log("path:", path)              

    var dataTuple = {
        "path" : path, 
        "recipient" : walletAddress, 
        "amountOut" : 1000, 
        "amountInMaximum" : 1, 
    }
    // encode SwapRouter02 exactOutput 
    var rawData = exchange.IO("encode", routerAddress, "exactOutput", dataTuple)
    Log("method hash:", rawData.slice(0, 8))   // 09b81346
    Log("params hash:", rawData.slice(8))              

    // decode exactOutput params
    var decodeRaw = exchange.IO("decode", "tuple(path bytes,recipient address,amountOut uint256,amountInMaximum uint256)", rawData.slice(8))
    Log("decodeRaw:", decodeRaw)
}

নিম্নলিখিত উদাহরণ প্রথম একটি সম্পাদন করেencodePackedঅপারেশনpathপ্যারামিটার প্রক্রিয়াকরণ, কারণexactOutputপদ্ধতি কল যে পরে এনকোড করা প্রয়োজন প্রয়োজনpathএকটি পরামিতি হিসাবে. তারপরencodeপত্রিকাexactOutputরুটিং চুক্তির পদ্ধতি, যার মধ্যে শুধুমাত্র এক ধরনের পরামিতি রয়েছেtuple. পদ্ধতির নামexactOutputকোড করা হয়েছেঃ0x09b81346, এবং ব্যবহারexchange.IO("decode", ...)ফলস্বরূপ ডিকোড করার পদ্ধতিdecodeRaw, পরিবর্তনশীল সঙ্গে সামঞ্জস্যপূর্ণdataTuple.

তথ্য প্রক্রিয়াকরণের জন্য,exchange.IO()ফাংশন শুধুমাত্র এনকোডিং সমর্থন করে না, কিন্তু এছাড়াও ডিকোডিং.

exchange.IO("কী",...)

দ্যexchange.IO("key", ...)ফাংশনটি এমনভাবে বলা হয় যাতে প্রাইভেট কী পরিবর্তন করা যায়।

exchange.IO(কে, কী)

প্যারামিটারkব্যবহার করা হয়exchange.IO()ফাংশন, সেট করুন"key"মানে ফাংশনটি প্রাইভেট কী স্যুইচ করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যkeyপ্রাইভেট কী সেট করতে এই প্যারামিটার ব্যবহার করা হয়। চাবি সত্য স্ট্রিং

function main() {
    exchange.IO("key", "Private Key")   // "Private Key" represents the private key string, which needs to be filled in specifically
}

দ্যexchange.IO()ফাংশনটি ব্যক্তিগত কীগুলি স্যুইচিং সমর্থন করে এবং এটি একাধিক ওয়ালেট ঠিকানা ম্যানিপুলেট করতে পারে। একাধিক ওয়ালেট ঠিকানা ম্যানিপুলেট করার জন্য একাধিক এক্সচেঞ্জ অবজেক্ট যুক্ত করাও সম্ভব (দেখুনঃ {@var/EXCHANGE/exchanges exchanges}) ।

exchange.IO("এপিআই",...)

দ্যexchange.IO("api", ...)ফাংশনটি স্মার্ট কন্ট্রাক্টের পদ্ধতিগুলিকে কল করার জন্য ব্যবহৃত হয়।

দ্যexchange.IO("api", ...)ফাংশনটি স্মার্ট কন্ট্রাক্ট পদ্ধতির রিটার্ন ভ্যালু প্রদান করে। string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

exchange.IO(k, ঠিকানা, পদ্ধতি)exchange.IO(k, ঠিকানা, পদ্ধতি,...args)exchange.IO(k, ঠিকানা, পদ্ধতি, মান,...args)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"api"নির্দেশ করে যে ফাংশনটি কল অনুরোধ প্রসারিত করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যaddressস্মার্ট কন্ট্রাক্টের ঠিকানা নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার করা হয়। ঠিকানা সত্য স্ট্রিং দ্যmethodস্মার্ট কন্ট্রাক্টের যে পদ্ধতিটি কল করা হবে তা নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়। পদ্ধতি সত্য স্ট্রিং দ্যvalueপ্যারামিটারটি ETH পাঠানোর পরিমাণ সেট করতে ব্যবহৃত হয়।stateMutabilityস্মার্ট কন্ট্রাক্ট মেথডের অ্যাট্রিবিউট যা এক্সিকিউটেড হবে তা হলpayable, তারপরvalueপ্যারামিটার পাস করা প্রয়োজন."stateMutability": "payable"ABI থেকে দেখা যাবে।exchange.IO()ফাংশন প্রয়োজনীয় প্যারামিটার নির্ধারণ করবেstateMutabilityABI এর মধ্যে একটি বৈশিষ্ট্য যা নিবন্ধিত হয়েছে।stateMutabilityঅ্যাট্রিবিউট হলnonpayable, তারপরvalueপ্যারামিটার পাস করার প্রয়োজন নেই। মূল্য মিথ্যা সংখ্যা, স্ট্রিং দ্যargপ্যারামিটার ব্যবহার করা হয় স্মার্ট চুক্তির পদ্ধতির প্যারামিটার নির্দিষ্ট করার জন্য।argপ্যারামিটার, এবং টাইপ এবং সংখ্যাargপ্যারামিটারগুলি স্মার্ট কন্ট্রাক্টের পদ্ধতির উপর নির্ভর করে। আর্গ মিথ্যা স্ট্রিং, সংখ্যা, বুল, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সব ধরনের

function main(){
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, the token is 1INCH in the example
    Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
}

দ্যdecimalsপদ্ধতি একটিconstantERC20 এর একটি পদ্ধতি যা গ্যাস খরচ করে না এবং এটি একটি টোকেনের নির্ভুলতা তথ্য অনুসন্ধান করতে পারে।decimalsপদ্ধতির কোন পরামিতি নেই। রিটার্ন মানঃ টোকেনের নির্ভুলতা তথ্য।

function main(){
    // The contract address of the token, in the example the token is 1INCH
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                          

    // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
    Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))   
}

দ্যallowanceপদ্ধতি একটিconstantERC20 এর পদ্ধতি যা গ্যাস খরচ উৎপন্ন করে না এবং একটি নির্দিষ্ট চুক্তি ঠিকানার জন্য একটি টোকেনের অনুমোদিত পরিমাণ অনুসন্ধান করতে পারে।allowanceপদ্ধতিটি 2 টি পরামিতি গ্রহণ করে, প্রথমটি হল ওয়ালেট ঠিকানা এবং দ্বিতীয়টি হল অনুমোদিত ঠিকানা। রিটার্ন মানঃ টোকেনের অনুমোদনের পরিমাণ।
owner: মানিব্যাগের ঠিকানা, উদাহরণ স্ট্রিং owner দ্বারা প্রতিস্থাপিত হয়, প্রকৃত ব্যবহার নির্দিষ্ট ঠিকানা পূরণ করতে হবে।spender: অনুমোদিত চুক্তির ঠিকানা, উদাহরণটি স্ট্রিং দ্বারা প্রতিস্থাপিত হয় spender, প্রকৃত ব্যবহারের জন্য নির্দিষ্ট ঠিকানা পূরণ করতে হবে, উদাহরণস্বরূপ এটি হতে পারেUniswap V3 router v1 address.

function main(){
    // The contract address of the token, the token is 1INCH in the example
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                 

    // 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", "0xde0b6b3a7640000"))  
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.  
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
    var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var tokenInName = "ETH"
    var amountIn = 0.01
    var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100}   // This is an example, depending on the actual scene settings
    var data = ""                                                       // The encoded data, here is the empty string, depending on the actual scene settings
    var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}

দ্যmulticallপদ্ধতিটি একটি অ-constantপদ্ধতিUniswap V3যা গ্যাসের খরচ সৃষ্টি করে এবং একাধিক উপায়ে টোকেন বিনিময় করতে ব্যবহৃত হয়। দ্যmulticallপদ্ধতির প্যারামিটার পাস করার বিভিন্ন উপায় থাকতে পারে, আপনি ABI যা নির্দিষ্টভাবে পদ্ধতি ধারণ করে তা পরীক্ষা করতে পারেন, পদ্ধতি কল করার আগে আপনাকে ABI নিবন্ধন করতে হবে। রিটার্ন মানঃ txid।

এর নির্দিষ্ট উদাহরণগুলির জন্যmulticallপদ্ধতি কল, আপনি প্ল্যাটফর্মs পাবলিকভাবে উপলব্ধ পড়ুন করতে পারেনUniswap V3 Trade টেমপ্লেট

কিছু বিবরণ এখানে ছদ্ম কোড ব্যবহার করে বর্ণনা করা হয়েছেঃ


exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)

ContractV3SwapRouterV2: Uniswap V3 এর রাউটার v2 এর ঠিকানা।value: লেনদেনের টোকেনটি যদি ইটিএইচ না হয় তবে লেনদেনের জন্য ইটিএইচ পরিমাণ, যা 0 এ সেট করা আছে।deadline: deadlineপ্যারামিটারmulticallপদ্ধতি, যা (নতুন Date().getTime() / 1000) + 3600 এ সেট করা যেতে পারে, যা নির্দেশ করে যে এটি এক ঘন্টার জন্য বৈধ।data: dataপ্যারামিটারmulticallপ্যাকিং অপারেশনের তথ্য।

অনুরূপexchange.IO("api", "eth", "send", "toAddress", toAmount),gasLimit/gasPrice/nonceমেথড কল সেটিং নির্দিষ্ট করা যেতে পারে যখন কলmulticallপদ্ধতি। আবার, আমরা বর্ণনা করার জন্য ছদ্ম কোড ব্যবহার করিঃ


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

প্যারামিটার{gasPrice: 11, gasLimit: 111, nonce: 111}নির্দিষ্ট চাহিদা অনুযায়ী সেট করা যাবে, যা শেষ প্যারামিটার সেট করা হয়exchange.IO()ফাংশন। আপনি বাদ দিতে পারেনnonceএবং সিস্টেম ডিফল্ট মান ব্যবহার করুন, অথবা ছেড়েgasLimit/gasPrice/nonceসব সিস্টেমের জন্য ডিফল্ট মান ব্যবহার করুন।

exchange.IO("ঠিকানা")

দ্যexchange.IO("address"){@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্ট দ্বারা কনফিগার করা ওয়ালেটের ঠিকানা পেতে ফাংশনটি এমনভাবে কল করা হয়।

দ্যexchange.IO("address")ফাংশনটি কনফিগার করা ওয়ালেট ঠিকানা ফেরত দেয়। স্ট্রিং

exchange.IO(ক)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"address"এর মানে হল যে ফাংশনটি কনফিগার করা ওয়ালেট ঠিকানা পেতে ব্যবহৃত হয়। ক সত্য স্ট্রিং

function main() {
    Log(exchange.IO("address"))         // Print the wallet address of the private key configured on the exchange object
}

exchange.IO("বেস",...)

দ্যexchange.IO("base", ...)ফাংশন RPC নোড ঠিকানা সেট করার জন্য একটি উপায় কল করা হয়.

exchange.IO(k, ঠিকানা)

দ্যkপ্যারামিটার ফাংশন সেট করতে ব্যবহৃত হয়exchange.IO()ফাংশন, সেট করুন"base"মানে ফাংশনটি RPC নোডগুলি স্যুইচ করতে ব্যবহৃত হয়। k সত্য স্ট্রিং দ্যaddressপ্যারামিটারটি RPC নোড ঠিকানা সেট করতে ব্যবহৃত হয়। ঠিকানা সত্য স্ট্রিং

function main() {
    var chainRpc = "https://bsc-dataseed.binance.org"
    e.IO("base", chainRpc)    // Switching to BSC chain
}
থ্রেড টিএ