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

exchange.IO("đã giải mã",...)

Cácexchange.IO("decode", ...)hàm được gọi theo cách được sử dụng để giải mã.

Cácexchange.IO("decode", ...)Trả về một chuỗi khi chỉ có một dữ liệu được chỉ định bởidataFormatTrả về một mảng khi có nhiều hơn một dữ liệu được chỉ định bởidataFormattham số. mảng,string

exchange.IO(k, dataTình hình, dữ liệu)

Cácktham số được sử dụng để thiết lập chức năng củaexchange.IO()chức năng, và thiết lập nó để"decode"có nghĩa là chức năng được sử dụng để giải mã dữ liệu. k đúng chuỗi CácdataFormattham số được sử dụng để xác định loại và thứ tự của dữ liệu giải mã. dataFormat đúng chuỗi Cácdatatham số được sử dụng để thiết lập dữ liệu được giải mã. dữ liệu đúng chuỗi

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

Hoạt động ngược củaexchange.IO("encode", ...)chức năng:

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

Ví dụ sau đây đầu tiên thực hiện mộtencodePackedhoạt động trênpathxử lý tham số, bởi vìexactOutputgọi phương thức mà cần được mã hóa sau đó đòi hỏipathnhư một tham số. sau đóencodecácexactOutputphương pháp của hợp đồng tuyến đường, chỉ có một tham số loạituple. Tên phương phápexactOutputđược mã hóa như sau:0x09b81346, và sử dụngexchange.IO("decode", ...)phương pháp giải mã kết quảdecodeRaw, phù hợp với biếndataTuple.

Đối với xử lý dữ liệu,exchange.IO()chức năng hỗ trợ không chỉ mã hóa, mà còn giải mã.

exchange.IO (("encodePacked",...) trao đổi.IO (("khóa",...)