KIP-17 API

Download OpenAPI specification:Download

Introduction

KIP-17 API는 탈중앙화 어플리케이션 (DApp) 개발자들이 Kaia의 대체불가토큰(NFT) 기술 표준인 KIP-17에 따라 생성된 컨트랙트 및 토큰을 관리하는 것을 도와줍니다. KIP-17 API의 다양한 엔드포인트를 사용하여 다음 작업을 수행할 수 있습니다.

  • 스마트 컨트랙트를 배포
  • NFT 생성부터 트랜잭션, 관리, 소각까지 전체 주기 관리
  • 특정 컨트랙트나 토큰을 조회
  • 제삼자에게 토큰 전송 권한을 부여
  • 토큰의 소유권 변화 내역 조회

또한 caver와 같은 SDK를 이용하여 Kaia 네트워크에 컨트랙트를 생성한 경우도 컨트랙트 주소와 Wallet API 계정을 활용해 컨트랙트 및 토큰을 관리할 수 있습니다.

KAS에 대한 자세한 정보는 KAS Docs를 참고해 주세요. 질문이 있으시다면 언제든지 KAS 개발자 포럼에 남겨주세요.

별칭

KIP-17 API에서는 파라미터로 컨트랙트 주소가 요구될 때 **별칭(alias)**을 대신 쓸 수 있습니다. 컨트랙트 배포시 원하는 별칭을 지정하면 이후 API 호출 시 복잡한 주소를 사용할 필요가 없습니다.

v2 신규 기능 및 v1과의 호환성

KIP-17 v2부터 Ownable 인터페이스를 추가했습니다. 이제 컨트랙트를 배포할 때 컨트랙트 소유자를 지정할 수 있습니다. 컨트랙트 소유자가 소유권을 포기하거나 이전할 수 있고, 특정 컨트랙트 소유자를 조회하는 기능도 지원합니다. KIP-17 v1으로 배포한 기존 컨트랙트는 OpenSea 컬렉션 수정 기능을 활용할 수 없는 반면 v2를 활용한 컨트랙트는 컨트랙트 소유자가 직접 컬렉션을 수정할 수 있습니다.

소유권 관련 추가 API를 제외한 기존 기능은 그대로 사용하며, KIP-17 v1으로 배포한 컨트랙트와 호환됩니다. 단, v2로 배포한 컨트랙트는 v2 API만 사용하세요.

Fee Payer Options

KAS KIP-17 서비스에서는 트랜잭션 전송 시 4가지 수수료 지불 방법을 지원합니다.

1. KAS 글로벌 대납 계정만 사용하는 경우
KAS 글로벌 대납 계정을 이용하여 모든 트랜잭션을 전송합니다.

{
    "options": {
      "enableGlobalFeePayer": true
    }
}

2. 사용자 대납 계정을 이용하는 경우
사용자 대납 계정을 이용하여 모든 트랜잭션을 전송합니다.

{
  "options": {
    "enableGlobalFeePayer": false,
    "userFeePayer": {
      "krn": "krn:1001:wallet:20bab367-141b-439a-8b4c-ae8788b86316:feepayer-pool:default",
      "address": "0xd6905b98E4Ba43a24E842d2b66c1410173791cab"
    }
  }
}

3. KAS 글로벌 대납 계정 + 사용자 대납 계정을 모두 이용하는 경우
기본적으로 사용자 대납 계정으로 트랜잭션을 전송하되, 해당 계정의 잔액이 부족한 경우 KAS 글로벌 대납 계정을 사용합니다.

{
  "options": {
    "enableGlobalFeePayer": true,
    "userFeePayer": {
      "krn": "krn:1001:wallet:20bab367-141b-439a-8b4c-ae8788b86316:feepayer-pool:default",
      "address": "0xd6905b98E4Ba43a24E842d2b66c1410173791cab"
    }
  }
}

4. 대납 계정을 사용하지 않는 경우
일반적인 방법으로 트랜잭션을 전송하고, 보내는 계정으로 수수료를 지불합니다.

{
  "options": {
    "enableGlobalFeePayer": false
  }
}

Authorization

공통 에러 Unauthorized는 호출하는 API 종류에 상관없이 인증 시스템이 정상적으로 실행되지 않으면 발생합니다.

401: Unauthorized

Code Message Description
1010009 invalid credential 자격증명 정보가 유효하지 않습니다.

Authentication

basic

KAS는 Basic HTTP Auth를 사용하며, 모든 요청에 반드시 올바른 Authorization 헤더가 포함되어 있어야 합니다. KAS Console에서 발급 받은 AccessKey ID를 username으로, Secret AccessKey를 password를 이용하여 Authorization 헤더를 생성하십시오.

NOTE

KAS 계정의 각 Credential은 모든 KAS 서비스를 사용할 수 있으며, Wallet API로 만든 Kaia 계정에 대한 모든 권한을 소유하기 때문에, 생성한 Kaia 계정의 자산(KAIA 등) 이동이나 트랜잭션 실행 권한을 가집니다. KAS/Kaia 계정 보안을 위해 KAS API 인증 키(Secret Access Key)를 타인과 함부로 공유하지 말고 주의해 관리하십시오.

cURL

  curl --location --request GET 'https://kip17-api.klaytnapi.com/v2/contract' \
  -u ${your_accessKeyId}:${your_secretAccessKey} \
  --header 'x-chain-id: 1001' \
  --header 'Content-Type: application/json'
Security Scheme Type HTTP
HTTP Authorization Scheme basic