KIP-37 API

Download OpenAPI specification:Download

Introduction

KIP-37 API는 블록체인 어플리케이션(BApp) 개발자들이 Klaytn의 멀티토큰(MT) 기술 표준인 KIP-37에 따라 생성된 컨트랙트 및 토큰을 관리하는 것을 도와줍니다. KIP-37 API의 다양한 엔드포인트를 사용하여 다음 작업을 수행할 수 있습니다.

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

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

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

별칭

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

배포자(deployer)

컨트랙트 생성 시 Credential 하나 당 컨트랙트 관리 계정인 deployer의 주소 하나가 생성됩니다. KIP-37 API에서 이 주소는 토큰에 대한 다양한 작업에 사용됩니다. KIP37Deployer를 이용해 조회할 수 있습니다.

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

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

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

Fee Payer Options

KAS KIP-37 서비스에서는 트랜잭션 전송 시 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 사용자는 access key ID를 username으로, secret access key를 password로 사용하여 Basic Auth에 사용할 자격증명을 생성합니다.

NOTE

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

cURL

curl --location --request GET 'https://kip37-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