본문 바로가기
Blockchain/caver-js

[caver-js] caver-js 설치 및 KAS(Klaytn API Service) API 호출

by Toritol 2022. 12. 14.
728x90

 

 평소 관심을 크게 가지고 있던 블록체인(Blockchain), 코인(Coin), NFT(Non-Fungible Token)에 관한 사이드 프로젝트를 시작하게 되어 글로 정리하고자 합니다. 공부한 것들을 기록할 뿐만 아니라, 저처럼 비개발자로서 블록체인 개발에 도전하고 싶은 분들을 위해 저의 경험을 공유하려 합니다.

 사이드 프로젝트의 주제는 국내 최대 NFT 마켓인 'PalaSquare(https://pala.io/square)의 대쉬보드 생성'입니다. PalaSquare에 관한 거래 정보를 시각화한 곳은 Xangle(https://xangle.io/analytics/KLAY/nft/pala-square), NFT STAT(https://nftstat.io/insight) 등이 있지만, 제 나름대로 개선하고 싶은 부분들이 있어 프로젝트를 진행하게 되었습니다. 이번 글에서는 Palasquare 거래 정보를 갖고 오기 위한 시작으로 caver-js를 설치하고, KAS API를 호출하는 방법에 대해 살펴볼 것입니다.

 

1. caver-js 설치

 caver-js는 개발자가 HTTP 또는 웹소켓 연결을 사용하여 Klaytn 노드와 상호작용할 수 있도록 하는 자바스크립트 API 라이브러리입니다(https://ko.docs.klaytn.foundation/dapp/sdk/caver-js). 쉽게 말하면, 자바스크립트 API를 기반으로 Klaytn 내에서 이루어지는 transaction 등의 데이터를 불러올 수 있는 것입니다.

 

1) 우선 Node.js를 설치해줘야 합니다. Node.js 설치하는 과정은 'React 설치(https://dslyh01.tistory.com/16)' 글에도 있어 그대로 복사하도록 하겠습니다. 'https://nodejs.org/ko/download/'에 접속하여 운영체제에 맞는 버전을 설치하면 됩니다. 명령 프롬프트(CMD, Command Prompt)에 'node -v'를 입력하였을 때, 다음과 같이 버전이 출력되면 제대로 설치된 것입니다.

 

C:\Users\test>node -v
v16.17.0

 

 또한, 'npx'가 실행되는 것도 확인해야 합니다. 제대로 실행이 된다면 다음과 같은 결과가 출력됩니다.

 

C:\Users\test>npx

Entering npm script environment at location:
C:\Users
Type 'exit' or ^D when finished

Microsoft Windows [Version 10.0.19044.2130]
(c) Microsoft Corporation. All rights reserved.

 

2) 다음은 프로젝트를 진행할 폴더를 생성하고, 해당 폴더를 디렉토리로 Terminal을 실행합니다. 많은 분들이 하고 계시듯이 Visual Studio를 사용하는 것이 수월합니다. Terminal에서 다음과 같은 코드를 입력하면 설치가 진행됩니다.

 

