用 Python 在 Graph 中查询以太坊数据

这篇具有很好参考价值的文章主要介绍了用 Python 在 Graph 中查询以太坊数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用 Python  在 Graph 中查询以太坊数据

本文主要介绍如何在Python中使用The Graph来查询以太坊数据。The Graph项目是一个用于查询去中心化网络的索引系统。你可以使用The Graph来查询Ethereum、IPFS等系统。

在我们开始之前,让我们先来看看一些定义。

  • GraphQL是一种查询语言

  • The Graph是一个使用GraphQL查询语言的区块链项目。该项目允许任何人建立和发布一个称为 subgraph 的开放API。

Graph 项目使用 GraphQL,这是一种描述如何询问数据的语法。这种语法并不与特定类型的数据库或存储引擎挂钩,而是以你现有的代码和数据为支撑。

GraphQL

让我们先看看一个非常简单的GraphQL查询结构,以及我们运行它时得到的结果。一旦GraphQL服务开始运行,它就可以接收GraphQL查询语句来执行。该服务检查查询语句,以确保它只关联定义的类型和字段,然后运行函数以产生结果。

作为一个例子,查看下面的查询结构:

用 Python  在 Graph 中查询以太坊数据

上面的GraphQL查询可以产生以下结果:

用 Python  在 Graph 中查询以太坊数据

你可以看到,查询的结构与结果相同。这对GraphQL至关重要,因为服务器可以确切地知道客户要求的是什么字段。

我们可以使用GraphQL来进行以下操作:

  • 搜索数据

  • 在你的请求中传递参数

  • 使用别名等

可以访问GraphQL官网,了解更多关于如何编写复杂的GraphQL查询。

https://graphql.org/learn/queries/

The Graph

为了更好地了解The Graph项目是什么以及它如何工作,请访问 thegraph.com/docs。它解释了如何部署一个 subgraph以及如何查询 subgraph的数据。一个 subgraph定义了 TheGraph将从以太坊索引哪些数据,以及如何存储这些数据。一旦 subgraph被部署,就可以使用GraphQL语法进行查询。

在本教程中,我们将专注于从 subgraph中查询数据。

