Làm thế nào để FMZ có được Uniswap V3 số lượng coin trong hồ bơi cá nhân

Tác giả:Dancinglife86, Tạo: 2023-07-13 13:48:35, Cập nhật:

Ví dụ:https://app.uniswap.org/#/pools/536461Số lượng GRT / ETH trong đó


Thêm nữa

Giấc mơ nhỏTrong khi đó, các nhà nghiên cứu cũng cho biết rằng một số công việc của họ có thể được thực hiện bằng cách sử dụng các phương pháp hợp đồng.

Giấc mơ nhỏBạn có thể thử điều này: https://www.fmz.com/digest-topic/10146

Giấc mơ nhỏCó thể xem trên http://etherscan.io/, mã phát ra chỉ là một ví dụ, nội dung cụ thể cần được phân tích cụ thể.

Dancinglife86/upload/asset/14dbf23df936e703bfe06.jpg Không có kết quả nào trong đó tôi muốn có số lượng tương ứng của GRT và ETH /upload/asset/14f1cb40efba017ae74d2.jpg

Dancinglife86ABI_UniswapV3Router giống như những gì tôi đang tìm kiếm là https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code trong đó, ABI_NonfungiblePositionManager không giống nhau, hãy hỏi bạn đang tìm kiếm ở đâu?

Giấc mơ nhỏCó lẽ ABI không đúng, hoặc phương thức gọi đã được viết sai, hãy thử với mã tôi gửi ở trên. `` ABI:"Uniswap:"V3Router": const:"inputs:":"{"internalType:"address:":"name:"_factoryV2",:"Type:":":"Type:":":"Mutability:":":"Type:":":":"Di-payable:":"Type:":"Type:":":"Type:":":"Type:":":":"Di-byte:":"constructor:":"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:" " ABI_NonfungiblePositionManager = `[{"inputs":[{"internalType":"address","name":"_factory","type:":"address"},{"internalType:":":"address","name""WETH9","type:"address"},{"internal","type","address","name":"_tokenDescriptor_type",":"address"}],"stateMutability:":"nonpayable","constructor"},{"anonymous:":":":":"type:":":"false",:":":":"inputs:":":"type:":":":":":":":":"type:":":":":":":":":":"type:":":":":":":":":"type:":":":":":":":":"type:":":":":":":"type:":":":":":":"type:":":":":":":":"type:":":":":":":"o","type:":":":"address","type:":":"WETH9","type:":":":":"type:":":":":":":"WETH const UniswapV3RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" function main() { // Địa chỉ ví muốn truy vấn // const walletAddress = exchange.IO (("address") const walletAddress = "0x28df8b987BE232bA33FdFB8Fc5058C1592A3db26" // Nhận địa chỉ hợp đồng positionManager của Uniswap V3 exchange.IO (("abi", UniswapV3RouterAddress, ABI_UniswapV3Router) const NonfungiblePositionManagerAddress = exchange.IO (("api", UniswapV3RouterAddress, "positionManager") Log ((("NonfungiblePositionManagerAddress:", NonfungiblePositionManagerAddress) // Đăng ký ABI của hợp đồng positionManager exchange.IO (("abi", NonfungiblePositionManagerAddress, ABI_NonfungiblePositionManager) // Tìm số lượng NFT Uniswap V3 có trong tài khoản hiện tại var nftBalance = exchange.IO (("api", NonfungiblePositionManagerAddress, "balanceOf", walletAddress) Log (("nftBalance:", nftBalance) Không. // Tìm kiếm TokenId của 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) // Tìm kiếm thông tin chi tiết về vị trí thanh khoản dựa trên vị trí NFT tokenId var positions = [] for (var i = 0; i < nftTokenIds.length; i++) { var pos = exchange.IO (("api", NonfungiblePositionManagerAddress, "positions", nftTokenIds[i]) Log (("pos:", pos) // Phân tích dữ liệu vị trí positions.push ((parsePosData ((pos)) Không. var tbl = { type: "table", title: "LP", cols: ["pair", "fee", "lower", "upper", "liquidity"], rows: positions LogStatus (("`" + JSON.stringify ((tbl) + "`") 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, Tỷ số: token.decimals, Địa chỉ: token.address ) Log (("tokens:", tokens) function parse PosData ((posData) {) /* {C:$0000FF} "nonce": "0", 'operator': "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "token1": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "fee": "3000", "feeGrowthInside0LastX128": "552824104363438506727784685971981736468" "feeGrowthInside1LastX128": "2419576808699564757520565912733367379", "tokensOwed0": "0", "tokensOwed1": "0", "token0": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", "tickLower": "-62160", "tickUpper": "-41280", "Liquidity": "19090316141441365693" */ Không. var token0Symbol = null var token1 Symbol = null for (var symbol in tokens) { if (tokens[symbol].address == posData.token0) { token0Symbol = tokens[symbol] } else if (tokens[symbol].address == posData.token1) { token1Symbol = tokens[symbol] return [token0Symbol.name + "_" + token1Symbol.name, posData.fee / 10000 + "%", posData.tickLower, posData.tickUpper, posData.liquidity] `` Đây là một trang web trên mạng Ethereum.

Dancinglife86Có lỗi /upload/asset/14e3b9c329f0e6d2b7e09.jpg 2 phương thức không đăng ký, ABI tìm đúng không? https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code tìm ở đây

Giấc mơ nhỏTrong hình ảnh của bạn có một nút sao chép ABI ở góc trên bên phải. Sao chép ngay lập tức. Uniswap trên các chuỗi khác sẽ giống nhau. Ngoài địa chỉ hợp đồng, bạn cũng nên điền địa chỉ hợp đồng trên chuỗi tương ứng.

Dancinglife86/upload/asset/14e185e563e61cd155424.jpg Xin hỏi ABI_UniswapV3Router ABI_NonfungiblePositionManager là sao chép nội dung của hình ảnh? Có thể, điền đầy đủ ABI, tóm tắt cũng không biết để tóm tắt Sau đó, nếu thay đổi chuỗi như Arbitrum, thay đổi các tham số khác ngoài địa chỉ RPC được thêm vào? Ví dụ: số USDT / ARB trong https://app.uniswap.org/#/pools/711084

Giấc mơ nhỏNếu bạn muốn có được một trong những hồ bơi trao đổi này, hãy giữ kho của riêng bạn, theo mã sau: `` const ABI_UniswapV3Router = ` quá dài bỏ qua để điền vào ABI cụ thể ` const ABI_NonfungiblePositionManager = ` quá dài để bỏ qua để điền vào ABI cụ thể ` const UniswapV3RouterAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45" function main (() { // const walletAddress = exchange.IO (("address") const walletAddress = "hoặc chỉ định địa chỉ ví" // nhận địa chỉ 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) Không có gì đâu. var nftTokenIds = [] for (var i = 0 ; i < nftBalance; i++) { var nftTokenId = exchange.IO (("api", NonfungiblePositionManagerAddress, "tokenOfOwnerByIndex", walletAddress, i) nftTokenIds.push ((nftTokenId)) Log (("nftTokenId:", nftTokenId) ♪ ♪ 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 là mỗi thông tin lưu trữ thanh khoản, có thể phân tích cụ thể dữ liệu trong đó. ♪ ♪ ♪ ♪ `` Các bài viết sẽ được cập nhật trong thư viện sau đó.

Giấc mơ nhỏCó thể, bạn cần viết một ví dụ cụ thể về thử nghiệm, bạn có thể theo dõi bài viết này.

Dancinglife86Xin hãy giúp tôi giải quyết trước.