ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
ĐỒ ÁN 1
NGHIÊN CỨU CÁC GIẢI PHÁP CHO ỨNG DỤNG
INDEXING CÁC BLOCKCHAIN EVENT
GIẢNG VIÊN HƯỚNG DẪN: NGUYỄN TẤN TOÀN
SINH VIÊN THỰC HIỆN: VÕ VƯƠNG THANH TÚ
TP. HỒ CHÍ MINH, 2023
LỜI CẢM ƠN
Lời đầu tiên em xin gửi lời cảm ơn đến thầy Nguyễn Tấn Toàn, người đã hướng dẫn
cho em về đồ án này trong học kỳ vừa qua, nhờ sự chỉ dạy, gợi ý của thầy, em đã có
những kiến thức nền tảng về Blockchain Indexing… và từ đó có thể tự nghiên cứu để
hồn thành đồ án này.
Tuy nhiên, dù đã rất cố gắng, nhưng do còn thiếu nhiều kinh nghiệm nên thiếu sót là
điều khơng thể tránh khỏi trong quá trình thực hiện. Em mong rằng có thể nhận được
những nhận xét từ thầy để em có thể rút kinh nghiệm, hồn thiện nghiên cứu tốt hơn.
Một lần nữa em xin chân thành cảm ơn thầy!
MỤC LỤC
Chương 1.
MỞ ĐẦU.............................................................................................6
1.1.
Lý do chọn đề tài ......................................................................................6
1.2.
Mục đích nghiên cứu ................................................................................6
1.3.
Đối tượng và phạm vi nghiên cứu ...........................................................6
Chương 2.
2.1.
Giời thiệu chung .......................................................................................7
Chương 3.
3.1.
TỔNG QUAN ....................................................................................7
NGHIÊN CỨU THỰC NGHIỆM HOẶC LÍ THUYẾT................9
Blockchain .................................................................................................9
3.1.1.
Các đặc điểm cơ bản của blockchain ..................................................9
3.1.2.
Các ứng dụng của blockchain .............................................................9
3.1.3.
Cách hoạt động của công nghệ blockchain .......................................10
3.1.4.
Ý nghĩa của công nghệ blockchain....................................................10
3.2.
Lập chỉ mục (Indexing) ..........................................................................10
3.3.
Các phương pháp lập chỉ mục ..............................................................11
3.4.
The Graph ...............................................................................................12
3.4.1.
Tổng quan về mạng lưới The Graph .................................................13
3.4.2.
Graph Node .......................................................................................14
3.4.3.
Cài đặt Graph Node ...........................................................................15
3.4.4.
Tạo và lập chỉ mục Subgraph ............................................................17
3.4.5.
GraphQL trong The Graph ................................................................29
Chương 4.
TRÌNH BÀY, ĐÁNH GIÁ BÀN LUẬN VỀ KẾT QUẢ ..............31
Chương 5.
KẾT LUẬN ......................................................................................32
Chương 6.
HƯỚNG PHÁT TRIỂN ..................................................................33
TÀI LIỆU THAM KHẢO ......................................................................................34
TĨM TẮT ĐỒ ÁN
Cơng nghệ blockchain đã mang đến sự cách mạng trong cách chúng ta tương tác với
dữ liệu, tạo ra các ứng dụng phi tập trung an toàn, minh bạch và khó gian lận. Tuy
nhiên, việc indexing dữ liệu trên blockchain đặt ra những thách thức đáng kể do
cách lưu trữ phi tập trung và phức tạp của việc truy vấn. Nghiên cứu này tập trung
vào việc tìm hiểu các giải pháp để indexing các blockchain event. Cụ thể, nghiên
cứu đánh giá The Graph, một giao thức indexing phi tập trung cho phép nhà phát
triển xây dựng và công bố các subgraph để indexing dữ liệu blockchain. Nghiên cứu
cũng so sánh The Graph với các nền tảng indexing khác như Alchemy và Bitquery.
Nghiên cứu này nhằm đánh giá kiến trúc, tính năng của các giải pháp indexing, bao
gồm việc cài đặt và thực thi các ứng dụng indexing blockchain, để thu thập dữ liệu
thực nghiệm và đánh giá chức năng của chúng. Các kết quả và kết luận chính vẫn
đang được nghiên cứu và chưa được rút ra. Nghiên cứu này cung cấp thông tin quan
trọng về hiệu quả của các giải pháp indexing khác nhau cho event trên blockchain,
giúp các nhà phát triển và các bên liên quan lựa chọn nền tảng phù hợp. Các kết quả
sẽ góp phần vào việc hiểu được những ưu điểm và hạn chế của các giải pháp, góp
phần thúc đẩy sự phát triển của việc indexing event trên blockchain.
5
Chương 1. MỞ ĐẦU
1.1. Lý do chọn đề tài
Công nghệ Blockchain đang phát triển rất nhanh với nhiều ứng dụng tiềm
năng. Tuy nhiên, một trong những thách thức quan trọng đối với việc áp dụng cơng
nghệ Blockchain là khó khăn trong việc indexing event (lập chỉ mục sự kiện) trên
Blockchain. Nghiên cứu này nhằm giải quyết thách thức này bằng cách tìm hiểu các
giải pháp cho việc lập chỉ mục sự kiện trên Blockchain..
1.2. Mục đích nghiên cứu
Mục tiêu chính của nghiên cứu này là đánh giá kiến trúc, tính năng của các
giải pháp lập chỉ mục sự kiện trên Blockchain. Nghiên cứu cũng sẽ so sánh The
Graph với các nền tảng lập chỉ mục khác như Alchemy và Bitquery. Các kết quả
của nghiên cứu này sẽ giúp các nhà phát triển và các bên liên quan lựa chọn các nền
tảng lập chỉ mục phù hợp cho nhu cầu của họ.
1.3. Đối tượng và phạm vi nghiên cứu
Do vấn đề hạn chế về thời gian, nghiên cứu của em tập trung vào việc đánh
giá kiến trúc và tính năng của một giải pháp cụ thể cho việc lập chỉ mục sự kiện
blockchain, đó là The Graph. Mặc dù ý định ban đầu là so sánh nhiều giải pháp lập
chỉ mục cho sự kiện blockchain, nhưng với những hạn chế về thời gian và tài
nguyên, phạm vi nghiên cứu đã được thu hẹp lại.
Để đánh giá hiệu quả của The Graph như một nền tảng lập chỉ mục, em đã
triển khai và thực thi các ứng dụng lập chỉ mục, thu thập dữ liệu liên quan và đánh
giá các chức năng của các ứng dụng đó. Kết quả của nghiên cứu này sẽ cung cấp
thông tin quan trọng về khả năng của The Graph và giúp lựa chọn các nền tảng lập
chỉ mục phù hợp.
6
Chương 2. TỔNG QUAN
2.1.Giời thiệu chung
Blockchain là một công nghệ đang phát triển mạnh mẽ với tiềm năng ứng
dụng rộng rãi trong nhiều lĩnh vực. Tuy nhiên, một trong những thách thức quan
trọng đối mặt với việc áp dụng công nghệ blockchain là khả năng lập chỉ mục dữ
liệu. Nghiên cứu này nhằm giải quyết thách thức này bằng cách tìm hiểu về các giải
pháp lập chỉ mục sự kiện blockchain.
2.1.1. Định nghĩa lập chỉ mục trên blockchain
Trước khi đi sâu vào việc nghiên cứu các giải pháp lập chỉ mục sự kiện
blockchain, cần hiểu rõ về lập chỉ mục trong ngữ cảnh blockchain. Lập chỉ mục trên
blockchain là quá trình tạo ra một cấu trúc dữ liệu có thể tìm kiếm để truy xuất
thơng tin từ dữ liệu blockchain một cách hiệu quả. Bằng cách xây dựng bảng chỉ
mục, ta có thể nhanh chóng tìm kiếm và phân tích dữ liệu blockchain để thu được
thơng tin hữu ích.
2.1.2. Các thách thức của việc lập chỉ mục trên blockchain
Có hai thách thức chính trong việc lập chỉ mục trên blockchain. Thách thức
đầu tiên là tính phân tán của dữ liệu trên blockchain. Dữ liệu trên blockchain được
lưu trữ và phân tán trên nhiều nút mạng, điều này làm cho việc lập chỉ mục trở nên
phức tạp hơn và đòi hỏi sự đồng bộ và quản lý phân tán hiệu quả. Thách thức tiếp
theo liên quan đến tương thích và khả năng mở rộng của các kỹ thuật lập chỉ mục.
Với sự gia tăng đáng kể về khối lượng dữ liệu blockchain, việc lập chỉ mục phải
đảm bảo tính mở rộng và tương thích để xử lý lượng dữ liệu lớn một cách hiệu quả.
7
2.1.3. Các giải pháp lập chỉ mục hiện có
Để đáp ứng nhu cầu lập chỉ mục sự kiện blockchain, đã có nhiều giải pháp
lập chỉ mục được sinh ra và sử dụng. Việc đánh giá và so sánh các giải pháp này là
cần thiết để lựa chọn nền tảng lập chỉ mục phù hợp. Nghiên cứu này sẽ tập trung
vào đánh giá các giải pháp lập chỉ mục hiện có cho sự kiện blockchain. Một số giải
pháp phổ biến bao gồm The Graph, Alchemy và Bitquery. Mỗi giải pháp có những
ưu điểm và hạn chế riêng, và việc đánh giá chúng giúp người dùng hiểu rõ hơn về
khả năng của từng giải pháp trong việc lập chỉ mục sự kiện blockchain.
2.1.4. Lỗ hỏng kiến thức
Mặc dù công nghệ blockchain đã thu hút được sự quan tâm lớn, các tài liệu
hiện có chủ yếu tập trung vào các khía cạnh khác của công nghệ blockchain, để lại
những thách thức và cơ hội liên quan đến lập chỉ mục sự kiện blockchain chưa được
khám phá sâu. Nghiên cứu của em nhằm bồi đắp vào khoảng trống này bằng việc
nghiên cứu các kỹ thuật lập chỉ mục và đánh giá các giải pháp nổi bật cụ thể là The
Graph. Thông qua việc thu thập và phân tích dữ liệu thực nghiệm, em mong muốn
đưa ra những thông tin quý giá về kiến trúc và tính năng của các giải pháp lập chỉ
mục này. Nghiên cứu này sẽ giúp cho các nhà phát triển, các bên liên quan và các
nhà nghiên cứu trong việc lựa chọn các nền tảng lập chỉ mục phù hợp, từ đó nâng
cao tính truy cập và khả năng sử dụng dữ liệu blockchain. Bằng cách đóng góp cho
sự tiến bộ trong việc lập chỉ mục các sự kiện trong blockchain, em mong rằng mình
sẽ giúp mở ra cơ hội để công nghệ blockchain được áp dụng và sử dụng rộng rãi
hơn trong tương lai.
8
Chương 3. NGHIÊN CỨU THỰC NGHIỆM HOẶC LÍ THUYẾT
3.1.
Blockchain
Blockchain là một công nghệ cơ sở dữ liệu phân tán cho phép ghi lại các
giao dịch một cách an toàn, minh bạch và không thể sửa đổi. Đây là một hệ thống
phi tập trung không phụ thuộc vào cơ quan trung tâm nào để xác minh giao dịch.
Thay vào đó, các giao dịch được xác minh bởi các nút mạng thông qua mật mã học.
3.1.1. Các đặc điểm cơ bản của blockchain
-
Phân tán: Blockchain là một hệ thống phân tán, có nghĩa là khơng có cơ quan
trung tâm nào kiểm sốt. Điều này làm cho nó an tồn hơn và khó bị tấn
công.
-
Minh bạch: Tất cả các giao dịch trên blockchain đều minh bạch, có nghĩa là
chúng hiển thị cho tất cả các nút mạng. Điều này mang lại mức độ tin cậy và
trách nhiệm cao.
-
Không thể thay đổi: Một khi một giao dịch được thêm vào blockchain, nó
khơng thể thay đổi hoặc chỉnh sửa. Điều này làm cho việc lưu trữ dữ liệu trên
blockchain rất an toàn.
3.1.2. Các ứng dụng của blockchain
-
Dịch vụ tài chính: Blockchain có thể được sử dụng để ghi lại các giao dịch
tài chính như thanh tốn, khoản vay và đầu tư. Điều này có thể làm cho các
giao dịch tài chính trở nên hiệu quả và an tồn hơn.
-
Quản lý chuỗi cung ứng: Blockchain có thể được sử dụng để theo dõi việc di
chuyển hàng hóa và vật liệu trong chuỗi cung ứng. Điều này có thể giúp cải
thiện sự minh bạch và hiệu quả trong chuỗi cung ứng.
-
Chăm sóc sức khỏe: Blockchain có thể được sử dụng để lưu trữ và chia sẻ hồ
sơ y tế. Điều này có thể cải thiện hiệu quả cung cấp dịch vụ chăm sóc sức
khỏe và giúp bệnh nhân dễ dàng truy cập vào hồ sơ y tế của mình.
9
3.1.3. Cách hoạt động của công nghệ blockchain
Công nghệ blockchain hoạt động bằng cách lưu trữ dữ liệu trong các khối.
Mỗi khối chứa một số giao dịch cùng với một mã hash của khối trước đó. Mã hash
này là duy nhất và được sử dụng để liên kết các khối với nhau.
Mỗi một giao dịch mới được thêm vào blockchain sẽ được xác minh bởi các
nút mạng. Nếu hợp lệ, giao dịch đó sẽ được thêm vào một khối mới. Khối mới sau
đó được liên kết với khối trước đó, tạo thành một chuỗi các khối nối tiếp nhau.
3.1.4. Ý nghĩa của cơng nghệ blockchain
Cơng nghệ blockchain có tiềm năng cách mạng hóa nhiều ngành cơng
nghiệp. Dù vẫn đang ở giai đoạn phát triển ban đầu, nhưng nó có tiềm năng tác
động lớn đến cách chúng ta sống và làm việc. Khi cơng nghệ tiếp tục phát triển,
chúng ta có thể mong đợi thấy những ứng dụng của blockchain mang tính đổi mới
và gây chấn động hơn nữa.
3.2.
Lập chỉ mục (Indexing)
Dữ liệu blockchain được lưu trữ trong một cơ sở dữ liệu phân tán, điều này
có nghĩa là dữ liệu không được lưu trữ tại một địa điểm duy nhất. Điều này làm cho
việc truy vấn và phân tích dữ liệu blockchain trở nên rất khó, vì nó u cầu tìm
kiếm qua tất cả các khối trong blockchain. Lập chỉ mục trên blockchain là quá trình
tạo ra một cấu trúc dữ liệu có thể tìm kiếm để truy xuất thơng tin từ dữ liệu
blockchain một cách hiệu quả. Bằng cách xây dựng bảng chỉ mục, ta có thể nhanh
chóng tìm kiếm và phân tích dữ liệu blockchain để thu được thơng tin hữu ích.
10
Có hai thách thức chính liên quan đến việc truy vấn và phân tích dữ liệu blockchain,
bao gồm:
-
Kích thước của tập dữ liệu blockchain ngày càng tăng.
-
Dữ liệu blockchain được lưu trữ theo cách phân tán.
Các giải pháp lập chỉ mục có thể khắc phục những thách thức này bằng cách tạo ra
một chỉ mục có thể tìm kiếm được dữ liệu blockchain. Chỉ mục này có thể được sử
dụng để truy vấn nhanh chóng và dễ dàng dữ liệu blockchain, từ đó phục vụ cho
nhiều mục đích, như:
-
Phát hiện gian lận
-
Phân tích dữ liệu
-
Phát triển ứng dụng
Lập chỉ mục là một thành phần quan trọng của công nghệ blockchain, vì nó giúp
truy vấn và phân tích dữ liệu blockchain một cách nhanh và hiệu quả.
3.3.
Các phương pháp lập chỉ mục
Hiện nay, có 3 phương pháp lập chỉ mục chính đang được sử dụng bao gồm:
-
Lập chỉ mục phân tán: sử dụng các giao thức như The Graph, cho phép tạo ra
các ứng dụng phân tán (DApps) có thể truy vấn dữ liệu blockchain mà không
cần phụ thuộc vào máy chủ trung tâm.
-
Lập chỉ mục tập trung: sử dụng các dịch vụ như Alchemy, Bitquery, cung
cấp một chỉ mục tập trung của dữ liệu blockchain có thể được truy cập bởi
DApps.
-
Lập chỉ mục kết hợp (hybrid) kết hợp các kỹ thuật lập chỉ mục phân tán và
tập trung để cung cấp sự kết hợp tốt nhất của cả hai.
11
3.4.
The Graph
The Graph là một giao thức phi tập trung giúp giải quyết những khó khăn
trong việc lập chỉ mục và truy vấn dữ liệu blockchain. Nó cho phép truy xuất những
dữ liệu phức tạp mà rất khó có thể truy cập trực tiếp từ blockchain theo cách thông
thường. Các phương pháp truy vấn thông thường của dữ liệu blockchain có nhược
điểm là rất tốn thời gian và có giới hạn trong khả năng. The Graph giải quyết vấn đề
này bằng cách cung cấp một giao thức phi tập trung để lập chỉ mục và truy vấn dữ
liệu blockchain thông qua các API, được gọi là "subgraph". Các subgraph này có
thể được truy vấn bằng cách sử dụng GraphQL API phổ biến, cho phép truy xuất dữ
liệu blockchain một cách hiệu quả và nhanh chóng. The Graph cung cấp cả dịch vụ
được lưu trữ và giao thức phi tập trung, đều được hỗ trợ bởi ứng dụng mã nguồn mở
Graph Node. Với The Graph, nhà phát triển có thể truy cập và phân tích dữ liệu
blockchain một cách dễ dàng, nâng cao khả năng của các ứng dụng phi tập trung.
12
3.4.1. Tổng quan về mạng lưới The Graph
Hình 3.1: Cấu trúc mạng lưới The Graph
Các thành phần chính của mạng lưới The Graph gồm có:
-
Consumer: dApp sử dụng API của The Graph để truy cập vào data cần được
truy vấn.
-
Indexer: thành phần không thể thiếu của mạng lưới The Graph, đóng vai trị
như các nút mạng. Indexer sử dụng phần mềm Graph Node để lập chỉ mục
data từ blockchain theo subgraph và lưu trữ vào database, nhận thù lao bằng
GRT khi data được consumer sử dụng.
-
Curator: hướng indexer ưu tiên lập chỉ mục những subgraph nào đó bằng
cách đặt thêm GRT vào phần thưởng của các subgraph đó.
-
Delegator: “đầu tư” GRT cho các indexer để hưởng một phần phần thưởng
của indexer.
13
-
GRT: viết tắt cho Graph Token, là đơn vị tiền ảo được sử dụng trong mạng
lưới The Graph, là một token thuộc loại ERC-20.
-
Subgraph: là một tập hợp cụ thể các hợp đồng thông minh (smart contract)
và sự kiện (event) trên blockchain được chọn để lập chỉ mục và truy vấn. Nó
được dùng để định nghĩa dữ liệu, xác định những dữ liệu nào cần được thu
thập, cách ánh xạ (map) dữ liệu từ các sự kiện trên blockchain và cách tổ
chức và lập chỉ mục để truy vấn một cách hiệu quả.
3.4.2. Graph Node
Graph Node là một phần mềm giúp người sử dụng tham gia vào mạng lưới
The Graph với vai trò là một nút mạng và là một indexer. Mạng lưới The Graph
được hình thành nhờ vào các kết nối ngang hàng (peer-to-peer) trực tiếp từ nút
mạng này đến nút mạng khác một cách phi tập trung. Mỗi nút mạng trong mạng
lưới The Graph đóng góp vào sự phát triển của mạng lưới bằng cách lập chỉ mục và
cung cấp dữ liệu cho người sử dụng.
Hình 3.2: Sơ đồ luồng dữ liệu của dApp sử dụng Graph Node
14
3.4.3. Cài đặt Graph Node
-
Tải về và cài đặt Docker Desktop.
-
Tải về phiên bản mới nhất của Graph Node.
-
Giải nén file vừa mới tải và truy cập vào thư mục vừa được giải nén.
-
Tiếp tục truy cập vào thư mục “docker”.
-
Mở file “docker-compose.yml” bằng công cụ chỉnh sửa văn bản và thay đổi
nội dung của mục “ethereum” thành địa chỉ URL của nút mạng trong mạng
lưới blockchain mà ta muốn index. Graph Node sẽ sử dụng URL này để thiết
lập kết nối đến nút mạng đó và đọc dữ liệu từ blockchain.
Trong nghiên cứu này em sử dụng dịch vụ của Alchemy để có URL như sau:
ethereum:’testnet: />9Zov9bKf9oHh277E’
-
Mở terminal và truy cập vào thư mục docker bên trong folder graph-node
vừa được giải nén bên trong terminal.
-
Chạy lệnh “docker-compose up”
-
Kiếm tra kết nối đến blockchain (xem Hình 3.3)
15
Hình 3.3: Graph Node kết nối và đọc được dữ liệu block mới nhất từ Goerli testnet
16
3.4.4. Tạo và lập chỉ mục Subgraph
Giả sử ta có một dapp sử dụng một smart contract để hoạt động, smart
contract đó sẽ phát ra các event mà ta có thể lập chỉ mục để dapp đó có thể truy vấn
một cách nhanh chóng. Để lập chỉ mục những event ta cần thì trước hết ta phải tạo
subgraph. Quá trình tạo subgraph diễn ra như sau:
-
Cài đặt Graph-CLI:
# NPM
$ npm install -g @graphprotocol/graph-cli
# Yarn
$ yarn global add @graphprotocol/graph-cli
-
Cài đặt Yarn nếu chưa có sẵn.
-
Lấy địa chỉ của smart contract phát ra tín hiệu của những event mà ta muốn
lập chỉ mục.
-
Mở Terminal và chạy lệnh “graph init”, nhập các thông tin liên quan như tên
subgraph, địa chỉ thư mục, tên mạng lưới blockchain, địa chỉ contract (đã lấy
ở trên), rồi tiếp tục với các giá trị mặc định và đợi lệnh chạy.
Đây là câu lệnh em đã dùng để khởi tạo subgraph:
graph init testBalancerSubgraph --protocol ethereum --product subgraph-stud
io --network goerli --from-contract 0xBA12222222228d8Ba445958a75a070
4d566BF2C8
-
Kết quả sẽ tương tự như Hình 3.4.
-
Lưu ý: riêng với mạng Goerli, khi tạo subgraph xong phải vào thư mục
subgraph vừa mới tạo (trong ví dụ này là newTestSubgraph), mở file
subgraph.yaml bằng công cụ chỉnh sửa văn bản, thay đổi trường “network”
từ “goerli” thành “testnet”.
17
Hình 3.4: Màn hình Terminal cho thấy khởi tạo subgraph thành công
18
Sau khi tạo subgraph thành cơng ta có thể xem và chỉnh sửa nội dung của các
event có thể được thu thập từ contract. Mặc định subgraph sẽ thu thập tất cả các
event dược contract đó phát ra, nhưng ta có thể thay đổi, giảm bớt số event được thu
thập, hoặc biến đổi event đó thành dữ liệu khác có ý nghĩa hơn trong database để
tăng hiệu quả truy vấn. Để làm được những điều đó ta cần thay đổi 3 file:
schema.graphql, src/contract.ts, subgraph.yaml
Ví dụ ta sử dụng subgraph được tạo từ contract 0xBA12222222228d8Ba445
958a75a0704d566BF2C8[1] , contract này có nhiều loại event khác nhau, ta có thể
chọn một vài event để lập chỉ mục bằng cách thay đổi nội dung file subgraph.yaml.
Hình 3.5: Một phần nội dung file subgraph.yaml
1
Một trong những địa chỉ contract của protocol Balancer
19
Theo như hình 3.5, subgraph này sẽ lập chỉ mục 2 loại event:
ExternalBalanceTransfer và FlashLoan. Các event đó đều có hàm để xử lý tương
ứng là handleExternalBalanceTransfer và handleFlashLoan, được định nghĩa trong
file src/contract.ts
Hình 3.6: Một phần nội dung file src/contract.ts
20
Đồng thời định nghĩa của các kiểu được định nghĩa trong file
schema.graphql, ta có thể thay đổi những trường cũng như kiểu ở trong file
schema.graphql để tăng hiệu quả truy vấn. Để ví dụ em đã thay đổi một số trường
của 2 kiểu ExternalBalanceTransfer và FlashLoan thành tiếng Việt.
Hình 3.7: Một phần nội dung file schema.graphql
21
Sau khi thay đổi nội dung file schema.graphql, ta sẽ phải thay đổi nội dung
file src/contract.ts để tương thích với những thay đổi ở file schema.graphql.
Hình 3.8: File src/contract.ts sau khi thay đổi
Graph Node hỗ trợ chúng ta trong việc ánh xạ các event trên blockchain
thành những kiểu dữ liệu do người dùng tùy chỉnh. Ngồi ra ta cịn có thể thêm
những bước xử lí dữ liệu cần thiết vào trong các hàm xử lí. Khi Graph Node phát
hiện những event ta cần, Graph Node sẽ thực hiện ánh xạ các event đó và chuyển
đổi thành các kiểu do ta tùy chỉnh và lưu vào database để hỗ trợ việc tra cứu dễ
dàng hơn.
22
Sau khi đã thay đổi nội dung các file, ta cần phải chạy lệnh “graph codegen”
để Graph Node tái tạo lại các file cần thiết. Nếu lệnh chạy không thành công và xảy
ra lỗi, ta sẽ cần phải kiểm tra lại các file vừa chỉnh sửa, quá trình này thường lỗi ở
file schema.graphql.
Hình 3.9: Lệnh “graph codegen” khi chạy lỗi, chú thích về lỗi được hiện ra
Sau khi đã chạy lệnh “graph codegen” thành công, ta sẽ tiếp tục chạy lệnh “graph
build” để biên dịch (compile) các file vừa tạo. Nếu quá trình này lỗi, ta sẽ phải
chỉnh sửa lại các file mã nguồn như src/contract.ts.
23
Hình 3.10: Lệnh “graph codegen” khi chạy thành cơng
24
Hình 3.11: Lệnh “graph build” chạy thành cơng
25