Introduction facile au développement web3 basé sur Ethereum avec FMZ

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2023-03-28 13:32:48, Mis à jour: 2024-11-11 22:28:24

rams,name:params,type:tuple],name:exactInput,outputs:[{internalType:uint256,name:amountOut,type:uint256}],stateMutability:payable,type:function},{inputs:[{components:[{internalType:params,type:tuple],name:tokenInput,type:address,outputs:{internalType:addaddress,name:tokenOutput,amountOutput,type:address,type256],stateMutability:payable,state,state,state,state,state,state,state,state, var abiPool = [\\inputs\:[],\stateMutability\:\\nonpayable\,\type\:\constructor\,\name\:\anonyme\:\false,\inputs\:[\\\indexed\:true,\internalType\:\address\,\owner\,\typeType\:\address\,\type:\true,\internalType:\additive24\,\name\:\tickLower\,\index:\:\ false,\inputs\:\:\\true\,\internalType\:\address\,\internalType:\type:\\type:\\\\type:\\\\25\,\\\\\internalType var abiFactory = [\\inputs\:[],\stateMutability\:\\nonpayable\,\type\:\\\addaddresseur\,\name\,\anonyme\:\false,\inputs\:[\\\\indéxacte\:true,\\internalType\:\uint24\,\\\\name\:\\\\\\\feature\,\type\:\\\\\\\"type\,\type\\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\type\,\

Le contrat V3FactoryAdresse = 0x1F98431c8aD98523631AE4a59f267346ea31F984 le contrat V3SwapRouterV2Address = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45

fonction toAmount ((s, décimales) { Retourner le nombre (s) de bits (s) / (s) de bits (s) à String Je ne sais pas.

fonction main (() { // ABI pour enregistrer le contrat d'usine Uniswap Il s'agit d'une plateforme de communication basée sur le Web.

// 注册Uniswap路由合约的ABI
exchange.IO("abi", contractV3SwapRouterV2Address, abiRoute)

// 获取交易对的池地址
var tokenIn = {name : "1INCH", address: "0x111111111117dC0aa78b770fA6A738034120C302", decimals: exchange.IO("api", "0x111111111117dC0aa78b770fA6A738034120C302", "decimals")}
var tokenOut = {name : "WETH", address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", decimals: exchange.IO("api", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "decimals")}
var poolAddress = exchange.IO("api", contractV3FactoryAddress, "getPool", tokenIn.address, tokenOut.address, 10000)

// 注册池合约ABI
exchange.IO("abi", poolAddress, abiPool)

// 获取当前配置的钱包地址
var walletAddress = exchange.IO("address")

// 1INCH -> ETH, tokenIn: 1INCH
var allowanceAmount = exchange.IO("api", tokenIn.address, "allowance", walletAddress, contractV3SwapRouterV2Address)
Log("allowanceAmount:", allowanceAmount, ", 使用toAmount()函数转换为可读数值:", toAmount(allowanceAmount, tokenIn.decimals))

}


对于代码中的```toAmount()```函数我们应该比较熟悉,前几章课程中我们多次使用了这个自定义函数代码,用于把数据处理为方便人类阅读的数值。

```javascript
function toAmount(s, decimals) {
    return Number((BigDecimal(BigInt(s)) / BigDecimal(Math.pow(10, decimals))).toString())
}

Si vous exécutez le code et que vous trouvez que le nombre d'autorisations actuel est 0, il faut autoriser suffisamment de licences pour que le contrat de routage fonctionne.

使用FMZ轻松入门基于以太坊的web3开发

AutorisationUniswap V3Le contrat de route

Si vous utilisezallowanceSi vous avez trouvé un nombre insuffisant d'autorisations, vous devrez les utiliser.approveAutorisationUniswap V3Le contrat de routage lui permet d'exploiter une certaine quantitéERC20Je vous en prie, faites-moi confiance.

Ou alors1INCH -> ETHL'exemple de l'échangeERC20Je ne sais pasapproveComment faire?UniswapLe contrat de routage autorise l'opération dans le portefeuille actuellement configuré1INCHJe vous en prie, faites-moi confiance.

` JavaScript var abiPool = [\\inputs\:[],\stateMutability\:\\nonpayable\,\type\:\constructor\,\name\:\anonyme\:\false,\inputs\:[\\\indexed\:true,\internalType\:\address\,\owner\,\typeType\:\address\,\type:\true,\internalType:\additive24\,\name\:\tickLower\,\index:\:\ false,\inputs\:\:\\true\,\internalType\:\address\,\internalType:\type:\\type:\\\\type:\\\\25\,\\\\\internalType


En savoir plus