Die Ressourcen sind geladen. Beförderung...

exchange.IO("Decodieren",...)

Dieexchange.IO("decode", ...)Funktion wird auf eine Art und Weise aufgerufen, die für die Entschlüsselung verwendet wird.

Dieexchange.IO("decode", ...)Funktion gibt die entschlüsselten Daten zurück. Gibt eine Zeichenkette zurück, wenn nur ein von derdataFormatParameter. Gibt ein Array zurück, wenn mehr als ein von derdataFormatParameter. - Das ist nicht wahr.

exchange.IO(k, Daten)

DiekParameter wird verwendet, um die Funktion derexchange.IO()Funktion und Einstellung auf"decode"bedeutet, dass die Funktion zur Datenentzifferung verwendet wird. k wahr String DiedataFormatDer Parameter wird verwendet, um den Typ und die Reihenfolge der entschlüsselten Daten anzugeben. DatenFormat - Das stimmt. String DiedataDer Parameter wird verwendet, um die zu entschlüsselnden Daten festzulegen. Daten wahr String

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

Umgekehrter Betrieb derexchange.IO("encode", ...)Funktion:

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

Das folgende Beispiel führt zunächst eineencodePackedBetrieb auf derpathParameterverarbeitung, weil dieexactOutputMethodenanruf, der später codiert werden muss, erfordertpathals Parameter. DannencodeDieexactOutputMethode des Routingvertrags, die nur einen Parameter des Typs enthälttuple. Die MethodenbezeichnungexactOutputwird als0x09b81346, und mit Hilfe derexchange.IO("decode", ...)Methode zur Entschlüsselung der resultierendendecodeRaw, entsprechend der VariablendataTuple.

Für die Datenverarbeitung werden dieexchange.IO()Funktion unterstützt nicht nur die Kodierung, sondern auch die Entschlüsselung.

- Ich bin nicht bereit, das zu tun. Auswechselung.IO (("Schlüssel",...)