FMZ는 어떻게 Uniswap V3 개인 유동 펀드 동전을 얻을 수 있는지 알려주세요.

저자:댄싱라이프86, 창작: 2023-07-13 13:48:35, 업데이트:

예를 들어,https://app.uniswap.org/#/pools/536461GRT/ETH의 수


더 많은

작은 꿈이 책은 이 문제에 대한 논문을 작성하고, 도서관에 올려놓을 계획이다.

작은 꿈이 방법을 시도해보세요: https://www.fmz.com/digest-topic/10146

작은 꿈이 모든 내용은 https://etherscan.io/에서 볼 수 있습니다. 이 코드는 하나의 예제일 뿐이며, 구체적인 내용은 구체적으로 분석되어야합니다.

댄싱라이프86/upload/asset/14dbf23df936e703bfe06.jpg 그 결과에는 제가 원하는 GRT와 ETH의 양이 없습니다.

댄싱라이프86ABI_UniswapV3Router는 제가 찾은 것과 같습니다. https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code 이 안에 있는 ABI_NonfungiblePositionManager와 다르죠. 어디서 찾는지 물어보세요.

작은 꿈ABI가 잘못되었거나 호출 방법이 잘못 작성되었어야합니다. 위의 코드를 사용하여 테스트했습니다. `` ABI_Uniswap:"V3Router:" = const `[{"inputs":[{"internalType":" address:":"_name:"_factoryV2","Type:":":"Type:":":":":"Type:":":":"Type:":":":":"Type:":":":"Type:":":":":"Type:":":":":":":":":"Dipable:":":"Dipable:":":"Dipable:":":"Address:":":":"Type:":":"Type:":":":"Type:":":"Type:":":":"Type:":":":"Type:":":":"Type:":":":":"Type:":":":":"Type:":":":":"Type:":":":":"Type:":":":":"Type:":":":":"Type:":":":":"Type:":":":"Type:":":":"Type:":":":"Type:":":":"Type:":":"Type:":":":"Type:":":"Type:":":"Type:":":"Type:":":"Ty 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:":":":":":":":"address","type:":":":":"WETH9","type:":":"address","type:":":":":":"WETH9","type:":":":":" const UniswapV3RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" function main() { // 검색하려는 지갑 주소 // const walletAddress = exchange.IO (("주소") const walletAddress = "0x28df8b987BE232bA33FdFB8Fc5058C1592A3db26" // Uniswap V3의 위치 관리자 계약의 주소를 가져옵니다 exchange.IO (("abi", UniswapV3RouterAddress, ABI_UniswapV3Router) 에 의해 작성되었습니다. const NonfungiblePositionManagerAddress = exchange.IO (("api", UniswapV3RouterAddress, "positionManager") 로그 (("NonfungiblePositionManagerAddress:", NonfungiblePositionManagerAddress) " // 등록 위치 관리자 계약의 ABI exchange.IO (("abi", NonfungiblePositionManagerAddress, ABI_NonfungiblePositionManager) 에 의해 작성되었습니다. // 현재 계정에서 보유한 Uniswap V3 포지션 NFT 수를 검색합니다 var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) 에 대한 설명 로그 (("nftBalance:", nftBalance) 이 모든 것은 // 이 NFT의 토큰Id을 검색합니다 var nftTokenIds = [] for (var i = 0 ; i < nftBalance; i++) { var nftTokenId = exchange.IO (("api", NonfungiblePositionManagerAddress, "tokenOfOwnerByIndex", walletAddress, i) nftTokenIds.push (nftTokenId) 로그 (("nftTokenId:", nftTokenId) ♪ ♪ // 포지션 NFT의 토큰Id에 따라 유동성 포지션 세부 정보를 검색합니다 var 위치 = [] for (var i = 0; i < nftTokenIds.length; i++) { var pos = exchange.IO (("api", NonfungiblePositionManagerAddress, "positions", nftTokenIds[i]) 로그 (Log) // 위치 데이터를 분석합니다 positions.push ((parsePosData ((pos)) ♪ ♪ 이 모든 것은 var tbl = { type: "table", "table", "table", "table", "table", "table", "table", "table", "table", "table", "table", "table", "table", "table" Title: "LP" cols: ["pair", "fee", "lower", "upper", "liquidity"], rows: 위치 ♪ ♪ LogStatus (("`" + JSON.stringify ((tbl) + "`") ♪ ♪ var tokens = {} function init ((() { var res = JSON.parse ((HttpQuery (("https://tokens.coingecko.com/uniswap/all.json")) ") 로그 (("fetch", res.tokens.length, "tokens from", res.name) _.each ((res.tokens, function ((token) { tokens[token.symbol] = { 네임: token.symbol, decimals: token.decimals, decimals, decimals, decimals, decimals, decimals, decimals, decimals, decimals, decimals, decimals, decimals: token. 주소: token.address ♪ ♪ }) 로그 (("tokens:", tokens) ♪ ♪ function parsePosData (포스데이터) { /* { "nonce": "0", 'operator': "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "token1": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "피": "3000", "feeGrowthInside0LastX128": "552824104363438506727784685971981736468" "feeGrowthInside1LastX128": "2419576808699564757520565912733367379" "tokensOwed0": "0", "tokensOwed1": "0", "token0": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", "TickLower": "-62160" 틱업퍼: 41280 "유동성": "19090316141441365693" ♪ ♪ */ 이 모든 것은 var token0Symbol = null var token1Symbol = null for (var symbol in tokens) {를 입력하면 됩니다 if (tokens[symbol].address == posData.token0) { token0Symbol = tokens[symbol] token0Symbol = 토큰 } else if (tokens[symbol].address == posData.token1) { token1Symbol = tokens[symbol] ♪ ♪ ♪ ♪ return [token0Symbol.name + "_" + token1Symbol.name, posData.fee / 10000 + "%", posData.tickLower, posData.tickUpper, posData.liquidity] ♪ ♪ `` 이 사진은 에테리움에서 찍은 사진입니다.

댄싱라이프86오류 보고 /upload/asset/14e3b9c329f0e6d2b7e09.jpg 2가지 방법이 등록되지 않았습니다. ABI가 찾은 것이 맞나요? https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code 여기에 찾습니다.

작은 꿈당신이 보낸 스크린에는 ABI를 복사하는 버튼이 오른쪽 상단에 있습니다. 직사본 시작하십시오. 다른 체인에서의 유니스와프는 동일해야 합니다. 계약 주소가 해당 체인에서의 계약 주소를 구체적으로 작성하는 것 이외에, 추론이 필요하지 않아야합니다.

댄싱라이프86/upload/asset/14e185e563e61cd155424.jpg ABI_UniswapV3Router ABI_NonfungiblePositionManager를 요청합니다 ABI_UniswapV3Router ABI_NonfungiblePositionManager는 이미지의 내용을 복사합니까? 그러면 Arbitrum 체인 같은 연쇄로 변경하면 추가된 RPC 주소를 변경하는 것 외에도 다른 매개 변수가 변경되어야합니까? 예를 들어:https://app.uniswap.org/#/pools/711084

작은 꿈이 사이트는 이 사이트의 모든 정보와 정보를 공유하고 있습니다. `` const ABI_UniswapV3Router = ` 너무 길어서 ABI를 채우기 위해 생략합니다` const ABI_NonfungiblePositionManager = ` 너무 길어서 특정 ABI를 채우기 위해 생략합니다` const UniswapV3RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" function main() { // const walletAddress = exchange.IO (("주소") const walletAddress = "또는 지갑 주소를 지정하십시오" // 위치 관리자 주소를 얻으십시오 exchange.IO (("abi", UniswapV3RouterAddress, ABI_UniswapV3Router) 에 의해 작성되었습니다. const NonfungiblePositionManagerAddress = exchange.IO (("api", UniswapV3RouterAddress, "positionManager") 로그 (("NonfungiblePositionManagerAddress:", NonfungiblePositionManagerAddress) " exchange.IO (("abi", NonfungiblePositionManagerAddress, ABI_NonfungiblePositionManager) 에 의해 작성되었습니다. var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) 에 대한 설명 로그 (("nftBalance:", nftBalance) 이 모든 것은 var nftTokenIds = [] for (var i = 0 ; i < nftBalance; i++) { var nftTokenId = exchange.IO (("api", NonfungiblePositionManagerAddress, "tokenOfOwnerByIndex", walletAddress, i) nftTokenIds.push (nftTokenId) 로그 (("nftTokenId:", nftTokenId) ♪ ♪ var 위치 = [] for (var i = 0; i < nftTokenIds.length; i++) { var pos = exchange.IO (("api", NonfungiblePositionManagerAddress, "positions", nftTokenIds[i]) positions.push ((pos)) Log (("pos:", pos) // pos는 각각의 유동성 보유 정보이며, 그 데이터를 구체적으로 분석할 수 있다. ♪ ♪ ♪ ♪ `` 이 글은 이 문헌에 대한 자세한 내용을 담고 있습니다.

작은 꿈네, 이 부분에서는 구체적인 예제를 작성해야 합니다.

댄싱라이프86이 문제를 해결하는 데 도움이 되시겠습니까?