LikeTech Main.

KAS - Klaytn Api Service

Jihoon Na
Jihoon Na

Introduction

diagram

안녕하세요. 오늘은 KAS, 즉 Klaytn Api Service에 대해서 알아보도록 하겠습니다. 이름 그대로 클레이튼의 api 서비스인데요. 클레이튼 네트워크 위에 존재하는 블록체인 데이터를 Klaytn Endpoint Node 없이도 사용할 수 있게 해주는 api 서비스 입니다. 대체 구체적으로 뭘 하기 위해 있는걸까요?

모두 블록체인에 대해서는 얼핏 들어보셨을 것 같아요. 블록체인의 가장 큰 특징은 탈중앙 데이터베이스 시스템이라는 점입니다. 기존의 전통적인 서비스들은 중앙이 되는 데이터베이스가 존재했었죠. 예를 들면 은행이라던지 관공서라던지 관련 데이터를 가지고 있는 데이터베이스가 중앙에 하나 존재했었습니다. 그럴 경우 해당 데이터베이스가 해커에 의해서 침범 당한다면? 그대로 당할 수 밖에 없겠죠. 하지만 여러 곳에서 데이터를 가지고 있고 그것을 가지고 서로가 서로를 검증한다면 해커가 모든 컴퓨터를 해킹하지 않는 한 데이터를 안전하게 유지할 수 있습니다.

diagram

그라운드엑스에서 만든 클레이튼 네트워크도 위와 같은 기본 구조를 가지고 있습니다. 그 과정에서 CN (Consensus Node), PN (Proxy Node) and EN (Endpoint Node)가 있는데, 각각의 역할에 대해서는 다른 포스팅에서 다루기로하고 일반 사용자는 대부분 EN, 즉 엔드포인트 노드만 알고 있으면 됩니다. 엔드포인트 노드는 아래와 같은 역할을 합니다.

  1. 블록체인 데이터를 동기화한다.
  2. 새로 받은 블록을 검증한다.
  3. 쿼리 요청을 처리한다.
  4. 트랜잭션 요청을 프록시 노드로 전송한다.

뭔가 클레이튼 네트워크 위에서 동작하는 앱을 구현하기 위해서는 각자의 엔드포인트 노드 서버를 구축하고 이 구축된 엔드 포인트 서버는 블록체인 데이터를 동기화하고 트랜젝션 요청을 프록시 노드로 전송해주는 역할을 합니다. 다시말해 엔드포인트 서버를 각각의 서비스 제공자가 구축해야만 블록체인상에 있는 데이터를 받아볼 수 있고 직접 트랜젝션도 이를 통해 생성할 수가 있는 것입니다.

diagram

그럼 엔드포인트 노드를 구축한다는 것은 어떤 의미일까요? 사실 서버를 하나 사거나 클라우드 서비스를 이용해서 그 위에 설치하고 실행하는게 다 입니다. 아래의 링크를 참고 하시면 간단하게 설치할 수 있습니다. [https://ko.docs.klaytn.com/getting-started/quick-start/launch-an-en]

diagram

그럼 권장되는 서버 성능은 어떨까요? 그라운드 엑스가 작성한 문서에는 다음과 같이 나와있습니다. 만약 aws로 운영을 하려면 m5.2xlarge를 권장한다고 하네요. 그런데 사실 더 중요한 것은 스토리지입니다. 하루당 2.5GB의 블록 데이터가 생성되기 때문에 충분한 스토리지 공간이 있어야합니다. 또한 설치를 하면 기존까지 생성되었던 블록을 며칠간 자동으로 다운 받도록 동작합니다. 따라서 스토리지 용량이 제법 많이 필요하죠. 그렇기 때문에 aws 상에 올려 운영하기는 비용적인 측면이 부담이 될 수 있습니다. 하지만 직접 서버를 사서 설치해서 운영하는 것은 더 힘든 일이겠죠. 온도도 맞춰주어야하고 네트워크도 계속 사용해야하기 때문이에요. 그래서 클레이튼 네트워크를 이용한 블록체인 프로젝트를 하기 위해 다소 이러한 장벽이 존재하는 것입니다. 그런데 이런 까다로운 것을 대신 해주는 서비스가 바로 KAS 인 것입니다. 서론이 너무 길었죠~? ㅎㅎ

각각의 서비스 주체나 개발자가 엔드포인드 노드를 운영하는 것이 번거롭기 때문에 그라운드 엑스에서는 자신들이 운영하는 엔드포인트 노드를 구독형으로 제공하고 있습니다. 돈이 가장 중요하기 때문에 가격을 먼저 볼까요?

diagram

[https://www.klaytnapi.com/ko/landing/pricing] 이 링크를 방문하면 원하는 스펙에 맞는 구독의 가격을 알 수 있습니다. 이렇게 스펙에 맞는 구독을 하면 엔드포인트 서버를 직접 운영하지 않아도 클레이튼 네트워크 상에서 정보를 가져오거나 트랜잭션을 발생시킬 수 있는 것입니다.

홈페이지 우측 상단을 보시면 "콘솔로 이동"이라는 버튼이 있을 것입니다. 그럼 해당 버튼을 눌러서 콘솔로 이동해볼까요? 앗 물론 가입이나 이런건 각자 해주셔야해요 ㅎㅎ 그런 부분은 생략하고 진행하겠습니다.

diagram

콘솔을 보시면 나의 api 사용량 및 wallet key 사용량 즉 KAS 서비스를 이용한 양이 나옵니다. 그럼 구체적으로 어떻게 KAS에 api 요청을 할 수 있는지 볼까요?

당연히 구독형이기 때문에 나를 입증할 수 있는 어떤 key를 api 요청시 함꼐 보내주어야겠죠? 우선 그걸 먼저 받아보겠습니다.

diagram

위 그림처럼 왼쪽에 Security 메뉴에서 Credential을 선택해 들어가서 AccessKey 생성을 눌러 key 정보를 다운로드 받거나 어딘가에 적어 놓습니다.

각자가 api 요청할 때 사용하는 툴이 있으시겠죠? Postman이나 Talend API 나 각자가 사용하시는 요청 툴을 이용해주시면 됩니다. 저는 Talend API Tester을 이용하기 때문에 그것을 기준으로 보여드리겠습니다. 사실 별 차이는 없어요~

api documentation은 이 주소를 방문해주시면 볼 수 있습니다. [https://docs.klaytnapi.com/api]

아래와 같은 여러 api가 존재합니다.

  1. Anchor API
  2. KIP-17 API
  3. KIP-37 API
  4. KIP-7 API
  5. Metadata API
  6. Klaytn Node API
  7. Resource API
  8. Token History API
  9. Wallet API

이처럼 여러가지 API를 제공하고 있습니다. 그중에 klaytn API를 이용해서 NFT 컨트랙트를 한번 조회해보겠습니다.

docs에 있는 명세를 한번 볼까요?

diagram

이처럼 요청을 보내면 됩니다. https://node-api.klaytnapi.com/v1/metadata/nft/{address} 라는 주소에 address를 보내고 header에 Authorization와 x-chain-id를 함께 보내주면 됩니다. 한번 직접해볼까요~? 아! 그리고 x-chain-id는 어떤 네트워크에 요청을 보낼지에요. 클레이튼은 baobab(1001)이라는 테스트 넷을 가지고 있고 cypress(8217)라는 메인넷을 가지고 있습니다.

diagram

이 처럼 요청하면 됩니다~

결론

이처럼 KAS를 이용하면 직접 엔드포인트 노드를 이용하지 않아도 클레이튼 네트워크 위의 정보를 받고 트랜잭션을 생성할 수 있습니다.