En la carga de los recursos... Cargando...

Método para llamar al contrato inteligente

El siguiente contenido es un ejemplo de algunas llamadas de métodos de contratos inteligentes.

  • números decimales Eldecimalsel método es unconstantmétodo deERC20que no generagasEn el caso de los datos de precisión de untoken- ¿ Por qué? EldecimalsEl valor de retorno: los datos de precisión detoken.

    function main(){
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, in the example the token is 1INCH
        Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
    }
    
  • el pago de una indemnización Elallowanceel método es unconstantmétodo deERC20que no generagasEn la actualidad, el consumo de energía está en aumento, y puede consultar la cantidad autorizada de un determinadotokenpara una dirección de contrato determinada. ElallowanceEl valor de retorno: el importe de la autorización de la cartera.token.

    function main(){
        // The contract address of the token, in the example the token is 1INCH
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"            
        var owner = ""
        var spender = ""
        
        // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the current exchange object bound to the wallet to the spender address authorized 1 1INCH.
        Log(exchange.IO("api", tokenAddress, "allowance", owner, spender))
    }
    

    owner: La dirección de la billetera se reemplaza por la cadena owner en el ejemplo. En el uso real, debe rellenar la dirección.spender: La dirección autorizada del contrato se sustituye por la cadena spender en el ejemplo.Uniswap V3 router v1.

  • Aprobar el proyecto ElapproveEl método es un no-constantmétodo deERC20que generagasConsumo, que se utiliza para autorizar unatokenel importe de la operación a una determinada dirección del contrato. ElapproveEl método debe pasar en 2 parámetros, el primero es la dirección a autorizar y el segundo es la cantidad autorizada.txid.

    function main(){
        // The contract address of the token, in the example the token is 1INCH
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
        var spender = ""
        var amount = "0xde0b6b3a7640000"
        
        // The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token.
        Log(exchange.IO("api", tokenAddress, "approve", spender, amount))
    }
    

    spender: La dirección del contrato autorizado, el ejemplo se sustituye por la cadena spender, el uso real necesita rellenar la dirección específica, por ejemplo, puede serUniswap V3 router v1 address. amount: El número de autorizaciones, representado aquí mediante una cadena hexadecimal, corresponde a un valor decimal de1e18, dividido por eltokenUnidad de precisión en el ejemplo (es decir, 1e18), que da 1token authorized.

    El tercer parámetro delexchange.IOLa función se pasa el nombre del métodoapprove, que también se puede escribir en forma demethodId, por ejemplo: 0x571ac8b0. También es posible escribir el nombre completo del método estándar, como approve(address,uint256) .

  • de llamadas múltiples ElmulticallEl método es un método no constante deUniswap V3, que generarágasConsumo y ser utilizado para intercambiar fichas de múltiples maneras. ElmulticallEl método puede tener múltiples métodos de transmisión de parámetros. Puede consultar el ABI que contiene el método para obtener detalles. Debe registrar el ABI antes de llamar al método.txid.

    Para ejemplos concretos demulticallLas llamadas de método, por favor, consulte el público Uniswap V3 Biblioteca de clases comerciales plantillade nuestra plataforma.

    function main() {
        var ABI_Route = ""
        var contractV3SwapRouterV2 = ""
        var value = 0
        var deadline = (new Date().getTime() / 1000) + 3600
        var data = ""
        exchange.IO("abi", contractV3SwapRouterV2, ABI_Route)
        exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
    }
    

    ABI_Route: El ABI del contrato de router v2 de Uniswap V3, debe completarse de acuerdo con la situación real.contractV3SwapRouterV2: dirección de router v2 de Uniswap V3, el uso real requiere una dirección específica para ser rellenada...value: La cantidad de ETH transferida, fijarla en 0 si eltokenInEl token para la operación de intercambio no es ETH, debe llenarse de acuerdo con la situación real.deadlineSe puede configurar en:(new Date().getTime() / 1000) + 3600, lo que significa que es válido durante una hora.data: Los datos de la operación de embalaje que se realizará, deben rellenarse de acuerdo con la situación real.

    También es posible especificar lagasLimit/gasPrice/nonceConfiguración de las llamadas de métodos:

    exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
    

    Puede establecer parámetros{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}De acuerdo con sus necesidades específicas, el parámetro se establece en el último parámetro delexchange.IOla función. Puede omitir elnoncey utilizar los valores predeterminados del sistema, o no establecergasLimit/gasPrice/noncey utilizar todos los valores predeterminados del sistema.

    Debe tenerse en cuenta que en el ejemplo, el atributo destateMutabilityEn elmulticall(uint256,bytes[])el método espayable, y elvalueParámetro tiene que ser pasado en. El atributo destateMutability":"payable"se puede ver desde elABIEl.exchange.IOLa función determinará los parámetros requeridos de acuerdostateMutabilityatributo en elABIque ha sido registrado. Si elstateMutabilityel atributo esnonpayable, el parámetrovalueNo es necesario que se entregue.

Soporte para cambiar claves privadas Otras llamadas de funciones