DeFi 中由于缺乏标准而存在的数据检索问题 , 以及创建数据集所需的许多转换、重复数据转换和复杂的获取过程 。 感谢 The Graph 的资助 , 我们得以着手应对这一挑战 。 在这篇文章中 , 解释我们为解决这个问题而构建的内容 , 以允许仅使用 Python API 轻松进行数据聚合 , 以及如何使用该库来检索和分析数据 。
【python|区块链金融不太难!用Python 库分析 DeFi 数据】
支持DeFi协议
Name Type Version ChainAave Lending 2 EthereumAave Lending 2 PolygonCompound Lending 2 EthereumCream Lending 2 EthereumCream Lending 2 BSCUniswap Dexes 2 EthereumBalancer Dexes 2 EthereumBancor Dexes 1 EthereumSushiSwap Dexes 1 EthereumSushiSwap Dexes 1 BSCSushiSwap Dexes 1 PolygonUbeswap Dexes 1 CeloOraclesName Type Version ChainChainlink Oracle 1 Ethereum快速开始
pip install deficrawler
用法
要从协议中获取数据 , 需要使用名称、版本和协议所在的区块链创建协议实例 , 支持的协议可以在支持的协议部分找到 。 以及实体文件夹中具有字段类型的协议的实体 。
从借贷协议中获取数据 。
# Instanciate the protocol with the name, version and chainfrom deficrawler import Lendingaave = Lending(protocol="Aave", chain="Ethereum", version=2)aave_polygon = Lending(protocol="Aave", chain="Polygon", version=2)compound = Lending(protocol="Compound", chain="Ethereum", version=2)cream = Lending(protocol="Cream", chain="Ethereum", version=2)cream_bsc = Lending(protocol="Cream", chain="bsc", version=2)# Not all the protocols has the same available events to get data, to know which entities are supported for each protocol:aave.supported_entities()uniswap.suported_entities()## For each different entity, data can be retrieved in a specific time range.compound.get_data_from_date_range(start_date, end_date, "borrow")# To get the all the users of a protocolcream_bsc.get_all_users()# And the user positions cream_bsc.get_all_users(user)
从 Dex 协议中获取数据
# Instanciate the protocol with the name, version and chainfrom deficrawler import Dexuniswap = Dex(protocol="Uniswap", chain="Ethereum", version=2)balancer = Dex(protocol="Balancer", chain="Ethereum", version=1)bancor = Dex("Bancor", chain="Ethereum", version=1)shushi = Dex("SushiSwap", chain="Ethereum", version=1)# Not all the protocols has the same available events to get data, to know which entities are supported for each protocol:uniswap.supported_entities()balancer.suported_entities()## For each different entity, data can be retrieved in a specific time range.uniswap.get_data_from_date_range(start_date_amm, end_date_amm, "swap")# To get the all the pools of a protocoluniswap.get_all_pools()
要从预言机获取价格 , 需要实例化预言机对象并调用函数 。
# Instanciate the oracle with the name, version and chainfrom deficrawler import Oraclechainlink = Oracle(protocol="chainlink", version=1, chain="Ethereum")#Get all the available pairs to get the datachainlink.get_all_pairs() #Get the price for a specific pair in a time rangechainlink.get_price_from_date_range(from_date=start_date, to_date=end_date, pair="ETH/USD")
推荐阅读
- 星链|石豪:在太空,马斯克和美国当局是如何作恶的
- 区块|面向2030:影响数据存储产业的十大应用(下):新兴应用
- 人物|详解硅谷大佬关系链 谁给马斯克投资、谁陪伴乔布斯走完最后日子?
- 硬件|西安疫情波及全球芯片供应链 美光三星英伟达都受牵连
- Huawei|传华为将携手中芯南方在深圳建晶圆厂 已与台积电供应链接洽
- 地球|马斯克否认“星链”占用地球空间轨道:能容纳数百亿颗卫星
- SpaceX|马斯克否认“星链”占用地球空间轨道:能容纳数百亿颗卫星
- RNA|高等植物第四种RNA聚合酶 可与“伙伴”高效合成双链RNA
- 人物|马斯克否认星链卫星挤占太空空间:地球低轨道能容纳几百亿颗卫星
- 马斯克|星链卫星乱窜致中国空间站紧急避险!马斯克:没阻止任何人