В процессе загрузки ресурсов... загрузка...

exchange.IO("апи",...)

Вexchange.IO("api", ...)функция вызвана таким образом, который используется для вызова методов умного контракта.

Вexchange.IO("api", ...)функция возвращает возвращаемое значение метода, называемого умным контрактом. string, number, bool, object, array, null и все другие типы, поддерживаемые системой

exchange.IO(k, адрес, метод)exchange.IO(k, адрес, метод,...arg)exchange.IO(k, адрес, метод, значение,...args)

ВkПараметр используется для установки функцииexchange.IO()функция, установленная на"api"указывает, что функция используется для расширения запроса вызова. k неправда строка Вaddressпараметр используется для указания адреса смарт-контракта. Адрес неправда строка Вmethodпараметр используется для указания метода, который должен быть вызван для смарт-контракта. метод Истинно строка ВvalueПараметр используется для установки количества ETH, которое будет отправлено.stateMutabilityатрибут метода смарт-контракта, который должен быть выполнен:payable, затемvalueПараметр должен быть передан."stateMutability": "payable"Атрибут может быть просмотрен из ABI.exchange.IO()Функция будет определять требуемый параметр на основеstateMutabilityатрибут в ABI, который был зарегистрирован.stateMutabilityатрибут - этоnonpayable, затемvalueПараметр не нужно передавать. стоимость ложное число, строка Вargпараметр используется для указания параметров метода смарт-контракта, который должен быть вызван.argпараметр, а также тип и количествоargпараметры зависит от метода умного контракта, который будет вызван. арг ложное строка, число, bool и все другие типы, поддерживаемые системой

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
}

ВdecimalsМетод являетсяconstantЭто позволяет использовать ERC20 без потребления газа и запросить точные данные токенов.decimalsВозвращаемое значение: данные точности токена.

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"))   
}

ВallowanceМетод являетсяconstantВ этом случае, если вы используете ERC20, вы не будете потреблять газ и сможете запросить разрешенный объем токена для определенного контрактного адреса.allowanceМетод принимает 2 параметра, первый - адрес кошелька, а второй - авторизованный адрес.
owner: адрес кошелька, пример заменен строкой owner, фактическое использование необходимо заполнить конкретный адрес.spender: адрес уполномоченного контракта, пример заменяется строкой spender, фактическое использование необходимо заполнить конкретный адрес, например, это может бытьUniswap 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 || {})
}

ВmulticallМетод не является...constantМетодUniswap V3который генерирует потребление газа и используется для выкупа токенов несколькими способами. ВmulticallМетод может иметь различные способы передачи параметров, вы можете проверить ABI, который содержит метод конкретно, вам нужно зарегистрировать ABI перед вызовом метода.

Для конкретных примеровmulticallВы можете обратиться к публично доступным платформам.Uniswap V3 Trade Шаблон

Некоторые детали описаны здесь с использованием псевдокода:


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

ContractV3SwapRouterV2: адрес маршрутизатора v2 Uniswap V3.value: сумма ETH для перевода, установленная на 0, если токен-токен обменной операции не является ETH.deadline: deadlineявляется параметромmulticallМетод, который может быть установлен на (new Date().getTime() / 1000) + 3600, что указывает на его действие в течение одного часа.data: dataявляется параметромmulticallметод, данные о проведении операции упаковки.

Похожиеexchange.IO("api", "eth", "send", "toAddress", toAmount),gasLimit/gasPrice/nonceУстановка вызова метода может быть указана при вызовеmulticallметодом. Опять же, мы используем псевдокод для описания:


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

Параметр{gasPrice: 11, gasLimit: 111, nonce: 111}может устанавливаться в соответствии с конкретными потребностями, который устанавливается на последний параметрexchange.IO()Функция. Вы можете пропуститьnonceи использовать систему по умолчанию, или оставитьgasLimit/gasPrice/nonceотключить и использовать систему по умолчанию для всех.

обмен.IO (("ключ",...) обмен.IO (("адрес")