Sumber daya yang dimuat... Pemuatan...

exchange.IO("mengkode",...)

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

Peraturanexchange.IO("encode", ...)fungsi mengembalikan data yang dikodekan. string

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

Peraturankparameter digunakan untuk mengatur fungsi dariexchange.IO()fungsi, diatur untuk"encode"berarti fungsi digunakan untuk pengkodean data. k benar string Peraturanaddressparameter digunakan untuk mengatur alamat kontrak pintar.exchange.IO("encode", ...)fungsi, melewati dalamaddressparameter menunjukkan pengkodean metode panggilan pada kontrak pintar.exchange.IO("encode", ...)fungsi, jikaaddressparameter tidak dilewati, fungsi ini digunakan untuk mengkode urutan jenis yang ditentukan dan secara fungsional setara denganabi.encodedalamSolidityAku tidak tahu. alamat palsu string PeraturandataFormatParameter digunakan untuk menentukan metode, jenis, dan urutan data yang dikodekan. dataFormat benar string Peraturanargparameter digunakan untuk menentukan nilai data spesifik yang sesuai dengandataFormatMungkin ada lebih dari satu parameterargparameter, dan jenis dan jumlahargparameter tergantung padadataFormatpengaturan parameter. arg palsu string, number, tuple, array, dan semua jenis lain yang didukung 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)
}

Misalnya, memanggil metode pengkodeanunwrapWETH9:

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

Ini setara dengan contoh pengkodean dariabi.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)
}

Ini mendukung pengkodean tuple atau urutan tipe yang berisi tuple. Urutan jenis ini terdiri dari:tuple, bytes, jadi ketika meneleponexchange.IO()untuk pengkodean, Anda perlu terus melewati dua parameter:

    1. Variabel yang sesuai dengan tipe tuple:
    
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    

    Parameter yang diberikan juga harus konsisten dengan struktur dan jenistuple, sebagaimana didefinisikan dalamtypesParameter dari formulir:tuple(a uint256,b uint8,c address).

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

Ini mendukung untuk pengkodean berurutan array atau jenis yang mengandung array:

Peraturanexchange.IO()fungsi merangkumencodemetode, yang dapat mengembalikan kode panggilan fungsi kehexUntuk penggunaan khusus, Anda dapat merujuk ke platform yang tersedia untuk umumUniswap V3 Trade TemplateAku tidak tahu. Ketika metode pengkodean memanggil kontrak pintar, ABI yang sesuai harus didaftarkan terlebih dahulu.

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