체인훅: 리오그-인지(Reorg-Aware) 트랜잭션 인덱서

Logan Lee
스택스 한국 블로그
6 min readAug 21, 2023

체인훅(Chainhook)은 체인의 포크 또는 *리오그에 관계없이 신뢰할 수 있는 블록체인 데이터를 확보하고 온체인 이벤트에 실시간으로 반응하는 트리거를 생성할 수 있도록 돕는 기능입니다.

*리오그: 블록체인 네트워크에서 동시에 발생한 블록 분기를 해결하여 새로운 메인 체인을 형성하는 과정

비트코인과 웹 3 제품을 개발하는 데에는 여러 어려움이 있지만, 그중에서도 가장 큰 문제 중 하나는 바로 ‘신뢰할 수 있는 블록체인 데이터를 어떻게 획득할 수 있을까’ 하는 것입니다. 많은 개발자들이 이 문제를 해결하기 위해 자체 블록체인의 상태(chainstate) 인덱스를 유지하고 있지만, 이는 높은 저장 비용을 유발하는 것은 물론, 경우에 따라서는 최신 상태를 유지하는것 조차 어려울 수 있습니다. 뿐만 아니라 블록체인 상태 정보의 리오그는 생각보다 자주 발생합니다. 애플리케이션들은 이러한 리오그가 발생할 때마다 전체 체인을 다시 인덱싱해야 하기 때문에 많은 시간을 소모해야만 합니다.

체인훅은 이와 같은 문제를 두 가지 방식으로 해결합니다:

  • 보다 효율적인 인덱싱을 제공하는 엔진 채택
  • **IFTTT 로직을 앱 내에서 구축할 수 있도록 웹훅(Webhook) 스타일의 트리거 제공

*IFTTT: ‘If This Then That’이라는 뜻을 가진 웹 기반의 자동화 서비스로, 다양한 앱, 서비스 및 장치 간에 연결을 설정하고 조건을 생성하여 자동화된 작업을 수행할 수 있도록 돕는 플랫폼입니다.

체인훅이란?

체인훅은 오픈 소스 엔진으로, 많은 정보들 중 원하는 정보만 인덱싱하여 리오그 방지(Reorg-proof) 데이터베이스를 구축할 수 있게 합니다. 뿐만 아니라 블록체인 데이터에서 추적하려는 온체인 데이터를 지정해 가벼운 수준의 인덱스를 생성할 수 있도록 합니다. 이를 통해 개발자들은 스토리지 관리 부담과 인덱스 생성에 걸리는 시간을 모두 줄여 더 빠른 작업을 수행할 수 있습니다.

체인훅을 활용한다면 아주 쉽게 원하는 정보만 가져올 수 있는 지속 가능한 인덱스를 구현할 수 있습니다.

체인훅을 활용한다면 가벼운 수준의 데이터베이스만을 활용해 더 빠른 쿼리 결과를 얻을 수 있습니다. 이를 통해 최종 사용자들의 응답 시간을 개선하고, 더 나은 개발자 경험 사용자 경험을 제공합니다.

뿐만 아니라 체인훅은 포크(fork)를 인식합니다. 체인훅은 가능한 모든 체인의 포크를 저장하고, 새로운 온체인 이벤트가 발생할 때마다 해당 포크들의 비교를 통해 현재 유효한 체인을 감지하고 이를 반영합니다. 리오그가 발생하는 경우, 체인훅은 자동으로 잘못된 블록을 롤백하고 새로운 블록을 계산합니다.

체인훅은 독립적인 개발 도구로써 활용될 수도 있고, 비트코인 및 스택스 블록체인에서 데이터를 추출하여 애플리케이션 내에서 IFTTT 로직을 트리거하는 서비스로써도 활용될 수 있습니다.

IFTTT 로직 트리거란?

체인훅은 강력한 인덱서일 뿐만 아니라, 여러 개의 개별 체인훅을 사용하여 이벤트 기반의 고급 아키텍처를 만들 수 있도록 하는 핵심 기능이기도 합니다. 각 체인훅 트리거들은 모든 블록 트랜잭션을 필터링 할 수 있으며, 필터링 된 트랜잭션들을 대상으로 적용되는 규칙을 지정할 수도 있습니다:

  • 일정량의 SIP-10 토큰이 전송되었을 경우
  • 특정 주소가 스택스 또는 비트코인 블록체인에서 토큰을 수신한 경우
  • 컨트랙트에서 특정 이벤트가 발생한 경우
  • 특정 컨트랙트의 트랜잭션이 발생한 경우
  • 특정 비트코인 주소에서 특정 수량의 BTC가 수신된 경우 등

