Tài nguyên đang được tải lên... tải...

Mã hỗ trợ

Chức năngexchange.IObao gồm cácencodephương pháp, mà có thể trả lại các chức năng gọi mã hóa đểhexđịnh dạng chuỗi. Bạn có thể tham khảo các nền tảng có sẵn cho công chúngUniswap V3 Trading Class Library mẫucho mục đích sử dụng cụ thể. Việc gọi mã hóaunwrapWETH9phương pháp được sử dụng ở đây như một ví dụ:

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

Khi gọi choexchange.IO("encode",...)hàm, nếu tham số thứ hai (loại chuỗi) bắt đầu với0x, nghĩa là gọi phương thức trên mã hóa (encode) hợp đồng thông minh. Nếu nó không bắt đầu với0x, nó được sử dụng để mã hóa thứ tự loại được chỉ định.abi.encodetrongsolidityHãy tham khảo ví dụ sau đây.

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

Hỗ trợ mã hóa trình tự của các tuples hoặc các loại chứa tuples:

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

Lệnh kiểu này bao gồm:tuplebytes, vì vậy hai tham số cần được truyền vào khi gọiexchange.IOđếnencode:

  • Các biến tương ứng với loại tuple:
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    Các thông số được truyền phải phù hợp với cấu trúc và loạituple, như được định nghĩa trongtypestham số:tuple(a uint256, b uint8, c address).
  • Các biến tương ứng với kiểu byte:
    "0011"
    

Hỗ trợ mã hóa thứ tự của mảng hoặc các loại chứa mảng:

function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}
Phương pháp gọi Ethereum RPC Hỗ trợ cho encodePacked