Oexchange.IO("api", ...)
A função é chamada de uma forma que é usada para chamar os métodos do contrato inteligente.
Oexchange.IO("api", ...)
A função retorna o valor de retorno do método chamado contrato inteligente.
string, number, bool, object, array, null e todos os outros tipos suportados pelo sistema
exchange.IO(k, endereço, método)exchange.IO(k, endereço, método,...args)exchange.IO(k, endereço, método, valor,...args)
Ok
Parâmetro utilizado para definir a função doexchange.IO()
função, definida em"api"
indica que a função é utilizada para estender a solicitação de chamada.
k
verdade
cordel
Oaddress
O parâmetro é utilizado para especificar o endereço do contrato inteligente.
Endereço
verdade
cordel
Omethod
O parâmetro é utilizado para especificar o método do contrato inteligente a ser chamado.
Método
verdade
cordel
Ovalue
O parâmetro é usado para definir a quantidade de ETH a ser enviada.stateMutability
Atributo do método de contrato inteligente a executar épayable
, em seguida, ovalue
O parâmetro precisa ser passado."stateMutability": "payable"
O atributo pode ser visualizado a partir do ABI.exchange.IO()
A função determinará o parâmetro requerido com base nostateMutability
O atributo no ABI que foi registrado.stateMutability
atributo énonpayable
, em seguida, ovalue
Parâmetro não precisa ser transmitido.
Valor
Falso
número, string
Oarg
O parâmetro é usado para especificar os parâmetros do método do contrato inteligente a ser chamado.arg
Parâmetro, tipo e número dearg
Os parâmetros dependem do método do contrato inteligente a ser chamado.
arg
Falso
string, number, bool e todos os outros tipos suportados pelo 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
}
Odecimals
O método éconstant
O método ERC20 que não incorre no consumo de gás e que pode consultar os dados de precisão de um token.decimals
O método não possui parâmetros. Valor de retorno: dados de precisão do 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"))
}
Oallowance
O método éconstant
O ERC20 é um método de ERC20 que não gera consumo de gás e pode consultar a quantidade autorizada de um token para um determinado endereço de contrato.allowance
O método leva 2 parâmetros, o primeiro é o endereço da carteira e o segundo é o endereço autorizado.
owner
: o endereço da carteira, o exemplo é substituído pela cadeia spender
: o endereço do contrato autorizado, o exemplo é substituído pela cadeia 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 || {})
}
Omulticall
O método é um não-constant
método deUniswap V3
que gera consumo de gás e é usado para resgatar tokens de várias maneiras.
Omulticall
método pode ter várias maneiras de passar parâmetros, você pode verificar o ABI que contém o método especificamente, você precisa registrar o ABI antes de chamar o método.
Para exemplos específicos demulticall
Os métodos de chamadas podem ser consultados nas plataformas disponíveis publicamente.
Alguns detalhes são descritos aqui usando pseudo-código:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: endereço do roteador v2 do Uniswap V3.value
: o montante de ETH a transferir, definido em 0 se o tokenIn da operação de troca não for o ETH.deadline
: deadline
é o parâmetro domulticall
método, que pode ser definido como (new Date().getTime() / 1000) + 3600, indicando que é válido por uma hora.data
: data
é o parâmetro domulticall
método, os dados da operação de embalagem a realizar.
Semelhante aexchange.IO("api", "eth", "send", "toAddress", toAmount)
, ogasLimit/gasPrice/nonce
configuração do método chamada pode ser especificado ao chamar omulticall
método.
Novamente, usamos pseudo-código para descrever:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
O parâmetro{gasPrice: 11, gasLimit: 111, nonce: 111}
O sistema pode ser definido de acordo com as necessidades específicas, que é definido para o último parâmetro doexchange.IO()
função.
Pode omitir ononce
e usar o valor padrão do sistema, ou deixargasLimit/gasPrice/nonce
Desativar e usar o valor padrão do sistema para todos.