TL;DR : The Graph는 블록체인 데이터 인덱싱, 쿼리 프로토콜입니다. 개발자가 손쉽게 API(Subgraph) 형태로 데이터에 접근할 수 있습니다. 모든 Subgraph는 GraphQL을 사용해서 요청합니다. The Graph 생태계에는 Developers, Indexers, Delegators, Curators라는 4가지 역할들이 있으며, 네이티브 토큰인 GRT를 이용해 탈중앙화 네트워크를 유지하고 있습니다.
The Graph란
The Graph는 탈중앙화 된 블록체인 데이터 인덱싱/쿼리 프로토콜입니다. 이더리움, 폴카닷, 팬텀, 니어 같은 메인넷 네트워크에 존재하는 데이터를 인덱싱하고 데이터에 더 쉽게 접근할 수 있게 만들어주는 서비스라고 보시면 됩니다.
The Graph는 웹3 생태계에서 API와 쿼리 레이어를 담당해 여러 블록체인의 탈중앙화에 기여하고 있으며, 디앱 개발자들이 디앱을 만들 때 데이터를 더 유용하게 쓸 수 있게 해주는 역할이기도 합니다.
현재 수백개의 서브그래프가 The Graph 네트워크 위에 존재하며, 서브그래프 익스플로어 에서 확인해보실 수 있습니다.
블록체인 인덱싱
The Graph를 인덱싱 프로토콜로 설명한만큼 블록체인에서의 인덱싱에 대해 짚고 넘어가려고 합니다.
(인덱싱이라는 개념 자체에 대해 알고싶다면, 이 글을 참고해보세요.)
먼저 블록체인에 대해 짚고 넘어가보겠습니다. 블록체인은 데이터들을 포함하고 있는 일련의 블록들의 집합이자 상태 머신인데요.
하나의 블록에는 트랜잭션, 이벤트 같은 정보가 담겨 있으며 선형적으로 이 블록들이 생성됩니다. 블록은 생성된 순서대로 연결되어 체인을 형성하지만, 인접한 블록에 관련된 정보들이 담겨있다는 보장은 없습니다. 예를 들어 A라는 디앱에서 거래1, 거래2를 수행해 2개의 블록 안에 그 정보가 각각 담겨졌다고 해도, 인접한 2개의 블록에서 그 정보들을 조회 할 수 있다는 보장은 없습니다.
즉, 블록체인의 근본적인 설계 구조 상, 내가 보고싶은, 적절한 데이터들을 찾는 것은 어렵습니다.
필요한 데이터들을 찾아서 일련의 데이터 집합을 구성하기 위해선, 체인의 전체 블록들을 모두 조회해야 할 수도 있습니다.
이는 퍼포먼스 관점에서 봤을 때 굉장히 비효율적이고, 시간 소비가 많은 것이죠. 이런 검색 문제를 해결하기 위해 블록체인 인덱싱이 등장했습니다.
블록체인 인덱싱이란, 블록체인의 트랜잭션, 이벤트 같은 데이터를 별도의 큐에 넣어 이벤트가 감지되면 별도의 스토리지에 담아 사람들이 데이터들을 필터링하고, 쿼리할 수 있게 만들어주는 것을 의미합니다.
인덱싱을 이용해 데이터를 캐싱해두면, 사람들이 좀 더 빨리 블록 데이터에 접근할 수 있고, 데이터를 구조화 할 수 있 습니다.
예를 들어, ‘ERC721로 구현된 NFT A의 특성 X를 가진 계정 주소들’ 같은 데이터를 조회할 때, 인덱싱을 활용하면 관련 데이터를 더 쉽게 찾을 수 있습니다.
Etherscan 같은 explorer가 대표적인 인덱싱 서비스의 예시입니다. Etherscan에서 계정 주소를 입력하면 그 계정이 갖고있는 트랜잭션 내역, 이벤트 내역들을 한번에 조회할 수 있습니다.
The Graph의 유용성
The Graph는 데이터 인덱싱 인프라를 탈중앙화시켜서 분산된 노드에 데이터를 저장하고, 데이터 쿼리 기능을 API로 만들어 누구나 쉽게 블록체인의 데이터에 접근할 수 있게 만들었습니다.
API 호출 뿐만 아니라, explorer에 구축된 Query playground를 이용해 데이터를 조회해볼 수도 있어 접근성이 뛰어납니다.
The Graph가 있기 전에는 디앱 개발자들이 직접 인덱싱 서버를 구축해서 필요한 데이터를 찾거나 중앙화된 서비스를 사용해야 했지만, The Graph는 이를 탈중앙화 네트워크로 만들어버려 블록체인 생태계의 탈중앙성을 극대화하는데 일조했습니다. 특히 The Graph의 큐레이팅 시스템은 자연스럽게 좋은 서브그래프들의 사용을 장려하기 때문에, 사용자들에게 신뢰를 제공합니다. 따라서 기존 기업이 일방적으로 제공하던 API보다 신뢰도가 높을 것이라 생각합니다.
다른 블록체인 네트워크처럼 The Graph 생태계에 참여하면, 그 보상으로 네이티브 토큰(GRT)을 받을 수 있습니다.
The Graph 생태계
The Graph의 생태계는 크게 4가지 역할로 나누어집니다.
Developers, Indexers, Delegators, Curators
Indexer는 노드를 운영해 네이티브 토큰인 GRT를 스테이킹하고, 만들어진 subgraph에 대한 indexing/query processing 서비스를 제공합니다. Indexer는 보상으로 query fee와 index reward를 받습니다.
Delegator는 Indexer에게 GRT를 스테이킹하고 그 보상으로 Indexe의 query fee 일부를 받습니다.
Curator는 Indexer에게 어떤 서브그래프 indexing에 유지 리소스를 분배하면 좋을지 signal을 전달해줍니다. signal이 많은 서브그래프는 high quality라는 증명이 되기 때문에 Curator의 signal이 중요합니다.
Developer는 The Graph 위에 올라갈 서브그래프를 개발합니다.
각각의 역할에 대해 더 알고싶으신 분들은 이 글을 참고하시면 좋을 것 같습니다.
글을 마치며
The Graph를 알게되고 사용한 이후부터, The Graph는 제가 가장 좋아하는 웹3 서비스 중 하나가 되었습니다. 저는 온체인 데이터가 굉장히 중요하다고 생각하기 때문에 앞으로 The Graph 같은 온체인 데이터 처리 인프라는 훨씬 중요해질 것이라 생각합니다.
이번 글에서는 The Graph가 무엇인지, 왜 유용한지, 생태계는 어떻게 구성되어있는지에 대해 알아보았습니다. 다음 글에서는 서브그래프 개발, 배포 및 쿼리하는 법에 대해 알아보겠습니다.