Tokens
UniSwap V3 API:如何以程式方式跟踪無人認領的費用?
我投資了 UniSwap-V3 流動資金池。
以及如何以 程式方式跟踪無人認領的費用?
我計劃讓伺服器後端 API 獲取數據以跟踪 無人認領的費用 (圖片中的 27.92 美元)
我試圖從 EthScan 讀取契約中查詢位置(如第二張圖片),但不知道如何從這些數據中獲取無人認領的費用?
https://etherscan.io/address/0xc36442b4a4522e871399cd717abdd847ab11fe88#readContract
我通過powershell解決了這個問題。我查詢了 uniswap 介面查詢到的 infura 賬戶。這是 DAI/USDC 池的 powershell 腳本。你必須改變一些東西才能為你的游泳池工作。
最簡單的方法是檢查 Uniswap 網頁,找到“eth_call”查詢(不是“eth_blocknumber”,然後將數據複製到那裡。您需要複製的內容:
- 您的公鑰(綠色)
- 與查詢一起傳遞的數據(橙色)
(您不需要更改第一部分)
$r = Invoke-WebRequest -Uri "https://mainnet.infura.io/v3/099fc58e0de9451d80b18d7c74caa7c1" ` -Method "POST" ` -Headers @{ "method"="POST" "authority"="mainnet.infura.io" "scheme"="https" "path"="/v3/099fc58e0de9451d80b18d7c74caa7c1" "sec-ch-ua"="`" Not;A Brand`";v=`"99`", `"Google Chrome`";v=`"91`", `"Chromium`";v=`"91`"" "accept"="application/json" "sec-ch-ua-mobile"="?0" "user-agent"="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36" "origin"="https://app.uniswap.org" "sec-fetch-site"="cross-site" "sec-fetch-mode"="cors" "sec-fetch-dest"="empty" "referer"="https://app.uniswap.org/" "accept-encoding"="gzip, deflate, br" "accept-language"="nl-NL,nl;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6" } `
用您自己的數據更新這部分
-ContentType "application/json" ` -Body "[{`"jsonrpc`":`"2.0`",`"id`":224,`"method`":`"eth_call`",` "params`":[{` "from`":`"*PUBLIC-KEY-HERE*",` "to`":`"0xc36442b4a4522e871399cd717abdd847ab11fe88`",` "data`":`"*DATA-HERE*" },`"latest`"]}]"
最後,您需要理解響應。此程式碼應將十六進制數字解析為整數,但您需要根據您的貨幣對它們進行縮放。在下面的程式碼中,它是 DAI/USDC。您可以只查看它返回的值,然後更改冪,以便獲得正確的結果。(如果您想了解更多資訊,可以在這裡查看)
#convert the retrieved hex codes to your currency $x = $r.Content | Out-String | ConvertFrom-Json $res = $x.result $length = $res.length $l1 = [Int64]$res.Substring(0,66) $temp= '0x'+$res.Substring(66,$length-66) $l2=[Int64]$temp #change these powers to scale $l1Scaled= $l1/[Math]::Pow(10,18) $l2Scaled= $usdt/[Math]::Pow(10,6) $out = 'Liquidity1:'+$l1Scaled+';Liquidity2:'+$l2Scaled $out
希望這對你也有效。
編輯回答理查德的問題:所以拿這個隨機池。檢查頁面並轉到網路選項卡。
在這裡,您會看到很多傳出查詢。如果您在“標題”子選項卡中向下滾動,您可以看到該方法。其中大部分可能是“eth_blockNumber”,但您需要一個顯示“eth_call”的名稱,如第一張圖片所示。找到其中一個後,展開“Request Payload”的第一個元素。
"0" -> "params" -> "0" -> "data"
然後你只需複制數據欄位中的任何內容(第一張圖片中的橙色)。