DEFI API和示例代码入门
在本文中,我们将访问这些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 hereapi_key = 'your_key_here'url = 'https://data-api.defipulse.com/api/v1/defipulse/api/GetHistory?api-key=' + api_keyresponse = 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。运输。请求 导入 RequestsHTTPTransportsample_transport = RequestsHTTPTransport( url = 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2', 验证= True, 重试= 5,)客户 = 客户( 运输= sample_transport)流动资金 = []音量 = []交易 = []x = 11276855而 x > 11250000时: 查询 = gql(''' 询问 { uniswapFactory(id:“ 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f”,块:){ 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 asyncioimport websocketsasync 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的支持。
让我知道您经常使用的一些其他数据源。
现在,我们已经研究了许多数据源,我们将开始深入研究如何使用这些数据在以后的文章中找到独特的见解。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场