blockchain-data-query-the-graph-network-subgraph
0 0
Read Time:4 Minute, 25 Second

Việc truy vấn dữ liệu từ blockchain là 1 việc khá cần thiết để cá nhân theo dõi, phân tích dự án hoặc cung cấp thông tin cho 1 ứng dụng nào đó. Cùng tìm hiểu cách thức thực hiện việc này qua các subgraph từ dự án The Graph Network nhé.

I. The Graph là gì ?

The Graphlà một giao thức để tổ chức dữ liệu blockchain và giúp nó dễ dàng truy cập. Nó hiện đang hỗ trợ cho nhiều ứng dụng được sử dụng nhiều nhất trong DeFi và hệ sinh thái Web3 rộng lớn hơn hiện nay.

Tìm hiểu thêm tại đây.

II. Hướng dẫn truy vấn dữ liệu blockchain từ Subgraph trên The Graph Network

1. Tìm kiếm subgraph

Bước đầu tiên, bạn cần truy cập trang trình tìm kiếm subgraph của The Graph mang tên The Graph Explorer

Tại đây bạn có thể thấy 1 số subgraph tiêu biểu đã được xây dựng bởi những đội ngũ uy tín như bên dưới

Image for post

Nếu không tìm thấy dự án bạn cần, bạn có thể chọn tìm kiếm các subgraph cộng đồng bên dưới.

Image for post

Ở đây ta cùng lấy ví dụ cho subgraph giúp truy vấn dữ liệu về dự án
PoolTogether
— 1 ứng dụng cho phép người dùng gộp Dai của họ với những người chơi khác thành pool vốn để tích lũy lãi suất thông qua các cơ hội tiết kiệm khác nhau trên DeFi. Tiền lãi kiếm được trên pool vốn được thu vào một pool chung và được phân phối như một giải thưởng cho một người chiến thắng mỗi tuần thông qua rút thăm may mắn (theo cơ chế VRF của Chainlink).

Link Subgraph PoolTogether tại đây. Trong hình bên dưới là chú thích 1 số điểm quan trọng bạn cần để ý.

Image for post
  • Địa chỉ endpoint chúng ta cần lấy để truy vấn thông tin từ đây là “https://api.thegraph.com/subgraphs/name/pooltogether/pooltogether”
  • Ở phần ô bên trái phía dưới là nơi bạn chạy thử 1 số truy vấn bằng GraphQL để thấy kết quả trả về bên phần đen kế bên.
  • Ở phần Schema bạn sẽ thấy mô tả các đối tượng được quy định trong subgraph này. Bấm vào từng đối tượng để xem thông tin chi tiết.

2. Thiết lập cấu trúc Truy vấn

Để viết truy vấn, bạn cần biết sử dụng ngôn ngữ truy vấn GraphQL. Học GraphQL tại đây.

Ví dụ, có 1 đề bài đưa ra cần truy vấn thông tin của 5 lần rút thăm mới nhất và 5 người chơi có số thắng cuộc nhiều nhất. Chúng ta có thể bấm vào “Draw” và “Player” để xem chi tiết của từng đối tượng này.

Image for post

Với lượt rút thăm, ta thấy có thông tin về “openAt” — đây là 1 thông số có thể sử dụng để quy định sắp xếp thứ tự của các dữ liệu lượt rút thăm trả về. Với người chơi, thì ta dùng thông số “winnings”.

Câu lệnh truy vấn có thể là:

{
draws(first: 5, orderBy: committedAt, orderDirection: desc) {
id
drawId
committedAt
feeBeneficiary
secretHash
}
players(first: 5, orderBy: winnings, orderDirection: desc) {
id
address
winnings
latestBalance
consolidatedBalance
}
}

3. Tạo truy vấn với ngôn ngữ Python bằng thư viện graphqlclient

3.1. Cài đặt Python

Cài đặt Python 3.6 các bạn có thể tham khảo bài viết này Cài đặt Python

3.2. Tạo môi trường ảo (virtual environment) và cài đặt thư viện graphqlclient

Xem thêm về thư viện graphqlclient tại đây.

virtualenv env
source env/bin/activate
pip install graphqlclient

3.3. Viết script

from graphqlclient import GraphQLClient
import json

endpoint = "https://api.thegraph.com/subgraphs/name/pooltogether/pooltogether"

client = GraphQLClient(endpoint)

query = """
{
draws(first: 5, orderBy: committedAt, orderDirection: desc) {
id
drawId
committedAt
feeBeneficiary
secretHash
}
players(first: 5, orderBy: winnings, orderDirection: desc) {
id
address
winnings
latestBalance
consolidatedBalance
}
}
"""

result = json.loads(client.execute(query))
draws = result['data']['draws']
players = result['data']['players']

Các biến “draws” và “players” là các list chứa các dictionary. Mỗi dictionary là các thông tin của từ draw và từng player truy vấn được.

Image for post

Từ phương pháp truy vấn trên, bạn có thể xây dựng những trang web thể hiện thông tin dữ liệu thời gian thực về các dự án xây dựng trên blockchain thông qua các cổng API là các subgraph.

Để bạn dễ hình dung, những trang như https://info.uniswap.org/home hay https://stats.synthetix.io/ đều sử dụng các subgraphs trên hệ thống mạng lưới The Graph để truy vấn dữ liệu của chúng cả.

III. Kết luận

Thông qua bài viết trên, hi vọng bạn đã có thêm thông tin về cách thức truy vấn thông tin trên blockchain Ethereum qua các Subgraph trên The Graph Network bằng ngôn ngữ lập trình Python và ngôn ngữ truy vấn GraphQL.

The Graph là 1 dự án cực kì to lớn mà vẫn chưa có nhiều người tại Việt Nam để ý đến nó. Đó là cho đến khi họ không thể không để ý được nữa — hoặc họ sẽ vô tình sử dụng gián tiếp nó mà không hề hay biết (như hiện tại nhiều bạn truy vấn trên info.uniswap.org)

Thông tin dự án:

Website

Discord

Telegram

Twitter

Everest.link

Happy
Happy
100 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

Leave a Reply

Your email address will not be published. Required fields are marked *