Por favor, enseñe a FMZ cómo obtener el número de monedas de uniswap V3 en un personal de liquidez.

El autor:La vida de bailarín86, Creado: 2023-07-13 13:48:35, Actualizado:

Por ejemplo:https://app.uniswap.org/#/pools/536461La cantidad de GRT / ETH que contiene


Más.

Un sueño pequeño.En este sentido, el proyecto de la Fundación para el Desarrollo de la Información (FIDH) es un proyecto de investigación y desarrollo que tiene como objetivo desarrollar un enfoque específico de la contratación, que incluye la creación de un artículo sobre el tema y su inclusión en la biblioteca.

Un sueño pequeño.¿Puedes probar esto: https://www.fmz.com/digest-topic/10146

Un sueño pequeño.El código que aparece es sólo un ejemplo, el contenido específico debe ser analizado.

La vida de bailarín86No hay ninguna cantidad de GRT y ETH correspondiente que yo quiera en el resultado.

La vida de bailarín86ABI_UniswapV3Router es el mismo que yo busco https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code en este, ABI_NonfungiblePositionManager no es el mismo, por favor, ¿dónde lo buscan?

Un sueño pequeño.Debería ser que ABI no está bien, o que el método de llamada está mal escrito, con el código que he enviado arriba, lo he probado. ¿Por qué no lo haces? ABI: Uniswap: "V3Router:" = const `[{"inputs"::"{"internalType":"address:":":"name:"_factoryV2",:"Type:":":":"Type:":":":"Mutability:":":"Type:":":":":":"Nonpayable:":"Type:":"Type:":":"Type:":":"Type:":":"Type:":":":"Dibyte:":":"constructor:":":":"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:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:"Type:" ABI_NonfungiblePositionManager = `[{"inputs":[{"internalType":"address","name":"_factory","type:":"address"},{"internalType:":":"address","name""WETH9","type:"address"},{"internal","type","address","name":"_tokenDescriptor_","type:":":"address"}],"stateMutability:":"nonpayable","type:":":"constructor"},{"anonymous:":":"type:":":"false",:":":"inputs:":":"type:":":":":":":":":"type:":":":":":":":":":"type:":":":":":":":"type:":":":":":":"type:":":":":":":"type:":":":":":"type:":":":":":":"type:":":":":":":"type:":":":":":"WETH9","type:":":":"type:":":":":":":":"type:":":":":":":"",type:":":" const UniswapV3 RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" La función principal es // dirección de la billetera que se busca // const walletAddress = exchange.IO (("dirección") const walletAddress = "0x28df8b987BE232bA33FdFB8Fc5058C1592A3db26" El nombre de la cartera es const // Obtener la dirección del contrato de posiciónManager de Uniswap V3 En la actualidad, el nombre de la red de intercambio es un nombre de código abi. exchange.IO (("abi", UniswapV3RouterAddress, ABI_UniswapV3Router)) const No fungiblePositionManagerAddress = exchange.IO (("api", UniswapV3RouterAddress, "positionManager") y el nombre de la aplicación es un nombre de usuario. Log ((("NonfungiblePositionManagerAddress:", "NonfungiblePositionManagerAddress") es el nombre de una aplicación de gestión de posiciones que se encuentra en el sitio web de Google. // ABI del contrato de registro de posiciónManager En la actualidad, el sitio web de exchange.IO tiene una red abi, llamada ABI_NonfungiblePositionManager. // Busca el número de posiciones NFT de Uniswap V3 en la cuenta actual var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) Var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) es una dirección de correo electrónico que se encuentra en las páginas web de las empresas de comercio electrónico. Log (("nftBalance:", nftBalance) es el nombre de una página web de Google. ¿Qué es esto? // Busca el TokenId de estas NFT Var nftTokenIds = [] El nombre de la fuente de información es para (var i = 0 ; i < nftBalance; i++) { var nftTokenId = exchange.IO (("api", NonfungiblePositionManagerAddress, "tokenOfOwnerByIndex", walletAddress, i) el nombre de la página donde se encuentra el token y el número de usuario. El nombre de la aplicación es nftTokenId. Log (("nftTokenId:", nftTokenId) es el nombre de una de las fichas de identificación de un token. ¿Qué es eso? // Busca detalles de posiciones de liquidez según el tokenId de las posiciones NFT Las posiciones var = [] para (var i = 0; i < nftTokenIds.length; i++) { var pos = exchange.IO (("api", NonfungiblePositionManagerAddress, "positions", nftTokenIds[i]) El nombre de la página web es varpos.IO y el nombre de la página web es varpos. Log (("pos:", pos) // Para analizar los datos de posición Las posiciones.push ((parsePosData ((pos)) ¿Qué es eso? ¿Qué es esto? El valor de la variedad es tbl = { tipo: "table", Title: "LP", el álbum más reciente de la banda. Cols: ["pair", "fee", "lower", "upper", "liquidity"], donde el nombre de la entidad se encuentra. filas: posiciones ¿Qué es eso? LogStatus (("`" + JSON.stringify ((tbl) + "`") ¿Qué es eso? El valor de las fichas var es {} La función init (() { Var res = JSON.parse ((HttpQuery (("https://tokens.coingecko.com/uniswap/all.json"))) Log (("fetch", res.tokens.length, "tokens from", res.name) _.each ((res.tokens, function ((token) {) el valor de la función es el valor de la función Si el valor es igual al valor de la moneda, entonces el valor es igual al valor de la moneda. nombre: token.symbol, Los decimales: token. decimales, Dirección: token.address ¿Qué es eso? ¿Qué es eso? Log (("tokens:", tokens) es el nombre de una de las páginas web de Facebook. ¿Qué es eso? Función parse PosData ((posData) {) ¿Qué es eso? ¿Qué es eso? "Noce": "0", 'operator': "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "token1": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "Fee": "3000", y luego el número de teléfono. "feeGrowthInside0LastX128": "552824104363438506727784685971981736468", y luego "GrowthInside0LastX128": "552824104363438506727784685971981736468", y luego "GrowthInside0LastX128" "feeGrowthInside1LastX128": "2419576808699564757520565912733367379", y luego "GrowthInside1LastX128": "2419576808699564757520565912733367379", y luego "GrowthInside1LastX128": "241957680869956475752056591273336367379", y luego "GrowthInside1LastX128": "tokensOwed0": "0", "tokensOwed1": "0", "token0": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", "TickLower": "-62160", y el número de teléfono en el que se encuentra el usuario. "TickUpper": "-41280", y el número de teléfono en el que se encuentra el usuario. "liquididad": "19090316141441365693" ¿Qué es eso? ¿Qué es eso? ¿Qué es esto? Var token0 Símbolo = cero var token1 Símbolo = cero para (simbolo de var en tokens) { si (tokens [symbol].address == posData.token0) { token0Symbol = tokens[symbol] El símbolo de token0 es el símbolo de token0 } else if (tokens[symbol].address == posData.token1) { Si el número de datos es igual al número de datos, entonces el número de datos es igual al número de datos token1Symbol = tokens[symbol] El símbolo de token1 es el símbolo de token ¿Qué es eso? ¿Qué es eso? return [token0Symbol.name + "_" + token1Symbol.name, posData.fee / 10000 + "%", posData.tickLower, posData.tickUpper, posData.liquidity] El resultado de la búsqueda de un número de datos en el que se encuentran los datos de los clientes es el siguiente: ¿Qué es eso? ¿Por qué no lo haces? Este es el sitio web de Ethereum.

La vida de bailarín86Error /upload/asset/14e3b9c329f0e6d2b7e09.jpg Dos métodos no están registrados, ¿es ABI el que está buscando? https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code Buscado aquí

Un sueño pequeño.En la imagen que envió, hay un botón de copia de ABI en la esquina superior derecha. Copiar directamente se inicia. El uniswap en otras cadenas debe ser el mismo.

La vida de bailarín86/upload/asset/14e185e563e61cd155424.jpg Por favor, pregunte ABI_UniswapV3Router ¿ABI_NonfungiblePositionManager es el contenido de la imagen que se copia? ¿Puede ser lo mismo, llenar el ABI completo, el resumen y no saber qué resumen hacer? Entonces, si cambiamos una cadena como la cadena Arbitrum, ¿hay que cambiar otros parámetros además de la dirección de RPC agregada? Por ejemplo: https://app.uniswap.org/#/pools/711084 cantidad de USDT / ARB dentro

Un sueño pequeño.Si es necesario acceder a la piscina de intercambio, tenga su propio depósito, con el siguiente código: ¿Por qué no lo haces? const ABI_UniswapV3Router = ` demasiado largo omitido para rellenar el ABI específico ` const ABI_NonfungiblePositionManager = ` es demasiado largo para rellenar el ABI específico ` const UniswapV3 RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" La función principal es // const walletAddress = exchange.IO (("dirección") const walletAddress = "o especifique la dirección del monedero" // obtenga la dirección de posiciónManager En la actualidad, el nombre de la red de intercambio es un nombre de código abi. exchange.IO (("abi", UniswapV3RouterAddress, ABI_UniswapV3Router)) const No fungiblePositionManagerAddress = exchange.IO (("api", UniswapV3RouterAddress, "positionManager") y el nombre de la aplicación es un nombre de usuario. Log ((("NonfungiblePositionManagerAddress:", "NonfungiblePositionManagerAddress") es el nombre de una aplicación de gestión de posiciones que se encuentra en el sitio web de Google. En la actualidad, el sitio web de exchange.IO tiene una red abi, llamada ABI_NonfungiblePositionManager. var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) Var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) es una dirección de correo electrónico que se encuentra en las páginas web de las empresas de comercio electrónico. Log (("nftBalance:", nftBalance) es el nombre de una página web de Google. ¿Qué es esto? Var nftTokenIds = [] El nombre de la fuente de información es para (var i = 0 ; i < nftBalance; i++) { var nftTokenId = exchange.IO (("api", NonfungiblePositionManagerAddress, "tokenOfOwnerByIndex", walletAddress, i) el nombre de la página donde se encuentra el token y el número de usuario. El nombre de la aplicación es nftTokenId. Log (("nftTokenId:", nftTokenId) es el nombre de una de las fichas de identificación de un token. ¿Qué es eso? Las posiciones var = [] para (var i = 0; i < nftTokenIds.length; i++) { var pos = exchange.IO (("api", NonfungiblePositionManagerAddress, "positions", nftTokenIds[i]) El nombre de la página web es varpos.IO y el nombre de la página web es varpos. Las posiciones.push ((pos) Log (("pos:", pos) // pos es la información de cada almacén de liquidez que se puede analizar específicamente. ¿Qué es eso? ¿Qué es eso? ¿Por qué no lo haces? El artículo será actualizado más adelante en la biblioteca.

Un sueño pequeño.Sí, aquí hay que escribir ejemplos concretos de despachos, puedes seguir este post.

La vida de bailarín86No, gracias.