python|区块链金融不太难!用Python 库分析 DeFi 数据

DeFi 中由于缺乏标准而存在的数据检索问题 , 以及创建数据集所需的许多转换、重复数据转换和复杂的获取过程 。 感谢 The Graph 的资助 , 我们得以着手应对这一挑战 。 在这篇文章中 , 解释我们为解决这个问题而构建的内容 , 以允许仅使用 Python API 轻松进行数据聚合 , 以及如何使用该库来检索和分析数据 。
【python|区块链金融不太难!用Python 库分析 DeFi 数据】
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快速开始

python|区块链金融不太难!用Python 库分析 DeFi 数据
pip install deficrawler
用法
要从协议中获取数据 , 需要使用名称、版本和协议所在的区块链创建协议实例 , 支持的协议可以在支持的协议部分找到 。 以及实体文件夹中具有字段类型的协议的实体 。

python|区块链金融不太难!用Python 库分析 DeFi 数据
从借贷协议中获取数据 。
# 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")

    推荐阅读