TheGraph - 1

정태수·2023년 7월 20일
0

TheGraph

목록 보기
1/2
post-thumbnail

IDO 프로젝트를 진행하는 중에 더그래프라는 서비스를 알게 되었다.

어떤 역할을 하는지에 대해 알아보자.

더 그래프(The graph)는 블록체인 생태계의 API 플랫폼이다.

작동방식

  1. A라는 Dapp이 이더리움 네트워크에 데이터를 올린다.

  2. 이 때, A가 제출한 스마트 컨트랙트에서 event 함수가 실행된다. 데이터가 올라간다고 알리는 것이다.

  3. 더 그래프의 노드(Graph node)는 계속해서 이더리움 블록을 스캔하는 중이다. 그러다가 이벤트를 발견하고, 필요한 데이터인 것을 파악한다.

  4. 그래프 노드는 mapping handler를 발동해서 API에 필요한 데이터를 가져온다. 이 데이터는 API 사용에 적합한 방식으로 쌓인다.

Developer(개발자)
개발자는 블록체인 내부 데이터를 가져오는 서브그래프(Subgraph, API)를 개발한 후 더 그래프 위에 올리는 유저이다. 사실 더 그래프 위에 올라간 서브그래프가 없다면 더 그래프는 있으나 마나한 것이니, 개발자의 역할이 상당히 중요하다고 볼 수 있겠다.

작동방식에 대해 잘 설명한 글을 퍼왔는데 저는 실제 코드를 보면서 어떻게 작동하
는지에 대해 좀 더 깊게 파보겠습니다.

디앱에서 길이 두 갈래길이라 헷갈릴 수 있는데 transactions이 먼저 발생한다고 생각하면 이해하기 쉽다.

  1. 디앱에서 트랜잭션이 발생한다. 스마트 컨트랙트의 함수를 호출하고 subgraph에서 작성된 이벤트 리스너가 작동할 것이다.
  2. 트랜잭션 데이터가 그래프 노드에 적히게 된다.
  3. 그래프 노드는 이벤트가 발생했기 때문에 해당 데이터를 API를 통해 보내준다
  4. 이때 개발자가 미리 작성한 쿼리문에 의해 정해진 entity 형식으로 데이터가 축적된다.
  5. 디앱에게 전달된다. 블록체인 데이터를 편하게 사용할 수 있다.

더그래프 웹 로그 화면

계속해서 블록체인 블록을 감시하면서 원하는 정보에 대한 검색을 하고있다.
위 사진은 내 쿼리와는 관련없는 블록들을 스캔하는 모습.

위 사진은 내 쿼리와 관련있는 블록을 발견 및 event가 발생한 로그이다.

더그래프의 hosted service는 더그래프에서 운영하는 그래프 노드에서 내가 만든 쿼리문에 적합한 데이터를 제공해주고 있다. (폴리곤 메인넷)

그렇다면 어떻게 hosted service를 만들고 쿼리를 돌렸는지 알아보자.

https://thegraph.com/hosted-service

create subgraph를 선택하면 아래와 같은 UI 에서 subgraph를 생성할 수 있다.

이후 subgraph.yaml 에서 사용할 컨트랙트와 해당 컨트랙트의 startblocknumber를 지정해줌으로써 어떤 컨트랙트를 사용하는지에 대해 정해준다.

hosted service 생성이되면 위 사진과 같은 명령어들이 보이는데
Deploy에 있는 명령어를 subgraph.yaml 파일 설정완료하면 package.json에 deploy 스크립트에 넣어주면 hosted service에서 개발자가 정의해놓은 양식대로 API가 형성된다.

다음 글에서 실제로 웹에서 만든 subgraph를 가지고 어떻게 사용하는지 알아보겠습니다.

profile
프론트엔드 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

글이 잘 정리되어 있네요. 감사합니다.

답글 달기