Introdução fácil ao desenvolvimento web3 baseado no Ethereum com o FMZ

Autora:Inventor quantificado - sonho pequeno, Criado: 2023-03-28 13:32:48, Atualizado: 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:type256],stateMutability:payable,type256,type256,type256,type256,type256,type var abiPool = [\\inputs\:[],\stateMutability:\nonpayable\,\type\:\constructor\,\name\:\anonymous\:\false,\inputs\:[\\indexed\:true,\internalType\:\address\:\:\owner\,\typeType:\address\:\address\,\indexed\:\type:\type:\addresso,\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\ var abiFactory = [\\inputs\:[],\stateMutability\:\\nonpayable\,\\type\:\\constructor\,\anonymous\:\false,\inputs\:[\\indexed\:true,\internalType\:\uint24\,\name\:\fee\,\type\:\uint24\,\indexed\:\type:\internalType:\addaddaddadded\:\uint24\,\tokname\:\tickSaddaddaddaddaddaddaddadding\,\type:\indexed\,\type:\

Var contractV3FactoryAddress = 0x1F98431c8aD98523631AE4a59f267346ea31F984 VAR contractV3SwapRouterV2Address = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45

Função toAmount (s, decimais) { Retornar Número (s) (BigDecimal (BigInt)) / BigDecimal (Math.pow (pow), decimais))).toString ()) - Não.

função main (() { // ABI registrado no contrato da fábrica da Uniswap exchange.IO ((abi, contractV3FactoryAddress, abiFactory) é um aplicativo de computador criado pela Microsoft.

// 注册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())
}

O código é executado e o número de autorizações é zero, então para fazer a troca, é necessário autorizar uma quantidade suficiente para que o contrato de roteamento funcione.

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

AutorizaçãoUniswap V3Contrato de roteamento

Se estiver a ser usadoallowanceSe a pesquisa descobrir que o número de licenças é insuficiente, é necessário usar a ferramenta.approveAutorizaçãoUniswap V3O contrato de roteamento, que permite a operação de uma certa quantidadeERC20O que é que você está a fazer?

Ou1INCH -> ETHPor exemplo, a trocaERC20Não.approveMétodo paraUniswapO contrato de roteamento autoriza a operação da carteira atualmente configurada1INCHO que é que você está a fazer?

`javascript var abiRoute = [{inputs:[{internalType:address,name:_WETHBYT9,type:address},{internalType:address,name:factoryV3,type:address},{internalType:address,name:factoryV3,type:address},{internalType:address,name:factoryV3,type:address},{internalType:address,name:positionManager,type:address},{internalType:address:address:address:address:address:address:address:address:address:address:address:address var abiPool = [\\inputs\:[],\stateMutability:\nonpayable\,\type\:\constructor\,\name\:\anonymous\:\false,\inputs\:[\\indexed\:true,\internalType\:\address\:\:\owner\,\typeType:\address\:\address\,\indexed\:\type:\type:\addresso,\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\type:\


Mais informações