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

exchange.IO("api",...)

Elexchange.IO("api", ...)La función se llama de una manera que se utiliza para llamar a los métodos del contrato inteligente.

Elexchange.IO("api", ...)La función devuelve el valor de retorno del método llamado contrato inteligente. cadena, número, bool, objeto, matriz, nulo y todos los demás tipos compatibles con el sistema

exchange.IO(k, dirección, método)exchange.IO(k, dirección, método,...args)exchange.IO(k, dirección, método, valor,... args)

ElkParámetro se utiliza para establecer la función de laexchange.IO()función, fijada en"api"indica que la función se utiliza para extender la solicitud de llamada. el verdadero la cuerda EladdressParámetro utilizado para especificar la dirección del contrato inteligente. Dirección verdadero la cuerda ElmethodEl parámetro se utiliza para especificar el método del contrato inteligente que se va a llamar. Método verdadero la cuerda ElvalueEl parámetro se utiliza para establecer la cantidad de ETH a enviar.stateMutabilityel atributo del método de contrato inteligente a ejecutar espayable, luego elvalueEl parámetro debe ser pasado."stateMutability": "payable"Los atributos pueden ser vistos desde el ABI.exchange.IO()La función determinará el parámetro requerido basado en elstateMutabilitySi el atributo en el ABI que se ha registrado.stateMutabilityel atributo esnonpayable, luego elvalueNo es necesario pasar el parámetro. Valor falsos número, cadena ElargParámetro se utiliza para especificar los parámetros del método del contrato inteligente a ser llamado.argParámetro, y el tipo y el número deargLos parámetros dependen del método del contrato inteligente que se va a llamar. el falsos cadena, número, bool y todos los otros tipos compatibles con el sistema

function main(){
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, the token is 1INCH in the example
    Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
}

Eldecimalsel método es unconstantEl método de ERC20 que no incurre en el consumo de gas y puede consultar los datos de precisión de un token.decimalsEl método no tiene parámetros. Valor de retorno: datos de precisión del token.

function main(){
    // The contract address of the token, in the example the token is 1INCH
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                          

    // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
    Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))   
}

Elallowanceel método es unconstantEl método de ERC20 que no genera consumo de gas y puede consultar la cantidad autorizada de un token para una determinada dirección de contrato.allowanceEl método toma 2 parámetros, el primero es la dirección de la billetera y el segundo es la dirección autorizada.
owner: la dirección de la billetera, el ejemplo se sustituye por la cadena owner, el uso real necesita rellenar la dirección específica.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.

function main(){
    // The contract address of the token, the token is 1INCH in the example
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                 

    // 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", "0xde0b6b3a7640000"))  
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.  
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
    var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var tokenInName = "ETH"
    var amountIn = 0.01
    var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100}   // This is an example, depending on the actual scene settings
    var data = ""                                                       // The encoded data, here is the empty string, depending on the actual scene settings
    var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}

ElmulticallEl método es un no-constantmétodo deUniswap V3que genera consumo de gas y se utiliza para canjear fichas de múltiples maneras. ElmulticallEl método puede tener varias formas de pasar parámetros, puede comprobar el ABI que contiene el método específicamente, debe registrar el ABI antes de llamar al método.

Para ejemplos concretos demulticallEn el caso de las llamadas de método, puede consultar las plataformas accesibles al público.Uniswap V3 Trade Plantilla

Algunos detalles se describen aquí usando pseudo-código:


exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)

ContractV3SwapRouterV2: dirección del router v2 de Uniswap V3.value: la cantidad de ETH a transferir, fijada en 0 si el token de la operación de intercambio no es ETH.deadline: deadlinees el parámetro delmulticallmétodo, que puede establecerse en (new Date().getTime() / 1000) + 3600, lo que indica que es válido durante una hora.data: dataes el parámetro delmulticallel método, los datos de la operación de embalaje que debe realizarse.

Similar aexchange.IO("api", "eth", "send", "toAddress", toAmount), elgasLimit/gasPrice/noncela configuración de la llamada de método puede especificarse al llamar elmulticallel método. Una vez más, usamos pseudo-código para describir:


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

El parámetro{gasPrice: 11, gasLimit: 111, nonce: 111}El valor de la función de control puede ajustarse de acuerdo con las necesidades específicas, que se ajusta al último parámetro de laexchange.IO()la función. Puede omitir elnoncey utilizar el valor predeterminado del sistema, o dejargasLimit/gasPrice/noncedesactivar y utilizar el valor predeterminado del sistema para todos.

En el caso de las empresas de servicios de telecomunicaciones, la información que se transmite a través de los sistemas de información de las empresas de telecomunicaciones es la siguiente: En el caso de las empresas de servicios de telecomunicaciones: