O seguinte conteúdo é um exemplo de algumas chamadas de métodos de contrato inteligente.
números decimais
Odecimals
O método éconstant
método deERC20
que não geramgas
A utilização de dados de precisão de um computadortoken
- Não.
Odecimals
Valor 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
Oallowance
O método éconstant
método deERC20
que não geramgas
A Comissão considera que a Comissão não pode, por conseguinte,token
para um determinado endereço contratual.
Oallowance
Retorno 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 spender
No exemplo, o endereço do contrato autorizado é substituído pela cadeia Uniswap V3 router v1
.
Aprovar
Oapprove
O método é um não-constant
método deERC20
que geragas
Consumo, que é utilizado para autorizar umatoken
O montante da operação para um determinado endereço contratual.
Oapprove
O 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 Uniswap V3 router v1
address.
amount
: O número de autorizações, representado aqui por uma cadeia hexadecimal, corresponde a um valor decimal de1e18
, dividido pelotoken
unidade de precisão no exemplo (ou seja, 1e18), dando 1token
authorized.
O terceiro parâmetro doexchange.IO
função é passada o nome do métodoapprove
, que também pode ser escrito na forma demethodId
, por exemplo:
Multicall
Omulticall
método é um método não constante deUniswap V3
, que irá gerargas
Consumo e ser usado para trocar tokens de várias maneiras.
Omulticall
O 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 demulticall
Aplicação do método de chamadas.
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 V3contractV3SwapRouterV2
: 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 otokenIn
token 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/nonce
Configuraçã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.IO
função.
Pode omitir ononce
e usar os padrões do sistema, ou não definirgasLimit/gasPrice/nonce
e usar todos os valores padrão do sistema.
Deve notar-se que no exemplo, o atributo destateMutability
emmulticall(uint256,bytes[])
método épayable
, e ovalue
Parâmetro precisa ser passado.
O atributo destateMutability":"payable"
A partir daí, oABI
. Oexchange.IO
A função irá determinar os parâmetros necessários de acordo com ostateMutability
atributo noABI
que foi registado.
Se ostateMutability
atributo énonpayable
, o parâmetrovalue
não precisa de ser transmitido.