KAS (Klaytn API Service), 핵심만 정리했습니다

sumong·2023년 1월 8일
0

블록체인

목록 보기
5/6
post-thumbnail

2021년 8월에 KAS에 대해 공부하면서 정리한 글입니다. 이 때문에, 현재는 아래의 내용과는 다른 부분이 있을 수 있습니다. 아래 문서는 KAS에 대한 참고 용도로만 사용하는 것을 권장하고, 더 정확한 건 공식 문서를 확인하시기 바랍니다.

참고 자료 : KAS Docs


KAS란?

Klaytn API Service (KAS)

KAS = 블록체인 플랫폼인 클레이튼을 API로 사용할 수 있는 서비스.

기존 클레이튼을 사용했을 때보다 훨씬 더 쉽고, 편하고, 빠르게 BApp을 개발할 수 있다.

KAS의 장점

클레이튼을 이용한 기존 방식의 문제점

  1. 고성능의 노드를 준비해 운영해야 함.
  2. 여러 계정에 대한 개인키-공개키 쌍을 관리해야 하는 어려움이 존재함.

KAS를 이용한 방식

TX 전송과 관련된 모든 작업을 REST API 또는 SDK로 실행할 수 있다!

  1. 블록체인 노드를 운영하고 관리하는 비용 절감
  2. 개발 속도와 편의성 증가
    • API 호출로 클레이튼에서 지원하는 모든 타입의 TX 전송 가능
    • 토큰 거래내역 조회
    • 토큰 Contract 정보와 토큰 전송 기록을 열람하는 다양한 방법 제공
  3. 안전한 클레이튼 계정 키 관리 제공
    • 독자적인 클레이튼 지갑을 쉽게 개발할 수 있음
    • 다중 서명 키 지원
    • 블록체인 계정을 그룹화하여 용도별로 묶어 관리할 수 있음.
    • 클레이튼 계정의 개인 키 유출이 불가능한 구조를 사용함.
  4. 손쉬운 데이터 앵커링
    • 간단한 설정 및 API 호출만으로 앱의 서비스 체인 데이터를 클레이튼 메인 체인인 Cypress에 앵커링
    • 데이터 앵커링으로 서비스 체인 데이터의 신뢰도 향상
    • 다른 블록체인에도 적용 가능

API 목록

Klaytn Node API 목록

메서드주소설명
POSTv1/klaytnKlaytn JSON RPC를 실행
GETv1/metadata/ft/{address}FT 컨트랙트 조회
GETv1/metadata/nft/{address}NFT 컨트랙트 조회
GETv1/metadata/nft/{address}/{id}NFT 조회
GETv1/ws/open/{accountId}Open WebSocket
  • KAS 사용자는 access key ID를 username으로, secret access key를 password로 사용하여 Basic Auth에 사용할 자격증명을 생성한다.
  • KAS 계정의 각 Credential은 모든 KAS 서비스를 사용할 수 있으며, Wallet API로 만든 Klaytn 계정에 대한 모든 권한을 소유하기 때문에, 생성한 Klaytn 계정의 자산(KLAY 등) 이동이나 트랜잭션 실행 권한을 가진다. KAS/Klaytn 계정 보안을 위해 KAS API 인증 키(Secret Access Key)를 타인과 함부로 공유하지 말고 주의해서 관리해야 한다.

Token History API 목록

메서드주소설명
GETv2/transfer거래내역 통합 조회
(KLAY 전송, FT 전송, NFT 전송, MT 전송)
GETv2/transfer/tx/{transaction-hash}트랜잭션 해시로 거래내역 조회
GETv2/transfer/account/{address}특정 EOA의 토큰 거래내역 조회

Token Contract API 목록

메서드주소설명
GETv2/contract/ft라벨링된 모든 FT 컨트랙트들의 정보를 불러옴
GETv2/contract/ft/{ft-address}라벨링된 FT 컨트랙트 1개의 정보를 불러옴
GETv2/contract/nft라벨링된 모든 NFT 컨트랙트들의 정보를 불러옴
GETv2/contract/nft/{nft-address}라벨링된 NFT 컨트랙트 1개의 정보를 불러옴
GETv2/contract/mt라벨링된 모든 MT 컨트랙트들의 정보를 불러옴
GETv2/contract/mt/{mt-address}라벨링된 MT 컨트랙트 1개의 정보를 불러옴

Token API 목록

