Пожалуйста, расскажите FMZ, как получить количество монет в личном пуле Uniswap V3.

Автор:Танцевальная жизнь86, Создано: 2023-07-13 13:48:35, Обновлено:

Например,https://app.uniswap.org/#/pools/536461Количество GRT/ETH в ней


Больше

Маленькие мечтыВ частности, я планирую написать статью о том, как это сделать, и поместить ее в библиотеку.

Маленькие мечтыВы можете попробовать это: https://www.fmz.com/digest-topic/10146

Маленькие мечтыВсе это можно увидеть на http://etherscan.io/. Код, который был сделан, является лишь примером, и его конкретное содержание должно быть проанализировано.

Танцевальная жизнь86В результате нет никаких данных о том, какое количество соответствующих GRT и ETH мне нужно.

Танцевальная жизнь86ABI_UniswapV3Router похож на то, что я ищу https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code В этом, ABI_NonfungiblePositionManager не похож, пожалуйста, где искать?

Маленькие мечтыЭто должно быть неправильно, или метод вызова неправильно написан, используйте код, который я прислал выше, чтобы проверить, правильно ли это. `` ABI_Uniswap:"V3Router":: "internalType:":"address:":"name:":"_factoryV2",:"Type:":":"Type:":":"Mutability:":":"Type:":":":"Nonpayable:":"Type:":"Type:":":"Type:":":"Type:":":"Type:":":":"Type:":":":"Type:":":"Dialbytes:":":"type:":":":"Address:"",:"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:"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:":":":":":":":"address","type:":":":"WETH9","type:":":":":"type:":":":":":":":":"",type:":":":" const UniswapV3RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" function main (() { // Адрес кошелька для запроса // const walletAddress = exchange.IO (("адрес") const walletAddress = "0x28df8b987BE232bA33FdFB8Fc5058C1592A3db26" // Доступ к адресу договора positionManager для Uniswap V3 exchange.IO (("abi", UniswapV3RouterAddress, ABI_UniswapV3Router) (англ.) const NonfungiblePositionManagerAddress = exchange.IO (("api", UniswapV3RouterAddress, "positionManager") - неразделимый адрес, который может быть использован для обработки данных. Log ((("NonfungiblePositionManagerAddress:", "NonfungiblePositionManagerAddress") - нераскрытое место, где можно получить информацию о нераскрытом месте. // Регистрация ABI в договоре positionManager exchange.IO (("abi", NonfungiblePositionManagerAddress, ABI_NonfungiblePositionManager) (недоступная ссылка) // Узнает количество позиций NFT Uniswap V3 в текущем аккаунте var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) - неразрешимый адрес, который может быть использован для обработки данных. Log (("nftBalance:", nftBalance) Я не знаю. // Запросить TokenId этих NFT var nftTokenIds = [] for (var i = 0 ; i < nftBalance; i++) { var nftTokenId = exchange.IO (("api", NonfungiblePositionManagerAddress, "tokenOfOwnerByIndex", walletAddress, i) nftTokenIds.push ((nftTokenId)) Log (("nftTokenId:", nftTokenId) {y:bi} // запрос деталей о ликвидной позиции на основе токен-ида NFT позиций var positions = [] for (var i = 0; i < nftTokenIds.length; i++) { var pos = exchange.IO (("api", NonfungiblePositionManagerAddress, "positions", nftTokenIds[i]) Log (("pos:", pos) // Рассматривает данные позиций positions.push ((parsePosData ((pos)) {y:bi} Я не знаю. var tbl = { type: "table", title: "LP", Cols: ["pair", "fee", "lower", "upper", "liquidity"], rows: позиции {y:bi} LogStatus (("`" + JSON.stringify ((tbl) + "`") {y:bi} var tokens = {} function 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) { tokens [token.symbol] = { name: token.symbol, Децималы: token.decimals адрес: token.address {y:bi} }) Log (("tokens:", tokens) {y:bi} function parsePosData ((posData) {) По данным /* {c:$a "nonce": "0", "operator": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "token1": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "fee": "3000", "feeGrowthInside0LastX128": "552824104363438506727784685971981736468", "55282410104363438506727784685971981736468", "5528241043634383838506727784685971981736468", "552824104363838383838506727784685971981736468", "552824104363838383850672778468597198173636468" и "55281736468", "552817363668", "552817363668", "5528173636" и "552817363668" - все это было сделано с помощью "feeGrowthInside0LastX128". "feeGrowthInside1LastX128": "2419576808699564757520565912733367379", "2419576808699564757520565912733367379", "241957680869956475752056591273336367379", "241957680869956475752056591273336367379", "241957680869956475752056591273636367379", "24195768086995647575205659" и "24195768086367379", "241957680869956475752056592056591273336367379", "2419567699" и "24195679" - все, что нужно, чтобы получить доступ к данному файлу. "tokensOwed0": "0", "tokensOwed1": "0", "token0": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", "TickLower": "-62160", "-62160", "-62160", "-62160", "-62160", "-62160", "-62160", "-62160", "-62160", "-62160", "-62160", "-62160", "-62160" "Тик-Уппер": "-41280", "Liquidity": "19090316141441365693" {y:bi} */ Я не знаю. var token0 Символ = нуль var token1 Символ = нуль for (var symbol in tokens) { (знак вар в токенах) if (tokens[symbol].address == posData.token0) { token0Symbol = tokens[символ] } else if (tokens[symbol].address == posData.token1) { token1Symbol = tokens[символ] {y:bi} {y:bi} return [token0Symbol.name + "_" + token1Symbol.name, posData.fee / 10000 + "%", posData.tickLower, posData.tickUpper, posData.liquidity] {y:bi} `` Это и есть эфирное движение.

Танцевальная жизнь86Ошибка /upload/asset/14e3b9c329f0e6d2b7e09.jpg 2 способа не зарегистрированы, это ABI искать правильно? https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45 #code искать здесь

Маленькие мечтыНа скриншоте, который вы отправили, есть кнопка копирования ABI, в правом верхнем углу.

Танцевальная жизнь86/upload/asset/14e185e563e61cd155424.jpg Пожалуйста, попросите ABI_UniswapV3Router ABI_NonfungiblePositionManager это копирование содержимого изображения? А затем, если заменить цепочку, как Arbitrum, кроме добавленного адреса RPC, нужно ли изменить другие параметры?

Маленькие мечтыЕсли вы хотите получить доступ к обменному бассейну, используйте свой собственный склад, следующий код: `` const ABI_UniswapV3Router = ` Слишком длинный пробел, чтобы заполнить конкретный ABI` const ABI_NonfungiblePositionManager = ` слишком длинный, чтобы заполнить конкретный ABI` const UniswapV3RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" function main (() { // const walletAddress = exchange.IO (("адрес") const walletAddress = "или указать адрес кошелька" // получать адрес positionManager exchange.IO (("abi", UniswapV3RouterAddress, ABI_UniswapV3Router) (англ.) const NonfungiblePositionManagerAddress = exchange.IO (("api", UniswapV3RouterAddress, "positionManager") - неразделимый адрес, который может быть использован для обработки данных. Log ((("NonfungiblePositionManagerAddress:", "NonfungiblePositionManagerAddress") - нераскрытое место, где можно получить информацию о нераскрытом месте. exchange.IO (("abi", NonfungiblePositionManagerAddress, ABI_NonfungiblePositionManager) (недоступная ссылка) var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) - неразрешимый адрес, который может быть использован для обработки данных. Log (("nftBalance:", nftBalance) Я не знаю. var nftTokenIds = [] for (var i = 0 ; i < nftBalance; i++) { var nftTokenId = exchange.IO (("api", NonfungiblePositionManagerAddress, "tokenOfOwnerByIndex", walletAddress, i) nftTokenIds.push ((nftTokenId)) Log (("nftTokenId:", nftTokenId) {y:bi} var positions = [] for (var i = 0; i < nftTokenIds.length; i++) { var pos = exchange.IO (("api", NonfungiblePositionManagerAddress, "positions", nftTokenIds[i]) positions.push ((pos)) Log (("pos:", pos) // pos представляет собой информацию о каждом ликвидном хранилище, в которой можно проанализировать данные. {y:bi} {y:bi} `` Позже мы будем обновлять статью в нашей библиотеке.

Маленькие мечтыДа, здесь нужно написать конкретные примеры дебюта, и вы можете следить за этим постом.

Танцевальная жизнь86Пожалуйста, помогите мне сначала. Нет, спасибо.