Leexchange.IO("api", ...)
la fonction est appelée d'une manière qui est utilisée pour appeler les méthodes du contrat intelligent.
Leexchange.IO("api", ...)
la fonction renvoie la valeur de retour de la méthode appelée contrat intelligent.
chaîne, nombre, bool, objet, tableau, nul et tous les autres types pris en charge par le système
exchange.IO(k, adresse, méthode)exchange.IO(k, adresse, méthode,... arguments)exchange.IO(k, adresse, méthode, valeur,... args)
Lek
Le paramètre est utilisé pour définir la fonction deexchange.IO()
fonction, réglée sur"api"
indique que la fonction est utilisée pour étendre la demande d'appel.
K
vrai
chaîne
Leaddress
Le paramètre est utilisé pour spécifier l'adresse du contrat intelligent.
l'adresse
vrai
chaîne
Lemethod
Le paramètre est utilisé pour spécifier la méthode du contrat intelligent à appeler.
méthode
vrai
chaîne
Levalue
Le paramètre est utilisé pour définir la quantité d'ETH à envoyer.stateMutability
l'attribut de la méthode de contrat intelligent à exécuter estpayable
, puis levalue
Le paramètre doit être passé."stateMutability": "payable"
L'attribut peut être consulté depuis l'ABI.exchange.IO()
La fonction déterminera le paramètre requis sur la base de lastateMutability
L'attribut dans l'ABI qui a été enregistré.stateMutability
l'attribut estnonpayable
, puis levalue
le paramètre n'a pas besoin d'être passé.
valeur
faux
Numéro, chaîne
Learg
paramètre est utilisé pour spécifier les paramètres de la méthode du contrat intelligent à appeler.arg
paramètre, ainsi que le type et learg
Les paramètres dépendent de la méthode du contrat intelligent à appeler.
arg
faux
chaîne, nombre, bool, et tous les autres types pris en charge par le système
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
}
Ledecimals
la méthode est uneconstant
La méthode ERC20 qui ne nécessite pas de consommation de gaz et qui peut interroger les données de précision d'un jeton.decimals
La méthode n'a pas de paramètres. Valeur de retour: les données de précision du jeton.
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"))
}
Leallowance
la méthode est uneconstant
La méthode ERC20 qui ne génère pas de consommation de gaz et peut interroger le montant autorisé d'un jeton pour une certaine adresse de contrat.allowance
La méthode prend 2 paramètres, le premier est l'adresse du portefeuille et le second est l'adresse autorisée.
owner
: l'adresse du portefeuille, l'exemple est remplacé par la chaîne spender
: l'adresse du contrat autorisé, l'exemple est remplacé par la chaîne 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 || {})
}
Lemulticall
La méthode est un non-constant
méthode deUniswap V3
qui génère une consommation de gaz et est utilisée pour échanger des jetons de plusieurs façons.
Lemulticall
méthode peut avoir différentes façons de passer des paramètres, vous pouvez vérifier l'ABI qui contient la méthode spécifiquement, vous devez enregistrer l'ABI avant d'appeler la méthode.
Pour des exemples spécifiques demulticall
Vous pouvez consulter les plateformes accessibles au public
Certains détails sont décrits ici en utilisant un pseudo-code:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: adresse du routeur v2 de Uniswap V3.value
: le montant d'ETH à transférer, défini à 0 si le jeton de l'opération d'échange n'est pas ETH.deadline
: deadline
est le paramètre dumulticall
méthode, qui peut être réglée sur (new Date().getTime() / 1000) + 3600, ce qui indique qu'elle est valable pendant une heure.data
: data
est le paramètre dumulticall
méthode, les données de l'opération d'emballage à effectuer.
Semblableexchange.IO("api", "eth", "send", "toAddress", toAmount)
, legasLimit/gasPrice/nonce
La définition de l'appel de méthode peut être spécifiée lors de l'appel de lamulticall
méthode.
Encore une fois, nous utilisons un pseudo-code pour décrire:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
Le paramètre{gasPrice: 11, gasLimit: 111, nonce: 111}
Les paramètres d'interface peuvent être réglés en fonction des besoins spécifiques, qui sont réglés sur le dernier paramètre duexchange.IO()
fonction.
Vous pouvez omettrenonce
et utiliser la valeur par défaut du système, ou laissergasLimit/gasPrice/nonce
désactiver et utiliser la valeur par défaut du système pour tous.