Les ressources ont été chargées... Je charge...

Méthode d'appel du contrat intelligent

Le contenu suivant est un exemple de certains appels de méthode de contrat intelligent.

  • décimales Ledecimalsla méthode est uneconstantméthode deERC20qui ne génère pasgasIl est également capable de consulter les données de précision d'untoken- Je ne sais pas. LedecimalsLa 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 Leallowancela méthode est uneconstantméthode deERC20qui ne génère pasgasIl est possible d'obtenir des informations sur la quantité autorisée d'un certaintokenpour une certaine adresse contractuelle. LeallowanceLa 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 owner dans l'exemple.spender: L'adresse du contrat autorisé est remplacée par la chaîne spender dans l'exemple.Uniswap V3 router v1.

  • approuver LeapproveLa méthode est un non-constantméthode deERC20qui génèregasLa consommation, qui est utilisée pour autoriser untokenLe montant de l'opération correspond à une certaine adresse contractuelle. LeapproveLa 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 spender, l'utilisation réelle doit remplir l'adresse spécifique, par exemple, il peut êtreUniswap 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 letokenunité de précision dans l'exemple (c'est-à-dire 1e18), donnant 1token authorized.

    Le troisième paramètre de laexchange.IOla fonction est passée le nom de la méthodeapprove, qui peut aussi s' écrire sous la formemethodId, par exemple: 0x571ac8b0. Il est également possible d'écrire le nom complet de la méthode standard, par exemple approuver(adresse,uint256) .

  • appels multiples LemulticallLa méthode est une méthode non constante deUniswap V3, qui généreragasIl peut être utilisé pour échanger des jetons de plusieurs façons. LemulticallLa 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 demulticallappels de méthode, veuillez vous référer au public Uniswap V3 Bibliothèque de classes de négociation modèlede notre plateforme.

    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 V3 doit être rempli en fonction de la situation réelle.contractV3SwapRouterV2: 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 letokenInLe 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/nonceré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.IOfonction. Vous pouvez omettrenonceet utiliser les paramètres du système, ou ne pas définirgasLimit/gasPrice/nonceet utiliser toutes les valeurs par défaut du système.

    Il convient de noter que dans l'exemple, l'attribut destateMutabilitydansmulticall(uint256,bytes[])la méthode estpayable, et levalueLe paramètre doit être passé. L'attribut destateMutability":"payable"peut être vue depuis leABILeexchange.IOLa fonction déterminera les paramètres requis en fonction de lastateMutabilityattribut dans leABIqui a été enregistrée. Si lestateMutabilityl'attribut estnonpayable, le paramètrevaluen'a pas besoin d'être transmis.

Prise en charge de la commutation des clés privées Autres appels de fonction