2021년 8월에 KAS에 대해 공부하면서 정리한 글입니다. 이 때문에, 현재는 아래의 내용과는 다른 부분이 있을 수 있습니다. 아래 문서는 KAS에 대한 참고 용도로만 사용하는 것을 권장하고, 더 정확한 건 공식 문서를 확인하시기 바랍니다.
참고 자료 : KAS Docs
KAS란?
Klaytn API Service (KAS)
KAS = 블록체인 플랫폼인 클레이튼을 API로 사용할 수 있는 서비스.
기존 클레이튼을 사용했을 때보다 훨씬 더 쉽고, 편하고, 빠르게 BApp을 개발할 수 있다.
KAS의 장점
클레이튼을 이용한 기존 방식의 문제점
- 고성능의 노드를 준비해 운영해야 함.
- 여러 계정에 대한 개인키-공개키 쌍을 관리해야 하는 어려움이 존재함.
KAS를 이용한 방식
TX 전송과 관련된 모든 작업을 REST API 또는 SDK로 실행할 수 있다!
- 블록체인 노드를 운영하고 관리하는 비용 절감
- 개발 속도와 편의성 증가
- API 호출로 클레이튼에서 지원하는 모든 타입의 TX 전송 가능
- 토큰 거래내역 조회
- 토큰 Contract 정보와 토큰 전송 기록을 열람하는 다양한 방법 제공
- 안전한 클레이튼 계정 키 관리 제공
- 독자적인 클레이튼 지갑을 쉽게 개발할 수 있음
- 다중 서명 키 지원
- 블록체인 계정을 그룹화하여 용도별로 묶어 관리할 수 있음.
- 클레이튼 계정의 개인 키 유출이 불가능한 구조를 사용함.
- 손쉬운 데이터 앵커링
- 간단한 설정 및 API 호출만으로 앱의 서비스 체인 데이터를 클레이튼 메인 체인인 Cypress에 앵커링
- 데이터 앵커링으로 서비스 체인 데이터의 신뢰도 향상
- 다른 블록체인에도 적용 가능
API 목록
메서드 | 주소 | 설명 |
---|
POST | v1/klaytn | Klaytn JSON RPC를 실행 |
GET | v1/metadata/ft/{address} | FT 컨트랙트 조회 |
GET | v1/metadata/nft/{address} | NFT 컨트랙트 조회 |
GET | v1/metadata/nft/{address}/{id} | NFT 조회 |
GET | v1/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)를 타인과 함부로 공유하지 말고 주의해서 관리해야 한다.
메서드 | 주소 | 설명 |
---|
GET | v2/transfer | 거래내역 통합 조회 (KLAY 전송, FT 전송, NFT 전송, MT 전송) |
GET | v2/transfer/tx/{transaction-hash} | 트랜잭션 해시로 거래내역 조회 |
GET | v2/transfer/account/{address} | 특정 EOA의 토큰 거래내역 조회 |
Token Contract API 목록
메서드 | 주소 | 설명 |
---|
GET | v2/contract/ft | 라벨링된 모든 FT 컨트랙트들의 정보를 불러옴 |
GET | v2/contract/ft/{ft-address} | 라벨링된 FT 컨트랙트 1개의 정보를 불러옴 |
GET | v2/contract/nft | 라벨링된 모든 NFT 컨트랙트들의 정보를 불러옴 |
GET | v2/contract/nft/{nft-address} | 라벨링된 NFT 컨트랙트 1개의 정보를 불러옴 |
GET | v2/contract/mt | 라벨링된 모든 MT 컨트랙트들의 정보를 불러옴 |
GET | v2/contract/mt/{mt-address} | 라벨링된 MT 컨트랙트 1개의 정보를 불러옴 |
Token API 목록
메서드 | 주소 | 설명 |
---|
GET | v2/contract/nft/{nft-address}/token | 특정 NFT 컨트랙트에서 발행된 모든 NFT의 정보를 불러옴 |
GET | v2/contract/nft/{nft-address}/owner/{owner-address} | 특정 NFT 컨트랙트에서 발행된 NFT 중 특정 EOA가 가지고 있는 NFT의 정보를 불러옴. |
GET | v2/contract/nft/{nft-address}/token/{token-id} | 특정 NFT의 정보를 불러옴 |
GET | v2/contract/mt/{mt-address}/token | 특정 MT 컨트랙트에서 발행된 모든 토큰의 정보를 불러옴 |
GET | v2/contract/mt/{mt-address}/token/{token-id} | MT 컨트랙트와 토큰 ID로 특정 토큰을 소유한 EOA 정보를 불러옴 |
GET | v2/contract/mt/{mt-address}/owner/{owner-address} | MT 컨트랙트와 EOA로 특정 컨트랙트에서 발행된 MT 중 특정 EOA가 가지고 있는 MT의 정보를 불러옴 |
GET | v2/contract/mt/{mt-address}/owner/{owner-address}/token/{token-id} | 특정 MT의 정보를 불러옴 |
Token Ownership API 목록
메서드 | 주소 | 설명 |
---|
GET | v2/contract/nft/{nft-address}/token/{token-id}/history | 특정 NFT의 소유권 변경 기록 조회 |
GET | v2/account/{address}/contract | 특정 EOA가 소유한 토큰들의 컨트랙트 정보를 불러옴 |
GET | v2/account/{address}/token | 특정 EOA가 소유한 토큰 정보를 불러옴 |
메서드 | 주소 | 설명 |
---|
POST | v2/account | 클레이튼 (레거시) 계정 생성 임의의 클레이튼 계정 주소 + 개인키/공개키 쌍 생성. KAS에서 처음 만드는 모든 Klaytn 계정은 기본적으로 레거시 계정임. |
GET | v2/account | 이전에 생성한 클레이튼 계정 목록 조회 |
GET | v2/account/{address} | 특정 클레이튼 계정 조회 |
DELETE | v2/account/{address} | 클레이튼 계정 삭제 |
PUT | v2/account/{address}/disable | 클레이튼 계정 비활성화. 계정을 비활성화하면 해당 계정이 조회되지 않음. |
PUT | v2/account/{address}/enable | 비활성화된 클레이튼 계정을 다시 활성화 |
POST | v2/account/{address}/tx/{transaction-id}/sign | 클레이튼 계정으로 특정 TX ID를 가진 TX에 서명 |
PUT | v2/account/{address}/multisig | 클레이튼 계정을 Multisig 계정으로 업데이트 |
GET | v2/pubkey/{public-key}/account | 해당 공개키를 가진 클레이튼 계정 목록을 조회 |
Feepayer API 목록
메서드 | 주소 | 설명 |
---|
POST | v2/feepayer | 클레이튼 대납 계정을 생성. (임의의 클레이튼 계정 주소 + 개인키/공개키 쌍 생성) |
GET | v2/feepayer | 이전에 생성한 클레이튼 대납 계정 목록을 조회 |
GET | v2/feepayer/{address} | 클레이튼 대납 계정을 조회 |
DELETE | v2/feepayer/{address} | 클레이튼 대납 계정을 삭제 |
Basic Transaction API 목록
메서드 | 주소 | 설명 |
---|
POST | v2/tx/legacy | 레거시 계정과 트랜잭션 포맷을 지원하는 트랜잭션을 생성 |
POST | v2/tx/value | 클레이 전송 및 메모를 포함한 클레이 전송에 사용되는 트랜잭션을 생성 |
POST | v2/tx/contract/deploy | 컨트랙트를 배포하는 트랜잭션을 생성 |
POST | v2/tx/contract/execute | 배포된 컨트랙트 함수를 실행하는 트랜잭션을 생성 |
DELETE | v2/tx | Klaytn에 전송했으나 보류중인 트랜잭션을 취소시키기 위한 트랜잭션을 생성 |
POST | v2/tx/anchor | 서비스 체인 데이터를 Klaytn 메인 체인에 앵커링하는 트랜잭션을 생성 |
POST | v2/tx/rlp | rlp(SigRLP 또는 TxHashRLP)를 이용하여 트랜잭션을 생성 |
PUT | v2/tx/account | 클레이튼 계정 키를 업데이트하는 트랜잭션을 생성 |
GET | v2/tx/{transaction-hash} | 트랜잭션 해시값으로 트랜잭션 실행 결과를 조회 |
POST | v2/tx/contract/call | 배포된 컨트랙트 내부의 값 읽기 / 트랜잭션 실행 가능 여부 판단 |
Fee Delegated Transaction API 목록 (Paid by KAS)
메서드 | 주소 | 설명 |
---|
POST | v2/tx/fd/value | 클레이 전송 및 메모를 포함한 클레이 전송에 사용되는 트랜잭션을 생성 |
POST | v2/tx/fd/contract/deploy | 컨트랙트 배포를 위해 사용되는 트랜잭션을 생성 |
POST | v2/tx/fd/contract/execute | 배포된 컨트랙트 실행에 사용되는 트랜잭션을 생성 |
DELETE | v2/tx/fd | Klaytn에 전송했으나 보류중인 트랜잭션을 취소시키기 위한 트랜잭션을 생성 |
POST | v2/tx/fd/anchor | 블록체인 데이터를 앵커링 하기 위한 트랜잭션을 생성 |
POST | v2/tx/fd/rlp | rlp(SigRLP 또는 TxHashRLP)를 이용하여 트랜잭션을 생성 |
PUT | v2/tx/fd/account | 클레이튼 계정키를 업데이트 하기 위한 트랜잭션을 생성 |
※ 위 API들은 모두 KAS 글로벌 대납 계정을 이용해서 가스비를 대납한다.
Fee Delegated Transaction API 목록 (Paid by User)
메서드 | 주소 | 설명 |
---|
POST | v2/tx/fd-user/value | 메모와 함께 클레이를 전송하는 트랜잭션을 생성 |
POST | v2/tx/fd-user/contract/deploy | 컨트랙트를 배포하는 트랜잭션을 생성 |
POST | v2/tx/fd-user/contract/execute | 배포된 컨트랙트 함수를 실행하는 트랜잭션을 생성 |
DELETE | v2/tx/fd-user | Klaytn에 전송했으나 보류중인 트랜잭션을 취소시키기 위한 트랜잭션을 생성 |
POST | v2/tx/fd-user/anchor | 서비스 체인 데이터를 메인 체인에 앵커링하는 트랜잭션을 생성 |
POST | v2/tx/fd-user/rlp | RLP(SigRLP 또는 TxHashRLP)를 사용해 트랜잭션을 생성 |
PUT | v2/tx/fd-user/account | 클레이튼 계정 키를 다른 종류의 키로 업데이트하는 트랜잭션을 생성 |
※ 위 API들은 모두 유저가 생성한 대납 계정을 이용해서 가스비를 대납한다.
Multisig Transaction Management API 목록
메서드 | 주소 | 설명 |
---|
GET | v2/multisig/account/{address}/tx | Multisig 계정으로 보낸 보류(pending) 중인 트랜잭션들을 조회 |
POST | v2/multisig/account/{address}/tx/{transaction-id}/sign | 유효한 서명자(signer)가 보류중인 트랜잭션에 서명 |
POST | v2/multisig/tx/{transaction-id}/sign | 준비된 서명 값을 이용하여 보류중인 트랜잭션에 서명을 덧붙임 (본인이 가지고 있지 않은 계정에 대해서 외부에서 서명값을 받아 덧붙이고 싶은 경우 사용할 수 있습니다.) |
Statistics API 목록
메서드 | 주소 | 설명 |
---|
GET | v2/stat/count | 해당 KAS 사용자가 가진 모든 클레이튼 계정 및 키 개수를 보여줌 |
GET | v2/stat/count/krn | 사용자의 특정 계정 저장소에서의 클레이튼 계정 보유 개수를 보여줌 |
Key API 목록
메서드 | 주소 | 설명 |
---|
POST | v2/key | 키 생성하며 배치로 100개까지 생성 가능 |
GET | v2/key | 키 목록 조회 |
GET | v2/key/{key-id} | 생성한 키 조회 |
DELETE | v2/key/{key-id} | 가지고 있던 키 삭제 |
POST | v2/key/{key-id}/sign | 키를 이용하여 해당 데이터 서명 |
Registration API 목록
메서드 | 주소 | 설명 |
---|
POST | v2/registration/account | 기존에 사용하던 계정을 계정풀에 등록 |
메서드 | 주소 | 설명 |
---|
POST | v1/anchor | 블록체인 데이터를 앵커링 하기 위해 사용. 이미 설정한 오퍼레이터를 통해 앵커 트랜잭션을 발생 및 관리함. |
GET | v1/operator/{operator-id}/tx | 특정 오퍼레이터가 생성한 트랜잭션 목록 조회 |
GET | v1/operator/{operator-id}/tx/{transaction-hash} | 트랜잭션 해시값과 오퍼레이터 ID로, 이 오퍼레이터가 생성한 트랜잭션을 조회 |
GET | v1/operator/{operator-id}/payload/{payload-id} | Payload ID와 오퍼레이터 ID로, 이 오퍼레이터가 생성한 트랜잭션을 조회 |
Operator API 목록
메서드 | 주소 | 설명 |
---|
GET | v1/operator | 이미 생성된 오퍼레이터 목록 및 각 오퍼레이터 설정값을 조회 |
GET | v1/operator/{operator-id} | 해당 오퍼레이터 설정 및 오퍼레이터 계정 잔액을 조회 |