Sumber dimuat naik... memuat...

exchange.IO("mengekod",...)

Peraturanexchange.IO("encode", ...)fungsi dipanggil untuk pengekodan data.

Peraturanexchange.IO("encode", ...)fungsi mengembalikan data yang dikodkan. senar

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

Peraturankparameter digunakan untuk menetapkan fungsiexchange.IO()fungsi, ditetapkan kepada"encode"bermaksud fungsi digunakan untuk pengekodan data. k betul senar Peraturanaddressparameter digunakan untuk menetapkan alamat kontrak pintar.exchange.IO("encode", ...)Fungsi, melalui dalamaddressparameter menunjukkan pengekodan panggilan kaedah pada kontrak pintar.exchange.IO("encode", ...)fungsi, jikaaddressparameter tidak diteruskan, fungsi ini digunakan untuk mengkod perintah jenis yang ditentukan dan berfungsi bersamaan denganabi.encodedalamSolidity. alamat palsu senar PeraturandataFormatParameter digunakan untuk menentukan kaedah, jenis, dan urutan data yang dikodkan. dataFormat betul senar Perkhidmatanargparameter digunakan untuk menentukan nilai data tertentu yang sepadan dengandataFormatMungkin ada lebih daripada satu parameterargparameter, dan jenis dan bilanganargparameter bergantung kepadadataFormattetapan parameter. arg palsu rentetan, nombor, tuple, array, dan semua jenis lain yang disokong oleh sistem

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)
}

Sebagai contoh, memanggil kaedah pengekodanunwrapWETH9:

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

Ia sama dengan contoh pengekodanabi.encodedalamSolidity:

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)
}

Ia menyokong pengekodan tuple atau urutan jenis yang mengandungi tuple. Perintah jenis ini terdiri daripada:tuple, bytes, jadi apabila memanggilexchange.IO()untuk pengekodan, anda perlu terus lulus dua parameter:

    1. Peralihan yang sepadan dengan jenis tuple:
    
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    

    Parameter yang dihantar juga harus konsisten dengan struktur dan jenistuple, seperti yang ditakrifkan dalamtypesParameter borang:tuple(a uint256,b uint8,c address).

    1. Peralihan yang sepadan dengan jenisbytes:
    "0011"
    
function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}

Ia menyokong pengekodan berurutan array atau jenis yang mengandungi array:

Peraturanexchange.IO()fungsi merangkumiencodekaedah, yang boleh mengembalikan kod panggilan fungsi kehexUntuk kegunaan khusus, anda boleh merujuk kepada platforms yang tersedia untuk umumUniswap V3 Perdagangan Templat. Apabila kaedah pengekodan memanggil kontrak pintar, ABI yang sepadan perlu didaftarkan terlebih dahulu.

pertukaran.IO (("api", "eth",...) pertukaran.IO (("encodePacked",...)