Token History

토큰은 블록체인 애플리케이션을 만들 때 자주 쓰이는 요소입니다. 이미 여러 애플리케이션에서 토큰은 교환의 매개 혹은 계약의 증거로써 사용됩니다. 예를 들어, 블록체인 상에서 항공 마일리지를 취득하고 사용하거나 예술 작품 소유권을 토큰으로 발행해 거래할 수 있습니다.

토큰으로 구현된 포인트, 마일리지, 인증서, 상품권 및 교환권 등은 블록체인의 투명성과 불가역성을 바탕으로 위/변조되지 않았음이 보장됩니다. 토큰은 기존의 어느 특정 주체가 기록하고 제어하는 중앙형 시스템으로 구현된 것들과 근본적으로 다르며 발행, 사용, 교환/유통 측면에서 기존 비즈니스의 한계를 극복하고 새로운 사업 기회를 가져다줍니다.

하지만 토큰을 효과적으로 사용하는 것은 생각보다 어려운 일입니다. 토큰이 애플리케이션에 가치를 부여하려면 토큰이 언제 누구에게 전달되었는지 추적할 수 있어야 하기 때문입니다. 모든 기록은 블록체인에 안전하게 보관되어 있지만, 그 기록을 꺼내어 내가 원하는 형태로 볼 수 있다는 것은 또 다른 이야기입니다. Token History API는 블록체인 데이터를 가공하여 계정(Account)을 기준으로, 혹은 토큰을 기준으로 거래내역을 확인할 수 있는 API를 제공합니다.

Token History API

Token History API는 토큰 전송 기록을 추적하는 도구가 필요하다는 생각에서 시작되었습니다. Token History API는 KLAY, FT (KIP-7, Labeled ERC-20), NFT (KIP-17, Labeled ERC-721) 토큰의 정보와 기록을 조회하는 기능을 제공하여 사용자들이 특정 EOA의 KLAY 전송 기록을 확인하거나 EOA가 소유하고 있는 NFT의 조회 등을 수행할 수 있게 합니다.

Purpose

Token History API를 사용하면 블록체인 개발에 투입되는 시간과 비용을 크게 절감할 수 있습니다. 지금 이 순간에도 많은 블록체인 애플리케이션이 토큰 전송 내역을 기록하고 관리하는 데 소중한 자원을 쏟아붓고 있습니다.

만약 어떤 EOA가 KLAY를 보내고 받은 기록 중 최근 N개를 조회하고 싶다면 조회하고 싶다면 크게 다음 3가지 방법이 있을 것입니다:

Solution 1. 블록마다 연관 트랜잭션을 데이터베이스에 저장, 요청마다 데이터베이스 기록을 반환 (낮은 복잡도, 낮은 인프라 비용, 비효율, 낮은 유연성)

조회하고 싶은 EOA를 미리 알 수 있다면 이 방법이 가장 적합할 수 있습니다. 이 방법은 쉽게 구현할 수 있으며 데이터 기록에 필요한 인프라 비용도 적습니다. 하지만 거래 내역을 추적하고 싶은 EOA를 미리 알아야 하므로 이 EOA가 API에 등록된 시점 이후의 트랜잭션만 조회한다는 단점이 있습니다.

Solution 2. 모든 블록을 로컬에 저장, 요청마다 블록을 순환하며 연관 트랜잭션을 반환 (낮은 복잡도, 높은 인프라 비용, 비교적 효율, 비교적 유연)

Solution 1과는 달리 Solution 2는 모든 블록을 저장하기 때문에 모든 EOA의 KLAY 전송 내역을 조회할 수 있습니다. 구현은 쉬운 편이며 캐싱을 사용하면 트랜잭션 조회 요청에 빠르게 대응할 수 있어 비교적 효율적입니다. 하지만 이 방법은 블록 단위로 정보를 저장하므로 알고 싶은 KLAY 전송 내역 외 다른 정보들까지 저장합니다. 이러한 저장 방식은 비효율적인 인프라 사용으로 이어져 불필요한 비용이 발생합니다.

Solution 3. 모든 트랜잭션을 EOA 기준으로 데이터베이스에 저장, 요청마다 데이터베이스 기록을 반환 (높은 복잡도, 높은 인프라 비용, 높은 효율, 높은 유연성)

Solution 3의 경우 모든 EOA의 전송 내역을 조회 가능하고 필요한 정보만을 저장, 제공하며 저장된 정보를 사용해 다른 요청도 처리할 수 있으므로 가장 효과적입니다. 하지만 시스템 복잡도가 다른 방법들에 비해 높고, Solution 2만큼 비용이 발생합니다.

Token History API Solution

Token History API는 Solution 3을 구현한 시스템입니다. Soultion 3은 위 3가지 방법 중 가장 만들기 어렵지만 (1) 트랜잭션 조회 요청을 처리하고 (2) 수집된 데이터를 바탕으로 FT 거래내역 조회, NFT 소유권 조회 등 트랜잭션 기록을 바탕으로 다양한 기능을 구현할 수 있습니다. Token History API는 이를 바탕으로 블록체인 애플리케이션들이 시장에 쉽게 진입할 수 있는 개발환경을 만들 것입니다.

간단한 REST 요청을 Token History API에 전달하면 KLAY/FT 전송내역을 조회하고 NFT 소유권을 조회할 수 있습니다. 다음 페이지에서 Token History API 사용 방법을 소개합니다.

Token History API에서 조회할 수 있는 FT와 NFT는 각각 KIP-7, KIP-17 기준을 만족하는 컨트랙트로 사전에 Klaytn에 배포되어 있어야 합니다. ERC-20, ERC-721로 구현된 FT와 NFT는 라벨링(Labeling) 이라는 등록과정을 통해 Token History API에 조회 가능한 컨트랙트로 추가되어야 조회 가능합니다. 라벨링에 관한 자세한 내용은 추후 안내할 계획입니다.