본문 바로가기

[블록체인]/더그래프

[더 그래프(The Graph) 맛보기 시리즈 ①] 들어가며

1. 더 그래프(The Graph)란?

더 그래프는 블록체인상의 데이터를 인덱싱하고 쿼리하는 탈중앙화 프로토콜이다. 더 그래프는 쿼리가 어려운 데이터를 쉽게 쿼리할 수 있도록 도와주며, 중앙화된 서비스에 의존하지 않고 탈중앙 API 프로토콜을 사용하여 블록체인 네트워크상에 축적된 데이터에 정보요청을 중개한다.

 

- 인덱싱 : 데이터를 찾아 보기 쉽도록 일정한 순서로 나열하는 작업

- 쿼리 : 데이터를 보여달라고 요청하는 작업

 

더 그래프(The Graph)

 

1.1. 블록체인상의 데이터?

 

온체인 데이터는 블록체인 네트워크 위에서 생성되는 데이터를 의미한다. 온체인 데이터를 통해 어플리케이션이나 프로토콜을 설계할 수 있으며, 네트워크 현황을 분석하여 투자에 활용시킬 수 있다. 예를 들어 채굴자 데이터, OTC(장외거래) 데이터 등을 분석하여 비트코인의 상승과 하락을 예측해볼 수 있다.

 

 

1.2. 쿼리가 어려운 데이터를 쉽게 쿼리?

 

크립토키티를 사례로 들어보려고 한다.

 

- #1. 더 그래프 없이도 답변이 가능한 질문

  : "이더리움에 크립토키티가 총 몇 마리 존재해?"

  : "(특정) 크립토키티는 언제 태어났어?"

  -> 컨트랙트의 balanceOf 또는 getKitty를 참고하면 된다.

 

- #2. 더 그래프를 사용하면 수월하게 답변이 가능한 질문

  : “2018년 1월~2월에 태어난 크립토키티의 주인은 누구야?”

  -> Birth를 처리한 뒤에 각각의 크립토키티에 대한 ownerOf 메서드를 요청해야 한다.

 

크립토키티

 

  : “2018년 1월~2월에 태어난 크립토키티의 주인은 누구야?”

 

  -> 더 그래프가 해당 질문에 답하는 방법 (현재)

    : 미리 인덱싱된 subgraphs(더 그래프만의 용어)를 활용하여 시간을 단축한다.

    -> 크립토키티들의 출생일을 미리 정리해놓은 subgraph를 활용한다.

    -> 크립토키티들의 주인을 미리 정리해놓은 subgraph를 활용한다.

 

  -> 더 그래프가 해당 질문에 답하는 방법 (미래)

    : 질문에 대한 답변을 바로 제시할 수 있게끔 탈중앙화 프로토콜을 진화시킬 것이다.

 

 

1.3. Subgraph가 내용을 업데이트하는 방법

 

  1. 디앱은 스마트 컨트랙트의 트랜잭션을 통해 이더리움에 데이터를 축적한다.

  2. 스마트 컨트랙트는 트랜잭션을 처리하는 동안 이벤트를 생성한다.

  3. 그래프 노드는 새로운 블록이 생성될 때마다 이더리움을 스캔하고, subgraph에 추가할 만한 내용 또한 스캔한다.

  4. (추가할 만한 내용이 있다고 판단한) 그래프 노드는 제공된 맵핑 처리기를 실행한다. 이때 사용되는 모듈은 WASM(웹어셈블리)이다.

  5. 디앱은 노드의 GraphQL endpoint를 사용하여 블록체인에서 인덱싱된 데이터를 그래프 노드에 쿼리한다. 그래프 노드는 해당 데이터를 가져오기 위해 GraphQL 쿼리를 기본 데이터 저장소에 대한 쿼리로 변환하여 저장소의 인덱싱 기능을 사용한다.

  6. 디앱은 최종 사용자를 위해 데이터를 풍부한 UI로 나타내며, 해당 데이터는 이더리움에서 새로운 트랜잭션을 발행하는 데에 사용된다.

  7. 1부터 6까지를 반복한다.

 

더 그래프의 구조

 

 

 

[더 그래프(The Graph) 맛보기 시리즈 ②] 더 그래프 네트워크

이전 글에서 더 그래프가 블록체인상의 데이터를 어떻게 인덱싱하고 쿼리하는지 알아보았다. 그렇다면 더 그래프는 어떻게 탈중앙화를 구현할까? 2. 더 그래프(The Graph) 네트워크 2.1. 온체인 데

sam-jung.tistory.com