Tokens

UniSwap V3 API:如何以程式方式跟踪無人認領的費用

  • September 19, 2021

我投資了 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"

然後你只需複制數據欄位中的任何內容(第一張圖片中的橙色)。

引用自:https://ethereum.stackexchange.com/questions/99906