時間:2022-01-17|瀏覽:526
區(qū)塊鏈是一個分散的賬本,它記錄了數(shù)據(jù),但在瀏覽器中,交易被打包成塊,交易數(shù)據(jù)變成了哈希。在以太坊erc在20協(xié)議的作用下,我們可以看到轉(zhuǎn)賬交易等基本數(shù)據(jù)。
但對于用戶來說,如果瀏覽器沒有特殊顯示,只能查看區(qū)塊鏈的數(shù)據(jù)。在可能的需求中,區(qū)塊鏈上有許多類型的數(shù)據(jù),需要索引和查詢。
這些索引和查詢可以把數(shù)據(jù)進行統(tǒng)計,進行聚合顯示,幫助用戶使用。
在這部分,The Graph這是一個例子,一個專門從事索引和查詢的協(xié)議,理論上所有區(qū)塊鏈網(wǎng)絡(luò)都需要部署這樣的工具。
例如,The Graph在以太坊,很難直接查詢的數(shù)據(jù)是可能的。
像Uniswap具有復雜智能合同的項目和Bored Ape Yacht Club這樣的NFT在以太坊區(qū)塊鏈上存儲數(shù)據(jù)后,很難從區(qū)塊鏈上讀取基本數(shù)據(jù)以外的任何內(nèi)容。
例如 Bored Ape Yacht Club NFT,讀取合同可以獲取所有者信息、總供應量和內(nèi)容 URI等等,這些都是合同中的基本信息,不可能像搜索引擎一樣實現(xiàn)高級查詢和操作,如聚合、搜索和篩選。
因為如果你想獲得這些數(shù)據(jù),你必須處理交易員發(fā)布的所有事件,并使用代幣 ID 和 IPFS 哈希從IPFS存儲位置讀取元數(shù)據(jù),然后聚合。費時費力。
The Graph 通過分散協(xié)議解決了這個問題,可以索引區(qū)塊鏈數(shù)據(jù),實現(xiàn)高性能、高效的查詢。然后可以使用標準 GraphQL API 查詢這些 API(索引子圖)。
具體實現(xiàn)流程如下:
1.分散應用程序通過智能合約上的交易向以太坊添加數(shù)據(jù),智能合約在處理交易時發(fā)生一個或多個事件.
2.The Graph節(jié)點不斷掃描以太坊,尋找新塊及其可能包含的子圖數(shù)據(jù)。The Graph節(jié)點在這些塊中為子圖查找以太坊事件并運行映射處理程序。映射是一個 WASM 創(chuàng)建或更新模塊Graph Node 以響應以太坊事件的數(shù)據(jù)實體。
3.使用節(jié)點的分散應用程序GraphQL 端點查詢 Graph Node 從區(qū)塊鏈索引中獲取數(shù)據(jù)。Graph Node 反過來會 GraphQL 查詢轉(zhuǎn)換為查詢底層數(shù)據(jù)存儲,以利用存儲的索引功能獲取數(shù)據(jù)。分散的應用程序在豐富的用戶界面中向最終用戶顯示這些數(shù)據(jù),并在以太坊上發(fā)布新的交易。