始める前に、いくつかの定義を見てみましょう。
Graph プロジェクトは、データを問い合わせる方法を記述する構文である GraphQL を使用します。この構文は、特定の種類のデータベースまたはストレージ エンジンに関連付けられていませんが、既存のコードとデータによってサポートされています。
まず、非常に単純な GraphQL クエリ構造と、それを実行したときに得られる結果を見てみましょう。 GraphQL サービスが実行されると、実行する GraphQL クエリを受け取ることができます。サービスはクエリ ステートメントをチェックして、定義された型とフィールドのみが関連付けられていることを確認し、関数を実行して結果を生成します。
例として、次のクエリ構造を見てください:
上記の GraphQL クエリは次の結果を生成します:
#クエリの構造が結果と同じであることがわかります。サーバーはクライアントがどのフィールドを要求したかを正確に知っているため、これは GraphQL にとって非常に重要です。 GraphQL を使用して次のことを行うことができます:
https://www.php.cn/link/b950ea26ca12daae142bd74dba4427c8
グラフグラフをより深く理解するにはプロジェクトの内容とその仕組みについては、thegraph.com/docs をご覧ください。サブグラフをデプロイする方法と、サブグラフのデータをクエリする方法について説明します。サブグラフは、TheGraph がイーサリアムからどのデータにインデックスを付けるか、およびそれをどのように保存するかを定義します。サブグラフがデプロイされると、GraphQL 構文を使用してクエリできるようになります。 このチュートリアルでは、サブグラフからのデータのクエリに焦点を当てます。 1. The Graph Explorer (https://thegraph.com/explorer/) にアクセスして、Ethereum ブロックチェーン上に存在するすべてのマネージド サブグラフを表示します。データは、これらのホストされたサービス (サブグラフ) のそれぞれからクエリできます。 2. サブグラフ ページを選択し、ページの http クエリ アドレスとプレイグラウンドに注目してください。 3. Python コードには、ブロックチェーン データを含むエンドポイントである http クエリ アドレスが必要です。このサービスは GraphQL クエリを実行します。 4. 必ずプレイグラウンドで実験してください。 Web サイトのこのセクションでは、Ethereum ブロックチェーンの GraphQL クエリを構築してテストできます。 # サンプル クエリを選択します。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 サイトの他の関連記事を参照してください。