메서드주소설명
GETv2/contract/nft/{nft-address}/token특정 NFT 컨트랙트에서 발행된 모든 NFT의 정보를 불러옴
GETv2/contract/nft/{nft-address}/owner/{owner-address}특정 NFT 컨트랙트에서 발행된 NFT 중 특정 EOA가 가지고 있는 NFT의 정보를 불러옴.
GETv2/contract/nft/{nft-address}/token/{token-id}특정 NFT의 정보를 불러옴
GETv2/contract/mt/{mt-address}/token특정 MT 컨트랙트에서 발행된 모든 토큰의 정보를 불러옴
GETv2/contract/mt/{mt-address}/token/{token-id}MT 컨트랙트와 토큰 ID로 특정 토큰을 소유한 EOA 정보를 불러옴
GETv2/contract/mt/{mt-address}/owner/{owner-address}MT 컨트랙트와 EOA로 특정 컨트랙트에서 발행된 MT 중 특정 EOA가 가지고 있는 MT의 정보를 불러옴
GETv2/contract/mt/{mt-address}/owner/{owner-address}/token/{token-id}특정 MT의 정보를 불러옴

Token Ownership API 목록

메서드주소설명
GETv2/contract/nft/{nft-address}/token/{token-id}/history특정 NFT의 소유권 변경 기록 조회
GETv2/account/{address}/contract특정 EOA가 소유한 토큰들의 컨트랙트 정보를 불러옴
GETv2/account/{address}/token특정 EOA가 소유한 토큰 정보를 불러옴

Wallet API 목록

메서드주소설명
POSTv2/account클레이튼 (레거시) 계정 생성
임의의 클레이튼 계정 주소 + 개인키/공개키 쌍 생성. KAS에서 처음 만드는 모든 Klaytn 계정은 기본적으로 레거시 계정임.
GETv2/account이전에 생성한 클레이튼 계정 목록 조회
GETv2/account/{address}특정 클레이튼 계정 조회
DELETEv2/account/{address}클레이튼 계정 삭제
PUTv2/account/{address}/disable클레이튼 계정 비활성화.
계정을 비활성화하면 해당 계정이 조회되지 않음.
PUTv2/account/{address}/enable비활성화된 클레이튼 계정을 다시 활성화
POSTv2/account/{address}/tx/{transaction-id}/sign클레이튼 계정으로 특정 TX ID를 가진 TX에 서명
PUTv2/account/{address}/multisig클레이튼 계정을 Multisig 계정으로 업데이트
GETv2/pubkey/{public-key}/account해당 공개키를 가진 클레이튼 계정 목록을 조회

Feepayer API 목록

메서드주소설명
POSTv2/feepayer클레이튼 대납 계정을 생성.
(임의의 클레이튼 계정 주소 + 개인키/공개키 쌍 생성)
GETv2/feepayer이전에 생성한 클레이튼 대납 계정 목록을 조회
GETv2/feepayer/{address}클레이튼 대납 계정을 조회
DELETEv2/feepayer/{address}클레이튼 대납 계정을 삭제

Basic Transaction API 목록

메서드주소설명
POSTv2/tx/legacy레거시 계정과 트랜잭션 포맷을 지원하는 트랜잭션을 생성
POSTv2/tx/value클레이 전송 및 메모를 포함한 클레이 전송에 사용되는 트랜잭션을 생성
POSTv2/tx/contract/deploy컨트랙트를 배포하는 트랜잭션을 생성
POSTv2/tx/contract/execute배포된 컨트랙트 함수를 실행하는 트랜잭션을 생성
DELETEv2/txKlaytn에 전송했으나 보류중인 트랜잭션을 취소시키기 위한 트랜잭션을 생성
POSTv2/tx/anchor서비스 체인 데이터를 Klaytn 메인 체인에 앵커링하는 트랜잭션을 생성
POSTv2/tx/rlprlp(SigRLP 또는 TxHashRLP)를 이용하여 트랜잭션을 생성
PUTv2/tx/account클레이튼 계정 키를 업데이트하는 트랜잭션을 생성
GETv2/tx/{transaction-hash}트랜잭션 해시값으로 트랜잭션 실행 결과를 조회
POSTv2/tx/contract/call배포된 컨트랙트 내부의 값 읽기 / 트랜잭션 실행 가능 여부 판단

Fee Delegated Transaction API 목록 (Paid by KAS)