체인훅은 이와 같은 이벤트가 발생할 경우 데이터베이스나 특정 스마트 컨트랙트가 작동하게끔 할 수 있습니다.

예를 들어, 비트코인 대출 프로토콜인 제스트(Zest)는 체인훅을 사용하여 비트코인과 스택스 블록체인 양쪽에서 이벤트 발생 여부를 확인합니다.

제스트는 유동성 풀을 생성하고 조정하는 스마트 컨트랙트를 사용하여 대출 자금을 조달하고, 비트코인 유동성 공급자에게 보상을 분배하고, 인출을 처리하는 모든 케이스를 체인훅을 통해 실시간으로 트리거합니다. 달리 말해 제스트는 앱 내에서 발생하는 이벤트들을 체인훅을 통해 안정적이고 탄력적인 방식으로 처리할 수 있게 된 것입니다.

즉, 체인훅은 온체인 동작에 해당하는 IFTTT 로직을 트리거할 수 있게 해주는 기술입니다. 이 모든 과정을 별도의 종합적인 블록체인 인덱서를 만들지 않고도 가능하게 하는 것이 체인훅의 큰 장점이라 할 수 있습니다.

개별 체인훅들은 마치 온체인에서 작동하는 IFTTT 서비스와 같다 생각할 수 있습니다.

이제 더 이상 애플리케이션 아키텍처 내에서 확장성 없고, 불안정하며 유지 보수가 어려운 IFTTT 코드를 사용할 필요가 없습니다. 신뢰성 있고 리오그에 강하며 사용자 지정 가능한 로직을 제공하는 체인훅을 활용한다면 블록체인 제품을 편하게 개발할 수 있습니다.

체인훅을 활용한 개발

트랜잭션 인덱싱 엔진 및 실시간 블록체인 이벤트에 반응하는 사용자 정의 트리거로써 체인훅을 사용해 볼 수 있는 몇 가지 방법이 있습니다.

  • 깃허브 가이드를 따라 체인훅을 로컬 환경에 설치할 수 있습니다. 자세한 가이드는 아래 ‘체인훅 설치 가이드 영상’을 참고해 주시기 바랍니다:

히로 플랫폼을 사용하면 별도의 설치 없이 웹 브라우저에서 스마트 컨트랙트를 생성하고 배포할 수 있습니다.

히로 플랫폼은 스택스 체인의 스마트 컨트랙트를 생성, 빌드, 배포할 수 있는 웹 호스팅 개발자 환경을 제공해 아이디에이션 단계에서 메인넷 단계에 이르기까지 예측 가능하고 반복 가능한 방식으로 제품 개발을 할 수 있도록 돕는 플랫폼입니다.

히로 플랫폼은 콘셉트 단계에서 메인넷 배포까지 도달하는 설치 및 단계 수를 줄여 생산성을 높입니다. 지난달, 우리는 히로 플랫폼에 신규 기능인 ‘예약 배포 기능’을 출시했습니다. 이번 체인훅 업데이트를 통해 보다 더 많은 기능을 개발자들에게 제공할 수 있음을 뜻깊게 생각합니다. 히로 플랫폼의 체인훅을 통해 모든 개발자들은 크로스 체인 상호작용 기능을 간단하게 구현할 수 있게 되었습니다. 아래 데모 비디오를 통해 플랫폼에서 체인훅을 설정하는 방법에 대해 더 자세히 확인하실 수 있습니다:

더욱 자세한 내용은 히로 플랫폼 문서를 확인해주시기 바랍니다.

결론

히로는 개발자들이 비트코인 위에서 흥미로운 애플리케이션을 구축할 수 있도록 지원하고 있습니다. 이번 체인훅 업데이트를 통해 애플리케이션에서 신뢰할 수 있는 블록체인 데이터를 얻기 위해 필요한 시간, 에너지 및 운영 부담 을 절감해 개발자들의 어려움을 해소했습니다. 이제 개발자들은 어떤 트리거를 자동화할지 고민하고, 이를 통해 어떤 댑을 만들어야 할지 고민하는 데에 온전히 집중할 수 있게 되었습니다. 여러분들께서 체인훅을 활용해 어떤 것들을 만들어낼지 매우 기대하고 있습니다.

현재 체인훅은 비트코인 및 스택스 네트워크를 지원하고 있으며, 코드는 완전히 오픈 소스입니다. 코드를 살펴보고 활용해 보시면서 느낀 점들에 대해 공유해 주시면, 이를 바탕으로 제품을 개선하기 위해 최선을 다하겠습니다.

원문: https://www.hiro.so/blog/introducing-chainhook-a-reorg-aware-transaction-indexer-for-bitcoin-and-stacks

--

--