PS C:\...\project> npm install caver-js

 

 특별한 오류가 발생하지 않는다면 설치가 완료된 것입니다. 저는 두 노트북에 모두 Python이 설치되어있어 오류 없이 설치를 완료하였는데, Python이 설치되어있지 않다면 다음과 같은 오류가 발생할 수 있으니 해당 블로그를 참고해주시길 바랍니다. (https://dev-box.tistory.com/44)

 

2. KAS(Klaytn API Service) API 호출

 다음으로는 KAS API 호출에 대한 설명입니다. KAS는 블록체인 플랫폼인 Klaytn을 API로 사용할 수 있는 서비스입니다. KAS API를 사용하지 않고, 다음과 같이 Klaytn 메인넷 주소를 입력하여 caver-js만으로 Klaytn의 블록체인 데이터를 갖고 오는 것이 가능하기는 합니다.

 

const Caver = require('caver-js')
const caver = new Caver('https://public-node-api.klaytnapi.com/v1/cypress')

async function testFunction() {
  caver.rpc.klay.getBlockByNumber(`{Block Number}`).then(console.log)
}

testFunction()

 

 하지만 필요한 데이터의 양이 조금만 많아져도 ip에 제한이 걸리기 됩니다. 따라서 KAS API에서 회원가입 후, API 인증키를 받아 데이터를 가져오는 것이 좋습니다. 우선 KAS 사이트(https://www.klaytnapi.com/)에서 회원가입을 해줍니다. 회원가입 절차는 docs(https://docs.klaytnapi.com/getting-started/get-ready)에 자세히 나와있습니다.

 또한, 요금제에 따라 하루에 API를 요청할 수 있는 제한이 있는데, 다음 그림을 참고해주시면 되겠습니다. 저는 사이드 프로젝트를 하기 위함이므로, Free 요금제를 사용하고 있습니다.

 

 

 API Key를 받는 방법도 docs에 나와있지만 여러 정보들이 많기 때문에, API Key를 생성하고 간단한 데이터를 받아오는 것까지 설명해드리겠습니다. 회원가입을 한 후 로그인을 하면 다음 화면이 뜨게 됩니다. 저는 10번 이내로 테스트를 해봤는데 생각보다 API 사용량이 많지는 않아 하루에 10,000 requests 정도도 괜찮다고 생각합니다. 왼쪽 메뉴에서 Security > Credential을 클릭해줍니다.

 

 

그럼 다음과 같은 화면으로 넘어가고 AccessKey 생성을 눌러주면, AccessKey에 대한 정보들이 뜨며 기록되지 않으니 따로 정리하라는 창이 뜹니다. 따로 정리해주시고 닫으면 API Key 발급이 완료됩니다.

 

 

 마지막은 발급받은 API Key를 바탕으로 간단한 블록체인 데이터를 가져오는 과정입니다. testFunction 위로는 API Key를 입력하고 caver-js를 실행할 수 있는 변수들을 생성하는 과정이라고만 알아두시면 될 것 같습니다. 실제 블록체인에서 사용되는 함수는 testFunction인데, 저는 caver.klay.getBlockNumber()라는 함수를 사용하였습니다. 해당 함수는 현재 블록 넘버를 반환하는 함수입니다. 터미널에서 해당 자바스크립트 파일을 실행하면 당시의 블록 넘버가 출력되며, 성공적으로 첫 블록체인 데이터를 갖고온 것을 확인할 수 있습니다. 블록 넘버는 Klaytn 메인넷의 블록이 형성될 때마다 늘어나는데, Klaytn은 보통 1초마다 한 개의 블록이 늘어납니다.

 

const Caver = require('caver-js')
const accessKeyId = "{your accessKeyId}";
const secretAccessKey = "{your secretAccessKey}";

const option = {
  headers: [
    {name: 'Authorization', value: 'Basic ' + Buffer.from(accessKeyId + ':' + secretAccessKey).toString('base64')},
    {name: 'x-chain-id', value: '8217'},
  ]
}

const caver = new Caver(new Caver.providers.HttpProvider("https://node-api.klaytnapi.com/v1/klaytn", option))

async function testFunction() {
  const test = await caver.klay.getBlockNumber();
  console.log(test);
}

testFunction()

 

PS C:\...\project> node test.js
109118117

 

 caver-js에서 사용할 수 있는 함수들은 Klaytn docs(https://ko.docs.klaytn.foundation/dapp/sdk/caver-js/api-references)에 다 나와있습니다. Klaytn 기반의 블록체인 개발을 설명하는 글들은 많지 않기 때문에, 저도 대부분 해당 docs에 나와있는 정보들을 참고하여 공부하고 있습니다.

 

 이번 글에서는 'PalaSquare 대쉬보드 생성' 프로젝트의 시작으로 caver-js 설치 및 KAS API 호출에 관해 살펴봤습니다. 해당 글을 다 완료하시면, Klaytn 블록체인 데이터를 가져올 준비가 다 된 것이라고 생각해주시면 됩니다. 글을 읽고 부족한 점을 발견하거나 궁금한 점이 생기면 언제나 댓글로 남겨주시길 바랍니다.

 

[다음 글]

1) [caver-js] PalaSquare NFT 거래 데이터 수집 (1)

2) [caver-js] PalaSquare NFT 거래 데이터 수집 (2)

3) [caver-js] PalaSquare NFT 거래 데이터 수집 (3)

 

 

728x90

댓글