1、访问The Graph Explorer( https://thegraph.com/explorer/),查看以太坊区块链存在的所有托管subgraph。这些托管服务(subgraphs)中的每一个都可以被查询到数据。

2、选择一个 subgraphs页面,并注意该页面的http查询地址和 Playground

3、在你的Python代码中需要http查询地址,它是包含区块链数据的端点。这个服务将执行你的GraphQL查询。

用 Python  在 Graph 中查询以太坊数据

4.确保你在 Playground上进行实验。该网站的这一部分将允许你构建和测试你的GraphQL Ethereum区块链查询。

  • 选择一个样本查询

  • 显示样本查询,并可以进行编辑

  • 按下运行按钮

  • 显示结果

  • 屏幕的最右边显示了一个字段列表,你可以将其添加到你的查询中。

用 Python  在 Graph 中查询以太坊数据

在Python中使用The Graph

接下来基于我们在The Graph的Playground中构建的一些查询,可以在我们的Python代码中使用它来请求来自Ethereum区块链的不同数据。

下面的Python示例代码包含一个通用函数,用于向一个 subgraph发出帖子请求。为了使用不同的 subgraph,你需要改变url端点和GraphQL语法。我在程序的末尾包含了一个打印语句(更容易阅读),所以来自Ethereum区块链的结果会在你的控制台中打印出来。

例1:使用Python中的GraphQL查询以太坊区块链上的Aave,以获得按时间戳划分的最近10笔闪电贷款的列表

import requests
# pretty print is used to print the output in the console in an easy to read format
from pprint import pprint
# function to use requests.post to make an API call to the subgraph url
def run_query(q):
    # endpoint where you are making the request
    request = requests.post('https://api.thegraph.com/subgraphs/name/aave/protocol'
                            '',
                            json={'query': query})
    if request.status_code == 200:
        return request.json()
    else:
        raise Exception('Query failed. return code is {}.      {}'.format(request.status_code, query))
# The Graph query - Query aave for a list of the last 10 flash loans by time stamp
query = """
{
flashLoans (first: 10, orderBy: timestamp, orderDirection: desc,){
  id
  reserve {
    name
    symbol
  }
  amount
  timestamp
}
}
"""
result = run_query(query)
# print the results
print('Print Result - {}'.format(result))
print('#############')
# pretty print the results to make it easier to read
pprint(result)

例2:使用Python中的GraphQL查询以太坊区块链上的Uniswap,以获得前10对的列表

下面的查询是Uniswap的一个排行榜,详细介绍了按ETH存入量降序排列的顶级ETH流动性供应商。这可以帮助你更好地分析用户行为,比如跟踪市场上的热门人物,观察ETH的流动性供应商与其他代币之间的关系。其他可以查询的用户字段包括他们的地址,历史购买和出售的资产以及该用户支付的总费用。

import requests
# pretty print is used to print the output in the console in an easy to read format
from pprint import pprint
# function to use requests.post to make an API call to the subgraph url
def run_query(q):
    # endpoint where you are making the request
    request = requests.post('https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2'
                            '',
                            json={'query': query})
    if request.status_code == 200:
        return request.json()
    else:
        raise Exception('Query failed. return code is {}.      {}'.format(request.status_code, query))
# The Graph query - Query Uniswap for a list of the top 10 pairs where the reserve is > 1000000 USD and the volume is >50000 USD
query = """
{
  pairs(first: 10, where: {reserveUSD_gt: "1000000", volumeUSD_gt: "50000"}, orderBy: reserveUSD, orderDirection: desc) {
    id
    token0 {
      id
      symbol
    }
    token1 {
      id
      symbol
    }
    reserveUSD
    volumeUSD
  }
}
"""
result = run_query(query)
# print the results
print('Print Result - {}'.format(result))
print('#############')
# pretty print the results
pprint(result)

在Python中使用The Graph来查询Ethereum数据是非常强大的。有很多数据可以被查询,用于生成报告和分析。

此代码仅用于学习和娱乐目的。该代码没有经过审计,使用风险自负,合约是实验性质的,可能包含bug。文章来源地址https://www.toymoban.com/news/detail-429837.html

到了这里,关于用 Python 在 Graph 中查询以太坊数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQl数据库第八课-------SQL命令查询-------主要命脉

     欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————— 查询数据         条件         逻辑运算符         模糊查询         范围查询 in         判断空 UNION  排序 聚合 分组:gro

    2024年02月16日
    浏览(53)
  • google bigquery如何查询以太坊ethereum数据 sql怎么写

    文档介绍 https://console.cloud.google.com/marketplace/details/ethereum/crypto-ethereum-blockchain?project=aqueous-tesla-294801 如查询 What are the 10 most popular Ethereum collectibles (ERC721 contracts), by number of transactions? 其它查询方式 https://ethereum-etl.readthedocs.io/en/latest/commands/ kaggle数据格式 Ethereum Blockchain | Kaggl

    2024年02月13日
    浏览(38)
  • 使用 Web3.js 连接以太坊节点并查询区块链数据

    Web3.js 是一个用于连接以太坊网络的 JavaScript 库。在本文中,我们将介绍如何使用 Web3.js 来连接以太坊节点,并且查询以太坊区块链上的数据。 1. 安装 Web3.js 首先,我们需要安装 Web3.js。在命令行中,输入以下命令: 2. 连接以太坊节点 在使用 Web3.js 之前,我们需要先连接到以

    2023年04月26日
    浏览(46)
  • 将GPU版本的torch和torchvision下载至本地进行安装,解决torch.cuda.is_available()为False的情况,本文主要解决CPU版本的torch问题。

    这是困扰我很久的问题,今天花了一点时间去研究一下为什么我的cuda和cudann安装完成了,却不能使用GPU,原因是我的torch和torchvision是cpu版本的,必须下载GPU版本的才能使torch.cuda.is_available()为True,本文使用将文件下载到文件夹后进行安装。 1、打开Anaconda Prompt(Anaconda3)  2、打开

    2024年02月10日
    浏览(61)
  • 全国主要城市建筑轮廓(含层高)矢量数据分享及最新AI提取建筑分布方法介绍

    今天要给大家带来的数据就是全国主要大中型城市的城市建筑轮廓矢量数据!!同时给大家一个傻瓜式的建筑物提取软件,以及其使用方法!! 一、数据基本情况 建筑轮廓数据实际上就是建筑的边界矢量数据,一般该数据属性中会记录对应建筑的高度或者楼层数,通过建筑

    2024年02月12日
    浏览(53)
  • 【机器学习-12】数据探索---python主要的探索函数

    在上一篇博客【机器学习】数据探索(Data Exploration)—数据质量和数据特征分析中,我们深入探讨了数据预处理的重要性,并介绍了诸如插值、数据归一化和主成分分析等关键技术。这些方法有助于我们清理数据中的噪声、消除异常值,以及降低数据的维度,从而为后续的机器

    2024年04月12日
    浏览(35)
  • [Microsoft Graph] 介绍及入门

    最近刚刚上手接触了一个好用的工具 Microsoft Graph,能够通过python(或其他语言)读取到微软账户里的日历事件及待办事件,极大提高了自己工作流的自动化程度。关于相关介绍和入门给大家做个搬运: Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关。 它提供统一的可编程

    2024年02月06日
    浏览(51)
  • 【colab】谷歌colab免费服务器训练自己的模型,本文以yolov5为例介绍流程

    目录 一.前言 二.准备工作 1.注册Google drive(谷歌云盘) Google Driver官网:https://drive.google.com/drive/ Colab官网:https://colab.research.google.com/ 2.上传项目文件 3.安装Colaboratory 4.colab相关操作和命令 5.项目相关操作  三.异常处理         本文介绍了在谷歌开放平台Google colab上租用免

    2023年04月08日
    浏览(51)
  • 【Unity ShaderGraph】| Shader Graph入门介绍 | 简介 | 配置环境 | 窗口介绍 | 简单案例

    前言 Unity2018版本之后推出了一款名为 Shader Graph 的可编程渲染管线工具。 这个工具可以通过可视化界面拖拽来实现着色器的创建和编辑,大大简化了着色器的制作过程,同时着色效果编译显示也快。 下面就来介绍一下Shader Graph的基本信息及使用方法,上手非常简单,一起来

    2024年02月08日
    浏览(36)
  • Ethereum以太坊事件日志查询参数

    详见:https://www.quicknode.com/docs/ethereum/eth_getLogs address:合约地址 fromBlock:开始区块 toBlock:结束区块 topics:主题数组 blockHash:区块哈希,优先级高于fromBlock、toBlock 这里主要介绍topics参数,其他参数都比较好理解,topics是长度为4的数组集合,topic分为2种:一种事件签名topic,

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包