O recurso está a ser carregado... Carregamento...

Método de chamada do contrato inteligente

O seguinte conteúdo é um exemplo de algumas chamadas de métodos de contrato inteligente.

  • números decimais OdecimalsO método éconstantmétodo deERC20que não geramgasA utilização de dados de precisão de um computadortoken- Não. OdecimalsValor de retorno: os dados de precisão 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
    }
    
  • subsídio OallowanceO método éconstantmétodo deERC20que não geramgasA Comissão considera que a Comissão não pode, por conseguinte,tokenpara um determinado endereço contratual. OallowanceRetorno de valor: o valor de autorização de uma carteira é o valor de uma carteira.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: O endereço da carteira é substituído pela cadeia owner no exemplo.spenderNo exemplo, o endereço do contrato autorizado é substituído pela cadeia spender.Uniswap V3 router v1.

  • Aprovar OapproveO método é um não-constantmétodo deERC20que geragasConsumo, que é utilizado para autorizar umatokenO montante da operação para um determinado endereço contratual. OapproveO método precisa passar em 2 parâmetros, o primeiro é o endereço a ser autorizado e o segundo é o montante autorizado.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: O endereço do contrato autorizado, o exemplo é substituído pela cadeia spender, o uso real precisa preencher o endereço específico, por exemplo, pode serUniswap V3 router v1 address. amount: O número de autorizações, representado aqui por uma cadeia hexadecimal, corresponde a um valor decimal de1e18, dividido pelotokenunidade de precisão no exemplo (ou seja, 1e18), dando 1token authorized.

    O terceiro parâmetro doexchange.IOfunção é passada o nome do métodoapprove, que também pode ser escrito na forma demethodId, por exemplo: 0x571ac8b0. Também é possível escrever o nome completo do método padrão, como approve(address,uint256) .

  • Multicall Omulticallmétodo é um método não constante deUniswap V3, que irá gerargasConsumo e ser usado para trocar tokens de várias maneiras. OmulticallO método pode ter vários métodos de passagem de parâmetros. Você pode consultar o ABI contendo o método para obter detalhes. Você precisa registrar o ABI antes de chamar o método. Retorno de valor:txid.

    Para exemplos específicos demulticallAplicação do método de chamadas. Uniswap V3 Trading Class Library modeloda nossa 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: O ABI do contrato V2 do roteador Uniswap V3, precisa ser preenchido de acordo com a situação real.contractV3SwapRouterV2: endereço do roteador v2 do Uniswap V3, o uso real requer um endereço específico para ser preenchido...value: O montante de ETH transferido, definido em 0 se otokenIntoken para a operação de troca não é ETH, ele precisa ser preenchido de acordo com a situação real.deadline: Pode ser definido como(new Date().getTime() / 1000) + 3600, o que significa que é válido por uma hora.data: Os dados da operação de embalagem a realizar, devem ser preenchidos de acordo com a situação real.

    É também possível especificar ogasLimit/gasPrice/nonceConfiguração das chamadas de métodos:

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

    Você pode definir parâmetro{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}De acordo com as suas necessidades específicas, o parâmetro é definido para o último parâmetro doexchange.IOfunção. Pode omitir ononcee usar os padrões do sistema, ou não definirgasLimit/gasPrice/noncee usar todos os valores padrão do sistema.

    Deve notar-se que no exemplo, o atributo destateMutabilityemmulticall(uint256,bytes[])método épayable, e ovalueParâmetro precisa ser passado. O atributo destateMutability":"payable"A partir daí, oABI. Oexchange.IOA função irá determinar os parâmetros necessários de acordo com ostateMutabilityatributo noABIque foi registado. Se ostateMutabilityatributo énonpayable, o parâmetrovaluenão precisa de ser transmitido.

Suporte para troca de chaves privadas Outras chamadas de função