區塊鏈研究實驗室 | DEFI API和示例代碼入門
火幣網(huobi.com)最新可用網址(點擊下圖直達註冊!)
火必交易所,曾经的火币交易所!
欧易OKX三大交易所,稳定好用!
币安全球第一大交易所!安全!
在本文中,我們將訪問這些API,同時提供有關如何在Python中使用REST,GraphQL和WebSockets的示例代碼。
數據源和API
DeFi Pulse(REST)
DeFi Pulse具有各種可用的出色數據。您需要一個API密鑰。使用免費帳戶,您每個月將獲得2,000 API積分。我將DeFi Pulse數據用於汽油價格,歷史TVL和其他重要指標。
鎖定總價值(TVL)是受歡迎的指標。我們可以斷言,由於將價值鎖定在協議中,因此基礎令牌的價值應上升。如果TVL隨著時間的推移持續增長,並且代幣失去價值,那麼對於基本面感興趣的人,我們可能會說代幣被低估瞭。當然,這可能取決於令牌是否與協議相關。治理夠瞭嗎?
這是使用標準REST + JSON格式的DeFi Pulse查詢示例。
import requests
import json
# input your token here
api_key = 'your_key_here'
url = 'https://data-api.defipulse.com/api/v1/defipulse/api/GetHistory?api-key=' + api_key
response = requests.get(url)
result = json.loads(response.text)
# loop over, index, etc.
print(result[0])
這將提供帶有Unix時間戳的類似於以下的輸出。如果需要轉換,請使用Python日期時間庫。
{'timestamp':'1608098400','tvlUSD':14894699241,'tvlETH':25581278.215543162,'BTC':155978.23200100005,'ETH':7087137.655439175,'DAI':880970620.1700982}
您可以很容易地從JSON中獲取單個數據。您可以執行result [0] [‘tvlUSD’]並從上方返回14894699241。
其他流行的端點包括:
DEX.AG用於來自分散交易所(DEX)的數據
ETH加油站的汽油價格
Rek.to進行BitMEX清算
流動資金提供者(LP)的Pools.fyi收益
圖表(GraphQL)
Graph使用GraphQL樣式查詢。這是我最喜歡使用的API類型。這是使用gql Python庫的簡單示例。我在上一篇文章中更詳細地介紹瞭Graph。這是一種幼稚的方法,可以隨著時間的推移獲取Uniswap的交易量,流動性和交易數量。
從 gql 導入 gql,客戶端
來自 gql。運輸。請求 導入 RequestsHTTPTransport
sample_transport = RequestsHTTPTransport(
url = 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2',
驗證= True,
重試= 5,
)
客戶 = 客戶(
運輸= sample_transport
)
流動資金 = []
音量 = []
交易 = []
x = 11276855
而 x > 11250000時:
查詢 = gql('''
詢問 {
uniswapFactory(id:“ 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f”,塊:{number:''' + str(x)+ '''}){
totalVolumeUSD
totalLiquidityUSD
txCount
}
}
''')
響應 = 客戶。執行(查詢)
liquidity_value = response [ 'uniswapFactory' ] [ 'totalLiquidityUSD' ]
volume_value = response [ 'uniswapFactory' ] [ 'totalVolumeUSD' ]
transaction_value = 響應[ 'uniswapFactory' ] [ 'txCount' ]
流動資金。插入(0,liquidity_value)
音量。追加(volume_value)
交易。追加(Transactions_value)
x = x - 1000
打印(x)
打印(流動性)
從上面的查詢中,我們收集流動性和數量數據。我們可以使用它來進行類似以下的操作,跟蹤隨時間變化的流動性與交易量。
鏈數據
盡管可以使用許多資源來獲取鏈式數據,但我還是結合使用瞭自己在操作節點和BlockCypher時獲得的數據。BlockCypher的免費計劃每天將為您提供2000個請求。BlockCypher有很多替代方案,因此請找出最適合您的方案。
您可以執行以下操作,例如打開網絡套接字以實時獲取鏈中交易數據。或者,您可以執行標準的REST來查詢各種鏈數據。這是我通常走的路線。
您可以獲取所有信息,從交易數據到智能合約的更詳細信息,再到您正在尋找的任何東西。如果您進行瞭足夠的搜索,很可能會找到所需的數據。這就是開放金融生態系統的美。
curl -s https://api.blockcypher.com/v1/eth/main/contracts/0eb688e79698d645df015cf2e9db5a6fe16357f1?token=YOURTOKEN
我們可以在終端中使用以上內容來測試端點。該特定端點的輸出非常酷。
這是輸出中的一小部分,展示瞭該地址的智能合約方法。輸出中的一小部分,展示瞭該地址的智能合約方法。
/* this function is executed at initialization and sets the owner of the contract
function mortal()
{
owner = msg.sender;
}
/* Function to recover the funds on the contract
function kill()
{
if(msg.sender==owner)suicide(owner);
}
交換數據
我認為沒有免費資源可提供低延遲,高質量的交換數據。如果有人告訴我。我使用Polygon的$ 50 /月套餐交換數據。使用免費計劃,您可以獲得每分鐘5次API調用和2年歷史的一天結束數據。
顯然,您可以從付費計劃中獲得更多細粒度的信息。
您還可以直接使用交換API來訪問其數據。需要一些額外的工作來匯總各種交流,但值得一試,具體取決於您的用例。
如果您需要更多的白標解決方案,Kaiko可能就是我要走的路線。一如既往,DYOR。
替代方案:Nomics(免費的非報價水平數據),Kaiko(2周的試用期),CoinAPI(每天100個免費請求)
Web套接字
大多數可用資源都將允許WebSockets。這樣,我們就可以打開連接以獲取數據,而不必不斷輪詢服務。如果您比REST更喜歡這種方法,請看下面的示例代碼……該API將包含其自己的文檔,用於說明所需的格式和參數。
import asyncio
import websockets
async def hello(uri):
async with websockets.connect(uri) as websocket:
x = await websocket.send({"action": "auth", "params": "api_key"})
y = await websocket.recv()
print(y)
await websocket.send({"action": "subscribe", "params": "data_to_subscribe_to"})
asyncio.get_event_loop().run_until_complete(
hello('wss://'))
其他資源
沙丘分析
我是Dune Analytics的忠實粉絲。如果以上編程對您來說是一門外語,您仍然可以使用Dune進行加密分析。這是一種簡單的分析工具,可讓您想起Tableau之類的產品。
我經常使用Dune進行自己的分析。這是一個相對較新的產品,但他們一直在添加越來越多的有用數據。
運行自己的節點
如果您要運行自己的以太坊節點,則相對簡單。但是,存檔節點將花費您幾TB的存儲空間,而完整的節點將為您運行數百GB的存儲空間。
對於大多數我不推薦。如果您需要節點的功能,那麼像Infura這樣的服務將為您提供所需的全部功能,而麻煩卻很少。Infura最近還增加瞭對ETH 2.0和Filecoin的支持。
讓我知道您經常使用的一些其他數據源。
現在,我們已經研究瞭許多數據源,我們將開始深入研究如何使用這些數據在以後的文章中找到獨特的見解。
需要加入區塊鏈技術交流群嗎,請掃描下方二維碼,助手將邀請您進群。
作者:鏈三豐,來源:區塊鏈研究實驗室
下一篇:flow新高NFT再度火爆,魚尾熱點還是增量市場? 返回列表页>>> 比特幣最新新聞