什麼是 subgraph?(指南)
作者 Logan Ross
Subgraph 彙整特定應用程式的區塊鏈資料,讓全端開發者能快速存取。
區塊鏈是按時間順序記錄資料,不會考量特定應用程式的需求。過去,開發者若想顯示與其智能合約相關的資訊,就必須使用 JSON-RPC 逐區塊、逐交易地搜尋。
Subgraph 讓開發者能以簡單的方式即時存取鏈上資料,並協助開發者為使用者建立實用的應用程式互動功能。
本文將探討 subgraph,包括其功能、常見應用、優勢、可用的服務提供商,以及協助開發者上手使用 subgraph 的資源。
什麼是 Subgraph?
Subgraph 彙整特定應用程式的區塊鏈資料,讓前端開發者能快速存取。
Subgraph 透過 GraphQL API 開放給開發者使用,讓使用者能即時查詢其合約上發生的交易資料。對於需要建構強大前端介面的複雜自訂智能合約開發者來說,subgraph 特別有用。
舉例來說,若要查詢過去 24 小時內某個 Uniswap v3 流動性池中的所有交易,Uniswap 只需定義其 schema、將事件資料建立索引以產生 subgraph,然後使用產生出來的 GraphQL API 來查詢其 subgraph,即可靈活且有效率地取得區塊鏈資料。
Subgraph 讓開發者能依據自身需求篩選與排序資料,只擷取對其 dapp 重要的資訊。相較於直接向全節點或 archive 節點請求資料,subgraph 透過預先編譯與索引資料來加快查詢速度,讓資料查詢更有效率。
Subgraph 如何運作?
Subgraph 的「mapping」是一些腳本,用來指示節點依照 subgraph 的「manifest」,從每個新發現的區塊中擷取相關資料。這些新資料接著會被加入 subgraph,並依照 subgraph 的「schema」所定義的方式,透過 GraphQL 呼叫提供給開發者使用。
首先,我們必須理解 subgraph 的基本架構、其組成部分,以及它們彼此如何互動。
什麼是 Subgraph manifest?
manifest 包含資料來源、模板,以及一些 subgraph 的中繼資料(例如說明、儲存庫等)。manifest 定義了 subgraph 所索引的智能合約、這些智能合約上的相關事件,以及如何將事件資料轉換為 Graph node 儲存並可供查詢的實體。
什麼是 Subgraph schema?
schema 說明了 subgraph 資料的組織方式,以及如何用 GraphQL 查詢這些資料。schema 應定義各個實體以及每個實體的結構化資料。
舉例來說,若你正在為 Uniswap v3 池建立即時分析用的 subgraph,你的實體可能會是一個池,而 schema 就會定義該池的資產、名稱、智能合約地址、手續費等。
什麼是 Subgraph mapping?
mapping 是一段 AssemblyScript 程式碼,每當伺服器找到 manifest 中指定的事件時就會被呼叫。mapping 定義了負責轉換事件或呼叫傳來的資料、並將其儲存到 Graph node store 的事件處理器。
Subgraph 有哪些常見用途?
Subgraph 經常被用於 DeFi、NFT、DAO 以及其他各種鏈上應用程式。
自訂智能合約索引
想為自訂智能合約(特別是那些不遵循 ERC1155 或 ERC721 NFT 等標準的合約)建立資料索引的區塊鏈應用程式開發者,經常會建立 subgraph。對於需要搜尋、篩選等功能的前端使用者介面開發者來說,自訂索引也格外重要。
去中心化金融(DeFi)
DeFi subgraph 常被用於應用程式中,以索引並查詢代幣價格、匯率、流動性、交易量等區塊鏈資料。使用 subgraph 的 DeFi 應用程式能讓使用者即時取得最新資料,並促成高效率的交易與其他金融操作。
非同質化代幣(NFT)
NFT subgraph 可用來索引並查詢 NFT 資料,例如結合鏈下資料的所有權、來源,以及交易紀錄。這能協助 NFT 市場與其他應用程式,為買賣及交易 NFT 的使用者提供更順暢的體驗。
去中心化自治組織(DAO)
與中心化機構不同,去中心化自治組織(DAO)是由分散社群運作的組織。由於大部分 DAO 的決策都在鏈上進行,DAO subgraph 對於讓成員能正確投票並檢視資料而言至關重要。
遊戲
以區塊鏈為基礎的遊戲 經常需要即時存取使用者帳戶餘額、遊戲狀態、遊戲內物品等資料。這些資料可透過 subgraph 建立索引並查詢,讓遊戲玩法及其他功能更有效率、反應更靈敏。
使用 Subgraph 開發有哪些好處?
對全端開發者來說,subgraph 是一種非常簡單的區塊鏈資料索引範式。只要寫一些 AssemblyScript 程式碼即可上手!若使用託管方案,還會附帶後端,開發者不需要自行運行資料庫和伺服器。
以下是使用 subgraph 開發的其他幾項優點:簡單性、相容性,以及韌性。
1. Subgraph 的簡單性
Subgraph 是可供查詢的特定應用程式資料資料庫。使用託管的 subgraph 作為資料後端,能為開發者省下自行建立資料庫的時間與成本。
Subgraph 分別以 AssemblyScript 和 GraphQL 來定義與存取。對全端開發者而言,這些通常是熟悉的範式,讓 subgraph 對於新進的 web3 開發者來說也容易上手。
2. 與多個區塊鏈的相容性
Subgraph 的優勢在於能與眾多相容於 EVM 的區塊鏈網路搭配運作,讓開發者能從多個來源取得資料。因此,去中心化應用程式可以被設計成能跨多個區塊鏈網路運行,提升彈性與可擴展性。
雖然每個 subgraph 只從一條鏈擷取資料,但開發者可以使用類似的 schema 與 mapping,以最少的工程成本將 subgraph 部署到不同的受支援區塊鏈網路上。透過 graph-cli 或支援此功能的服務提供商,subgraph 查詢也可以跨鏈進行。
3. 更高的安全性與韌性
使用去中心化的索引協定來查詢 subgraph,讓開發者可以選擇為其應用程式維持完整的全端去中心化。雖然使用去中心化版本與託管版本的 subgraph 之間存在效能上的取捨,但擁有多種選項能讓開發者針對特定使用情境進行優化。
透過去中心化索引器,應用程式可以藉由執行來自不同服務提供商的多個 subgraph,降低對單一資料來源的依賴,使其較不容易因單一來源遭受攻擊或停機而受影響。Graph 協定即提供此類服務。
Subgraph 也可以被設計成過濾掉潛在有害的資料,為應用程式增加一層額外的保護。透過運行多個 subgraph,應用程式的資料基礎架構可以變得更安全、更具韌性。
使用 Subgraph 建構應用程式有哪些取捨?
雖然現有的 subgraph 使用起來很簡單,但建立與除錯它們可能相當複雜,而且可能受限於成本或設計上的考量。
1. Subgraph 開發與除錯
要有效使用 subgraph,開發者必須學習一套複雜的生態系統,並因缺乏工具與可見性而面臨 subgraph 除錯上的挑戰。使用 subgraph 開發的另一項挑戰是,mapping 會被轉譯成 WebAssembly,這增加了除錯 subgraph 的難度!
2. 自訂化的限制
雖然 subgraph 在索引哪些資料、以及如何查詢方面提供了相當大的彈性,但自訂化程度可能有限。如果 dapp 有非常嚴格的索引或查詢需求,可能就需要完全客製化的資料索引與轉換解決方案。
3. 成本
對於需要選擇新技術解決方案的應用程式開發者來說,成本是一項重要的決策因素。雖然相較於 JSON-RPC,使用 subgraph 能讓查詢區塊鏈資料變得更容易、更快速,但它會帶來額外的成本,包括支付索引與查詢服務的費用,長期累積下來可能相當可觀。
4. 索引速度
資料量龐大的應用程式開發者,經常將索引速度列為使用 subgraph 時的挑戰之一。索引速度不僅會隨資料的數量與複雜程度而變化,也會因你所使用的索引解決方案而有所不同。
哪些是最好的 Subgraph 服務提供商?
在這個領域中,較知名的服務提供商包括 The Graph、Goldsky,以及 ChainStack。
The Graph
The Graph 讓開發者能以具擴展性且符合成本效益的方式,產生並查詢區塊鏈資料的子集合。
Subgraph 服務提供商可以利用 The Graph 的工具與基礎架構來建立、部署並維護 subgraph,開發者則可以輕鬆透過 The Graph 的 GraphQL API 進行查詢。The Graph 中的 subgraph 服務被設計成具彈性且可設定,讓開發者能索引並查詢來自任何區塊鏈或資料來源的資料。
要將 subgraph 部署到 The Graph,主要有三種方式:
- 自行架設
- The Graph Hosted Service
- Subgraph Studio
1. 自行架設
開發者可以自行架設組成 subgraph 生態系統的各項元件(`graph-node` 程式碼庫),並將其 subgraph 部署到這套自行架設的系統上。
2. The Graph 的 Hosted Service
如果開發者不想自行運行基礎架構,可以免費將其 subgraph 部署到 The Graph Hosted Service。這對新成立的小型團隊來說是不錯的選擇,因為使用簡單,而較低的可靠度和較慢的速度是可以接受的。不過,The Graph 的 hosted service 目前正逐步淘汰中。
3. Subgraph Studio
開發者可以透過 Subgraph Studio 產品,將其 subgraph 部署到 The Graph 的去中心化網路,此方式會用到 The Graph 的代幣。不過,這種部署方式並不支援託管方案的所有功能(例如沒有 IPFS 功能,且支援的鏈較少)。
Goldsky
Goldsky 讓工程師能為其應用程式建立即時資料串流,同時省去管理複雜的區塊鏈與資料串流基礎架構的需求。Goldsky 可以為區塊鏈或 subgraph 建立索引,依你的需求轉換資料,並即時將結果串流傳送到資料倉儲、webhook,或 API。
Chainstack
Chainstack Subgraphs 是一套速度極快、可用於正式環境的解決方案,讓你能部署自己的 subgraph,而不必經歷質押、委託及/或獎勵 subgraph 索引的麻煩。你可以信賴 Chainstack 提供快速的索引以及持續穩定的資料可用性。
Subgraph 開發資源
以下清單列出了幾項有助於開發者開始使用 subgraph 進行開發的實用資源:
1. The Graph 文件
The Graph 文件 是一份完整的資源,提供開發者開始為去中心化應用程式建立 subgraph 所需的所有知識。它提供完整的說明、教學,以及參考資料,內容涵蓋從建立開發環境,到部署與查詢 subgraph 的每個環節。
2. Subgraph 範例
The Graph 的官方 Github 儲存庫中,包含了用於索引與查詢區塊鏈網路資料(包括 Ethereum、Polygon、IPFS 等)的 subgraph 實作範例。它提供了一個簡單的 subgraph 模板以及範例程式碼,可依特定 dapp 的需求進行客製化。
3. Messari 標準 Subgraph
Messari 的 subgraph 儲存庫 為開發者提供了多種預先建置好的 subgraph,用於分析來自 Ethereum、BNB Chain 等知名區塊鏈網路的資料。它提供了歷史價格資料、鏈上指標等多種功能,對於想要善用 subgraph 的開發者而言,是相當有價值的資源。
我該使用 Subgraph 嗎?
如果你有想要監控的自訂智能合約,建立 subgraph 對你來說可能會是一個很好的解決方案。
Subgraph 彙整特定應用程式的區塊鏈資料,讓前端開發者能快速存取。
相關總覽
基礎設施2026年9月2日
鏈上 AI Agent 架構:五種建構模式
五種鏈上 AI Agent 建構模式,各附一個實作範例:錢包監控器、事件驅動反應器、投資組合再平衡器、偵測後執行的多 Agent 拆分,以及安全的主網上線前測試。
基礎設施2026年8月21日
代幣化股票,為開發者解析:xStocks、Dinari 與 Robinhood Chain 如何運作
為開發者解析代幣化股票:xStocks、Dinari dShares 與 Robinhood 股票代幣背後的資產、各自的鏈上運作方式,以及需要注意的重點。
基礎設施2026年8月20日
AI 程式撰寫代理如何選擇區塊鏈基礎設施
AI 程式撰寫代理會在其撰寫的程式碼中選定 RPC 提供者。Cursor、Replit 與 Claude Code 如何選擇區塊鏈基礎設施,以及如何引導它們做出選擇。

打造區塊鏈魔法
Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。