메서드주소설명
POSTv2/tx/fd/value클레이 전송 및 메모를 포함한 클레이 전송에 사용되는 트랜잭션을 생성
POSTv2/tx/fd/contract/deploy컨트랙트 배포를 위해 사용되는 트랜잭션을 생성
POSTv2/tx/fd/contract/execute배포된 컨트랙트 실행에 사용되는 트랜잭션을 생성
DELETEv2/tx/fdKlaytn에 전송했으나 보류중인 트랜잭션을 취소시키기 위한 트랜잭션을 생성
POSTv2/tx/fd/anchor블록체인 데이터를 앵커링 하기 위한 트랜잭션을 생성
POSTv2/tx/fd/rlprlp(SigRLP 또는 TxHashRLP)를 이용하여 트랜잭션을 생성
PUTv2/tx/fd/account클레이튼 계정키를 업데이트 하기 위한 트랜잭션을 생성

※ 위 API들은 모두 KAS 글로벌 대납 계정을 이용해서 가스비를 대납한다.

Fee Delegated Transaction API 목록 (Paid by User)

메서드주소설명
POSTv2/tx/fd-user/value메모와 함께 클레이를 전송하는 트랜잭션을 생성
POSTv2/tx/fd-user/contract/deploy컨트랙트를 배포하는 트랜잭션을 생성
POSTv2/tx/fd-user/contract/execute배포된 컨트랙트 함수를 실행하는 트랜잭션을 생성
DELETEv2/tx/fd-userKlaytn에 전송했으나 보류중인 트랜잭션을 취소시키기 위한 트랜잭션을 생성
POSTv2/tx/fd-user/anchor서비스 체인 데이터를 메인 체인에 앵커링하는 트랜잭션을 생성
POSTv2/tx/fd-user/rlpRLP(SigRLP 또는 TxHashRLP)를 사용해 트랜잭션을 생성
PUTv2/tx/fd-user/account클레이튼 계정 키를 다른 종류의 키로 업데이트하는 트랜잭션을 생성

※ 위 API들은 모두 유저가 생성한 대납 계정을 이용해서 가스비를 대납한다.

Multisig Transaction Management API 목록

메서드주소설명
GETv2/multisig/account/{address}/txMultisig 계정으로 보낸 보류(pending) 중인 트랜잭션들을 조회
POSTv2/multisig/account/{address}/tx/{transaction-id}/sign유효한 서명자(signer)가 보류중인 트랜잭션에 서명
POSTv2/multisig/tx/{transaction-id}/sign준비된 서명 값을 이용하여 보류중인 트랜잭션에 서명을 덧붙임
(본인이 가지고 있지 않은 계정에 대해서 외부에서 서명값을 받아 덧붙이고 싶은 경우 사용할 수 있습니다.)

Statistics API 목록

메서드주소설명
GETv2/stat/count해당 KAS 사용자가 가진 모든 클레이튼 계정 및 키 개수를 보여줌
GETv2/stat/count/krn사용자의 특정 계정 저장소에서의 클레이튼 계정 보유 개수를 보여줌

Key API 목록

메서드주소설명
POSTv2/key키 생성하며 배치로 100개까지 생성 가능
GETv2/key키 목록 조회
GETv2/key/{key-id}생성한 키 조회
DELETEv2/key/{key-id}가지고 있던 키 삭제
POSTv2/key/{key-id}/sign키를 이용하여 해당 데이터 서명

Registration API 목록

메서드주소설명
POSTv2/registration/account기존에 사용하던 계정을 계정풀에 등록

Data Anchoring Transaction API 목록

메서드주소설명
POSTv1/anchor블록체인 데이터를 앵커링 하기 위해 사용.
이미 설정한 오퍼레이터를 통해 앵커 트랜잭션을 발생 및 관리함.
GETv1/operator/{operator-id}/tx특정 오퍼레이터가 생성한 트랜잭션 목록 조회
GETv1/operator/{operator-id}/tx/{transaction-hash}트랜잭션 해시값과 오퍼레이터 ID로, 이 오퍼레이터가 생성한 트랜잭션을 조회
GETv1/operator/{operator-id}/payload/{payload-id}Payload ID와 오퍼레이터 ID로, 이 오퍼레이터가 생성한 트랜잭션을 조회

Operator API 목록

메서드주소설명
GETv1/operator이미 생성된 오퍼레이터 목록 및 각 오퍼레이터 설정값을 조회
GETv1/operator/{operator-id}해당 오퍼레이터 설정 및 오퍼레이터 계정 잔액을 조회
profile
Flutter 메인의 풀스택 개발자 / 한양대 컴퓨터소프트웨어학과, HUHS의 화석

0개의 댓글