Le contenu suivant est un exemple de certains appels de méthode de contrat intelligent.
décimales
Ledecimals
la méthode est uneconstant
méthode deERC20
qui ne génère pasgas
Il est également capable de consulter les données de précision d'untoken
- Je ne sais pas.
Ledecimals
La valeur de retour: les données de précision 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
}
allocation
Leallowance
la méthode est uneconstant
méthode deERC20
qui ne génère pasgas
Il est possible d'obtenir des informations sur la quantité autorisée d'un certaintoken
pour une certaine adresse contractuelle.
Leallowance
La méthode doit passer en 2 paramètres, le premier est l'adresse du portefeuille, et le second est l'adresse autorisée.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
: L'adresse du portefeuille est remplacée par la chaîne spender
: L'adresse du contrat autorisé est remplacée par la chaîne Uniswap V3 router v1
.
approuver
Leapprove
La méthode est un non-constant
méthode deERC20
qui génèregas
La consommation, qui est utilisée pour autoriser untoken
Le montant de l'opération correspond à une certaine adresse contractuelle.
Leapprove
La méthode doit passer en 2 paramètres, le premier est l'adresse à autoriser et le second est le montant autorisé.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
: l'adresse du contrat autorisé, l'exemple est remplacé par la chaîne Uniswap V3 router v1
address.
amount
: Le nombre d'autorisations, représenté ici par une chaîne hexadécimale, correspond à une valeur décimale de1e18
, divisé par letoken
unité de précision dans l'exemple (c'est-à-dire 1e18), donnant 1token
authorized.
Le troisième paramètre de laexchange.IO
la fonction est passée le nom de la méthodeapprove
, qui peut aussi s' écrire sous la formemethodId
, par exemple:
appels multiples
Lemulticall
La méthode est une méthode non constante deUniswap V3
, qui généreragas
Il peut être utilisé pour échanger des jetons de plusieurs façons.
Lemulticall
La méthode peut avoir plusieurs méthodes de transmission de paramètres. Vous pouvez interroger l'ABI contenant la méthode pour obtenir des détails. Vous devez enregistrer l'ABI avant d'appeler la méthode. Retourner la valeur:txid
.
Pour des exemples spécifiques demulticall
appels de méthode, veuillez vous référer au public
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
: L'ABI du contrat V2 du routeur Uniswap V3contractV3SwapRouterV2
: l'adresse du routeur v2 de Uniswap V3, l'utilisation réelle nécessite une adresse spécifique à remplir...value
: le montant de l'ETH transféré, le régler à 0 si letokenIn
Le jeton pour l'opération d'échange n'est pas ETH, il doit être rempli en fonction de la situation réelle.deadline
: Il peut être réglé sur(new Date().getTime() / 1000) + 3600
, ce qui signifie qu'il est valable une heure.data
: les données relatives à l'opération d'emballage à effectuer; elles doivent être remplies en fonction de la situation réelle.
Il est également possible de spécifier legasLimit/gasPrice/nonce
réglage des appels de méthode:
exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
Vous pouvez définir le paramètre{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}
Selon vos besoins spécifiques, le paramètre est réglé sur le dernier paramètre duexchange.IO
fonction.
Vous pouvez omettrenonce
et utiliser les paramètres du système, ou ne pas définirgasLimit/gasPrice/nonce
et utiliser toutes les valeurs par défaut du système.
Il convient de noter que dans l'exemple, l'attribut destateMutability
dansmulticall(uint256,bytes[])
la méthode estpayable
, et levalue
Le paramètre doit être passé.
L'attribut destateMutability":"payable"
peut être vue depuis leABI
Leexchange.IO
La fonction déterminera les paramètres requis en fonction de lastateMutability
attribut dans leABI
qui a été enregistrée.
Si lestateMutability
l'attribut estnonpayable
, le paramètrevalue
n'a pas besoin d'être transmis.