وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ویب3

exchange.IO("ابھی،"...)

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم میں ، یہ بنیادی طور پر مختلف افعال کو نافذ کرتا ہے ، بلاکچین سے متعلق کالز کے ذریعےexchange.IO()مندرجہ ذیل دستاویز میںexchange.IO()اس کے فنکشن کے مطابق الگ الگ کام.exchange.IO("abi", ...)ایک ABI رجسٹر کرنے کے لئے استعمال کیا جاتا ہے.

exchange.IO(k، پتہ، abiContent)

کےkپیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()فنکشن، پر مقرر"abi"کا مطلب ہے کہ اس فنکشن کو رجسٹر کرنے کے لئے استعمال کیا جاتا ہےABI. k سچ سٹرنگ کےaddressاسمارٹ معاہدے کا پتہ بتانے کے لئے پیرامیٹر استعمال کیا جاتا ہے۔ ایڈریس سچ سٹرنگ کےabiContentپیرامیٹر کی وضاحت کرنے کے لئے استعمال کیا جاتا ہےABIاسمارٹ کنٹریکٹ کا۔ abiContent سچ سٹرنگ

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("api" eth،...)

کال کرنے کا طریقہexchange.IO("api", "eth", ...)تقریب Ethereum RPC طریقہ کار کو کال کرنے کے لئے استعمال کیا جاتا ہے.

کےexchange.IO("api", "eth", ...)فنکشن بلایا RPC طریقہ کار کی واپسی کی قیمت لوٹاتا ہے. string, number, bool, object, array, null اور سسٹم کی معاونت کرنے والی دیگر تمام اقسام

exchange.IO(k، بلاکچین، rpcMethod)exchange.IO(k، بلاکچین، rpcMethod،...args)

کےkپیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()فنکشن، پر مقرر"api"اشارہ کرتا ہے کہ فنکشن کو کال کی درخواست کو بڑھانے کے لئے استعمال کیا جاتا ہے. k سچ سٹرنگ کےblockChainپیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()فنکشن، پر مقرر"eth"اشارہ کرتا ہے کہ یہ فنکشن ایتھرئم نیٹ ورک پر آر پی سی طریقہ کار کالوں کے لئے استعمال ہوتا ہے۔ بلاکچین سچ سٹرنگ کےrpcMethodپیرامیٹر کی طرف سے بلایا جائے گا RPC طریقہ مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()فنکشن. rpc طریقہ سچ سٹرنگ کےargپیرامیٹر استعمال کیا جاتا ہے RPC طریقہ کار کے پیرامیٹرز کی وضاحت کرنے کے لئے بلایا جائے گا. ایک سے زیادہ ہو سکتا ہےargپیرامیٹر۔ قسم اور تعدادargپیرامیٹرز RPC طریقہ کار کی طرف سے مخصوص پر انحصارrpcMethodپیرامیٹر. ارگ غلط string, number, bool, object, array, function, null, and all other types supported by the system string, number, bool, object, array, function, null, and all other types supported by the system string, number, bool, object, array, function, null, and all other types supported by the system string, number, bool, object, array, function, function, null, and all other types supported by the system

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 طریقوں کو کال کر سکتے ہیں.

{@fun BigDecimal}، {@fun BigInt}

exchange.IO("کوڈ،"...)

کےexchange.IO("encode", ...)فنکشن ڈیٹا کوڈنگ کے لئے بلایا جاتا ہے.

کےexchange.IO("encode", ...)فنکشن کوڈڈ ڈیٹا واپس کرتا ہے. سٹرنگ

exchange.IO(k، ڈیٹا فارمیٹ،...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 یا ایک tuple پر مشتمل ایک قسم کے حکم کی کوڈنگ کی حمایت کرتا ہے. اس قسم کے حکم میں شامل ہیں: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طریقہ، جس میں فنکشن کال کوڈ واپس کر سکتے ہیںhexstring فارمیٹ۔ مخصوص استعمال کے لئے ، آپ عوامی طور پر دستیاب پلیٹ فارمز سے رجوع کرسکتے ہیںUniswap V3 Trade سانچہ. جب کوڈنگ کا طریقہ سمارٹ معاہدوں پر کال کرتا ہے تو ، پہلے متعلقہ اے بی آئی کو رجسٹر کرنے کی ضرورت ہے۔

exchange.IO("انکوڈ پیکیجڈ،"...)

کےexchange.IO("encodePacked", ...)تقریب کے لئے استعمال کیا جاتا ہے کہ ایک طرح سے بلایا جاتا ہےencodePacked encoding.

کےexchange.IO("encodePacked", ...)فنکشن واپس کرتا ہےencodePackedخفیہ کردہ ڈیٹا۔ سٹرنگ

exchange.IO(k، ڈیٹا فارمیٹ،...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، ڈیٹا فارمیٹ، ڈیٹا)

کے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، کلید)

پیرامیٹر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()فنکشن نجی چابیاں تبدیل کرنے کی حمایت کرتا ہے اور یہ متعدد پرس پتوں کو جوڑ سکتا ہے۔ متعدد پرس پتوں کو جوڑنے کے لئے متعدد ایکسچینج آبجیکٹ شامل کرنا بھی ممکن ہے۔

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پیرامیٹر اسمارٹ معاہدے کا طریقہ بیان کرنے کے لئے استعمال کیا جاتا ہے جسے بلایا جائے۔ طریقہ کار سچ سٹرنگ کےvalueETH کی رقم بھیجنے کے لئے مقرر کرنے کے لئے استعمال کیا جاتا ہے.stateMutabilityاسمارٹ معاہدے کے طریقہ کار کی خصوصیت ہے جو عملدرآمد کیا جائے گاpayable، پھرvalueپیرامیٹر منتقل کرنے کی ضرورت ہے."stateMutability": "payable"ABI سے دیکھا جا سکتا.exchange.IO()تقریب کی بنیاد پر مطلوبہ پیرامیٹر کا تعین کرے گاstateMutabilityرجسٹرڈ کیا گیا ہے کہ ABI میں وصف.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طریقہ کار کالز، آپ کو عوامی طور پر دستیاب پلیٹ فارم سے رجوع کر سکتے ہیںUniswap V3 Trade سانچہ

یہاں کچھ تفصیلات کا استعمال کرتے ہوئے بیان کیا گیا ہے:


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

ContractV3SwapRouterV2: Uniswap V3 کے روٹر v2 کا پتہ.value: منتقلی کے لئے ETH کی رقم، اگر ایکسچینج آپریشن کا ٹوکن ETH نہیں ہے تو 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"کا مطلب یہ ہے کہ فنکشن استعمال کیا جاتا ہے تشکیل شدہ پرس ایڈریس حاصل کرنے کے لئے. k سچ سٹرنگ

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"کا مطلب یہ ہے کہ فنکشن کا استعمال آر پی سی نوڈس کو سوئچ کرنے کے لئے کیا جاتا ہے۔ k سچ سٹرنگ کےaddressپیرامیٹر RPC نوڈ ایڈریس مقرر کرنے کے لئے استعمال کیا جاتا ہے. ایڈریس سچ سٹرنگ

function main() {
    var chainRpc = "https://bsc-dataseed.binance.org"
    e.IO("base", chainRpc)    // Switching to BSC chain
}
تاریں ٹی اے