El siguiente contenido es un ejemplo de algunas llamadas de métodos de contratos inteligentes.
números decimales
Eldecimals
el método es unconstant
método deERC20
que no generagas
En el caso de los datos de precisión de untoken
- ¿ Por qué?
Eldecimals
El 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
Elallowance
el método es unconstant
método deERC20
que no generagas
En la actualidad, el consumo de energía está en aumento, y puede consultar la cantidad autorizada de un determinadotoken
para una dirección de contrato determinada.
Elallowance
El 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 spender
: La dirección autorizada del contrato se sustituye por la cadena Uniswap V3 router v1
.
Aprobar el proyecto
Elapprove
El método es un no-constant
método deERC20
que generagas
Consumo, que se utiliza para autorizar unatoken
el importe de la operación a una determinada dirección del contrato.
Elapprove
El 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 Uniswap V3 router v1
address.
amount
: El número de autorizaciones, representado aquí mediante una cadena hexadecimal, corresponde a un valor decimal de1e18
, dividido por eltoken
Unidad de precisión en el ejemplo (es decir, 1e18), que da 1token
authorized.
El tercer parámetro delexchange.IO
La función se pasa el nombre del métodoapprove
, que también se puede escribir en forma demethodId
, por ejemplo:
de llamadas múltiples
Elmulticall
El método es un método no constante deUniswap V3
, que generarágas
Consumo y ser utilizado para intercambiar fichas de múltiples maneras.
Elmulticall
El 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 demulticall
Las llamadas de método, por favor, consulte el público
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 V3contractV3SwapRouterV2
: 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 eltokenIn
El token para la operación de intercambio no es ETH, debe llenarse de acuerdo con la situación real.deadline
Se 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/nonce
Configuració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.IO
la función.
Puede omitir elnonce
y utilizar los valores predeterminados del sistema, o no establecergasLimit/gasPrice/nonce
y utilizar todos los valores predeterminados del sistema.
Debe tenerse en cuenta que en el ejemplo, el atributo destateMutability
En elmulticall(uint256,bytes[])
el método espayable
, y elvalue
Parámetro tiene que ser pasado en.
El atributo destateMutability":"payable"
se puede ver desde elABI
El.exchange.IO
La función determinará los parámetros requeridos de acuerdostateMutability
atributo en elABI
que ha sido registrado.
Si elstateMutability
el atributo esnonpayable
, el parámetrovalue
No es necesario que se entregue.