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

سپورٹ کوڈ

فنکشنexchange.IOمیں شامل ہےencodeطریقہ، جس میں فنکشن کال کوڈنگ واپس کر سکتے ہیںhexتار کی شکل. آپ عوامی طور پر دستیاب پلیٹ فارم سے رجوع کر سکتے ہیںUniswap V3 ٹریڈنگ کلاس لائبریری ٹیمپلیٹمخصوص استعمال کے لیے۔ کوڈنگ کی کالunwrapWETH9طریقہ کار یہاں ایک مثال کے طور پر استعمال کیا جاتا ہے:

function main() {
    // Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
    // To call the unwrapWETH9 method, you need to register the ABI first, omit the registration here.
    // "owner" represents the wallet address, it needs to fill in the specific, 1 represents the number of unwrapping, unwrap a WETH into ETH
    var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
    Log(data)
}

جب کال کریںexchange.IO("encode",...)فنکشن، اگر دوسرا پیرامیٹر (سٹرنگ کی قسم) کے ساتھ شروع ہوتا ہے0x، اس کا مطلب یہ ہے کہ کوڈت (encodeسمارٹ معاہدہ. اگر یہ شروع نہیں ہوتا ہے0x، یہ مخصوص قسم کے حکم کوڈ کرنے کے لئے استعمال کیا جاتا ہے.abi.encodeمیںsolidityمندرجہ ذیل مثال کا حوالہ دیتے ہیں.

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
    */
}

ٹوپلز یا ٹوپلز پر مشتمل اقسام کی ترتیب کوڈنگ کی حمایت کریں:

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کرنے کے لئےencode:

  • قسم کے ٹپل کے مطابق متغیرات:
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    میں منتقل پیرامیٹرز کی ساخت اور قسم کے ساتھ بھی ہم آہنگ ہونا ضروری ہےtuple، جیسا کہtypesپیرامیٹر:tuple(a uint256, b uint8, c address).
  • قسم بائٹس کے مطابق متغیرات:
    "0011"
    

صفوں یا صفوں پر مشتمل اقسام کی ترتیب سے کوڈنگ کی حمایت:

function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}
ایتھریم آر پی سی کو کال کرنے کا طریقہ encodePacked کے لیے معاونت