Python を使用して Ethereum Graph データを操作する手順

王林
リリース: 2023-05-08 10:01:07
転載
1438 人が閲覧しました

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

始める前に、いくつかの定義を見てみましょう。

  • GraphQL はクエリ言語
  • Graph は、GraphQL クエリ言語を使用するブロックチェーン プロジェクトです。このプロジェクトでは、誰でもサブグラフと呼ばれるオープン API を構築して公開できます。

Graph プロジェクトは、データを問い合わせる方法を記述する構文である GraphQL を使用します。この構文は、特定の種類のデータベースまたはストレージ エンジンに関連付けられていませんが、既存のコードとデータによってサポートされています。

GraphQL

まず、非常に単純な GraphQL クエリ構造と、それを実行したときに得られる結果を見てみましょう。 GraphQL サービスが実行されると、実行する GraphQL クエリを受け取ることができます。サービスはクエリ ステートメントをチェックして、定義された型とフィールドのみが関連付けられていることを確認し、関数を実行して結果を生成します。

例として、次のクエリ構造を見てください:

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

上記の GraphQL クエリは次の結果を生成します:

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

#クエリの構造が結果と同じであることがわかります。サーバーはクライアントがどのフィールドを要求したかを正確に知っているため、これは GraphQL にとって非常に重要です。

GraphQL を使用して次のことを行うことができます:

    データを検索する
  • リクエストにパラメーターを渡す
  • エイリアスなどを使用する
複雑な GraphQL クエリの作成方法の詳細については、GraphQL 公式 Web サイトにアクセスしてください。

//m.sbmmt.com/link/b950ea26ca12daae142bd74dba4427c8

グラフ

グラフをより深く理解するにはプロジェクトの内容とその仕組みについては、thegraph.com/docs をご覧ください。サブグラフをデプロイする方法と、サブグラフのデータをクエリする方法について説明します。サブグラフは、TheGraph がイーサリアムからどのデータにインデックスを付けるか、およびそれをどのように保存するかを定義します。サブグラフがデプロイされると、GraphQL 構文を使用してクエリできるようになります。

このチュートリアルでは、サブグラフからのデータのクエリに焦点を当てます。

1. The Graph Explorer (https://thegraph.com/explorer/) にアクセスして、Ethereum ブロックチェーン上に存在するすべてのマネージド サブグラフを表示します。データは、これらのホストされたサービス (サブグラフ) のそれぞれからクエリできます。

2. サブグラフ ページを選択し、ページの http クエリ アドレスとプレイグラウンドに注目してください。

3. Python コードには、ブロックチェーン データを含むエンドポイントである http クエリ アドレスが必要です。このサービスは GraphQL クエリを実行します。

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

4. 必ずプレイグラウンドで実験してください。 Web サイトのこのセクションでは、Ethereum ブロックチェーンの GraphQL クエリを構築してテストできます。

# サンプル クエリを選択します。
  • サンプル クエリが表示され、編集できます。
  • 実行ボタンを押します。
  • 結果を表示します。
  • 画面の右端には、クエリに追加できるフィールドのリストが表示されます。

用 Python 在 Graph 中查询以太坊数据Python でのグラフの使用

次のステップは、グラフのプレイグラウンドで構築したいくつかのクエリに基づいています。 Python これは、イーサリアム ブロックチェーンからさまざまなデータをリクエストするコードで使用されます。

以下の Python サンプル コードには、サブグラフへのポスト リクエストを行うための汎用関数が含まれています。別のサブグラフを使用するには、URL エンドポイントと GraphQL 構文を変更する必要があります。プログラムの最後に print ステートメントを追加しました (読みやすくなります)。これにより、イーサリアム ブロックチェーンからの結果がコンソールに出力されます。

例 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 ペアのリストを取得します。

以下のクエリは、上位の ETH フローを ETH 入金額の降順で詳述する Uniswap のランキング リストです。セックス サプライヤーです。これは、市場で人気のあるプレーヤーを追跡したり、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 で Ethereum データをクエリすることは非常に強力です。レポートや分析のためにクエリできるデータは数多くあります。

このコードは学習と娯楽のみを目的としています。このコードは監査されていません。自己責任で使用してください。契約は実験的なものであり、バグが含まれている可能性があります。

以上がPython を使用して Ethereum Graph データを操作する手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!