Les ressources ont été chargées... Je charge...

exchange.IO("Code",...)

Leexchange.IO("encode", ...)la fonction est appelée pour l'encodage des données.

Leexchange.IO("encode", ...)fonction renvoie les données codées. chaîne

exchange.IO(k, format de données,... args)exchange.IO(k, adresse, format des données)exchange.IO(k, adresse, donnéesFormat,...args)

LekLe paramètre est utilisé pour définir la fonction deexchange.IO()fonction, réglée sur"encode"signifie que la fonction est utilisée pour l'encodage des données. K vrai chaîne LeaddressLe paramètre est utilisé pour définir l'adresse du contrat intelligent.exchange.IO("encode", ...)fonction, en passant dans leaddressParamètre indique le codage de l'appel de méthode sur le contrat intelligent.exchange.IO("encode", ...)fonction, si leaddressparamètre n'est pas passé, la fonction est utilisée pour coder l'ordre de type spécifié et est fonctionnellement équivalente àabi.encodedansSolidity- Je ne sais pas. l'adresse faux chaîne LedataFormatparamètre est utilisé pour spécifier la méthode, le type et l'ordre des données codées. donnéesFormat vrai chaîne Leargparamètre est utilisé pour spécifier la valeur de données spécifique qui correspond à ladataFormatIl peut y avoir plus d'unargparamètre, ainsi que le type et leargLes paramètres dépendent de ladataFormatréglage des paramètres. arg faux chaîne, nombre, tuple, tableau et tous les autres types pris en charge par le système

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

Par exemple, appeler la méthode d'encodageunwrapWETH9:

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

Il est équivalent à l'exemple de codage deabi.encodedansSolidity:

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

Il prend en charge l'encodage d'une tuple ou d'un ordre de type contenant une tuple. Cet ordre de type est composé de:tuple, bytesAlors quand tu appellesexchange.IO()pour le codage, vous devez continuer à passer deux paramètres:

    1. Variables correspondant au type de tuple:
    
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    

    Les paramètres transmis doivent également être conformes à la structure et au type detuple, au sens de la définitiontypesparamètre du formulaire:tuple(a uint256,b uint8,c address).

    1. Variables correspondant au typebytes:
    "0011"
    
function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}

Il prend en charge le codage séquentiel de tableaux ou de types contenant des tableaux:

Leexchange.IO()fonction encapsule leencodeméthode, qui peut renvoyer le code d'appel de fonction àhexPour une utilisation spécifique, vous pouvez vous référer aux plateformes accessibles au publicUniswap V3 Trade ModèleJe suis désolée. Lorsque la méthode de codage fait appel à des contrats intelligents, l'ABI correspondant doit d'abord être enregistré.

Il s'agit d'un échange. Je suis en train de faire un test.