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

Code de support

La fonctionexchange.IOencapsule leencodeméthode, qui peut renvoyer le codage d'appel de fonction àhexle format de chaîne. Vous pouvez consulter les plateformes accessibles au public Uniswap V3 Bibliothèque de classes de négociation modèlepour une utilisation spécifique. L'appel du codageunwrapWETH9la méthode est utilisée ici à titre d'exemple:

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

Lorsque vous appelez leexchange.IO("encode",...)fonction, si le deuxième paramètre (type de chaîne) commence par0x, il s'agit de l'appel à la méthode sur le code (encodeLe contrat intelligent. Si elle ne commence pas par0x, il est utilisé pour coder l'ordre de type spécifié.abi.encodedans lesolidity. Consultez l'exemple suivant.

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

Prise en charge de l'encodage séquentiel de tuples ou de types contenant des 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)
}

Cet ordre de type est composé de:tupleetbytes, donc deux paramètres doivent être passés en appelantexchange.IOàencode:

  • Variables correspondant à une tuple de type:
    {
        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:tuple(a uint256, b uint8, c address).
  • Variables correspondant à des bytes de type:
    "0011"
    

Prise en charge du codage séquentiel de tableaux ou de types contenant des tableaux:

function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}
Méthode d'appel d'Ethereum RPC Prise en charge de encodePacked