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

Hỗ trợ giải mã

Xử lý dữ liệu không chỉ hỗ trợ mã hóa (encode), nhưng cũng giải mã (decode) Sử dụngexchange.IO("decode", types, rawData)chức năng để thực hiệndecode operation.

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ụ thực hiệnencodePackedhoạt động đầu tiênpathxử lý tham số, bởi vìexactOutputgọi phương thức mà cần được mã hóa sau đó cầnpathnhư một tham số. Sau đó,encodephương phápexactOutputhợp đồng định tuyến chỉ có một tham số, và loại tham số làtuple. Phương phápexactOutputtên được mã hóa là0x09b81346, được giải mã kết quảdecodeRawbởiexchange.IO ("decode",...)phương pháp, và nó phù hợp với biếndataTuple.

Hỗ trợ cho encodePacked Hỗ trợ chuyển đổi khóa riêng