클레이튼 계정 생성

이 페이지는 KAS에서 사용하는 클레이튼 계정을 생성하는 방법을 안내합니다.

클레이튼 계정이란?

여러분이 블록체인 애플리케이션을 개발한다면 아마도 그 애플리케이션은 블록체인에 트랜잭션을 보낼 것입니다. 블록체인에 트랜잭션을 보내는 주체를 계정(Account)라고 하며 클레이튼에서 여러분의 계정은 계정 주소(EOA)라는 형태로 표현됩니다. Wallet API로 클레이튼에 트랜잭션을 보내거나, Token History API로 여러분이 KLAY 또는 토큰을 전송한 기록을 조회하려면 클레이튼 계정이 반드시 필요합니다.

KAS 계정은 KAS 회원 가입으로 생성되며, 클레이튼 계정은 KAS Wallet API를 호출해 생성해야 합니다. 트랜잭션에 관한 자세한 내용은 다음을 확인하십시오.

이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

계정, 수수료 대납 계정, 오퍼레이터

클레이튼 계정은 크게 여러분이 KLAY를 보관, 전송, 수신할 수 있는 클레이튼 계정(=외부 사용자 계정, EOA)과 스마트 컨트랙트를 배포하면 생성되는 스마트 컨트랙트 계정이 있습니다.

KAS에서는 여러분의 편의를 위해 클레이튼 계정 역할에 따라 아래와 같은 계정 유형을 제공합니다.

이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

계정 저장소

여러분의 KAS 계정은 여러 클레이튼 계정을 소유할 수 있습니다. KAS에서는 하나의 KAS 계정으로 여러 클레이튼 계정을 쉽고 편하게 관리하도록 클레이튼 계정들을 보관하는 계정 저장소를 제공합니다. 계정 저장소는 클레이튼 계정 유형마다 별도로 존재하며, 하나의 KAS 계정이 여러 저장소를 만들어 운영할 수 있습니다.

KAS에서는 여러분의 편의를 위해 계정 역할에 따라 아래와 같은 계정 저장소 유형을 제공합니다.

  • 계정 저장소(Account Pool): 일반적인 클레이튼 계정들을 관리하는 저장소

  • 수수료 대납 계정 저장소(Fee-payer Pool): 수수료 대납 계정들을 관리하는 저장소

이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

계정 만들기

계정 저장소 생성

KAS는 여러 클레이튼 계정을 관리하는 계정 저장소를 제공합니다. KAS를 사용하려면 여러분은 KAS 콘솔에서 계정 저장소를 만들고, 계정 생성 API로 콘솔에서 만든 계정 저장소에 새로운 클레이튼 계정을 만들어야 합니다.

기본 계정 저장소

기본 계정 저장소란 KAS API를 호출 시 사용할 계정 저장소를 별도로 지정하지 않을 때 기본으로 사용하는 계정 저장소입니다. API를 호출 시 헤더의 x-krn에 사용할 계정 저장소의 KRN을 입력하지 않으면 기본 계정 저장소에 있는 클레이튼 계정이 사용됩니다. 기본 계정 저장소는 KAS 콘솔 - Service - Wallet - Account Pools 화면에서 확인할 수 있으며 DEFAULT 태그가 붙습니다.

여러분이 가장 먼저 생성한 계정 저장소가 자동으로 기본 계정 저장소로 지정됩니다. 예를 들어, 여러분이 KAS 콘솔에서 계정 저장소 A를 만들었다면, 이후 API 호출 시 사용할 계정 자장소를 별도로 지정하지 않을 경우 A 계정 저장소에 있는 클레이튼 계정이 API 호출에 사용됩니다. 만약 계정 저장소가 없는 상태에서 클레이튼 계정을 생성하는 API를 호출하면 KAS는 자동으로 기본 계정 저장소를 생성한 후 이 기본 저장소에 여러분이 생성한 클레이튼 계정을 저장합니다.

다른 계정 저장소에 있는 클레이튼 계정으로 API를 호출하려면 x-krn에 사용할 계정 저장소 KRN을 입력하십시오.

KAS 콘솔 - Service - Wallet - Account Pools

KAS 콘솔 - Service - Wallet - Account Pools 메뉴에서 "생성" 버튼을 클릭합니다. 버튼을 클릭하면 아래와 같이 클레이튼 계정 저장소를 생성하는 화면이 나타납니다.

계정 저장소 생성

클레이튼 계정 저장소를 만듭니다. 계정 저장소의 이름은 현재 KAS 계정의 다른 계정 저장소 이름과 중복되지 않아야 합니다.

계정 저장소 확인

계정 저장소를 만들었다면, 계정 저장소 목록에서 생성한 저장소를 확인할 수 있습니다.

계정 저장소를 만들고 얻는 KRN을 API 호출 시 x-krn 헤더에 입력하면, 이 계정 저장소에 있는 클레이튼 계정으로 API를 호출합니다.

이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

계정 생성

콘솔에서 생성

위에서 만든 계정 저장소 가운데 하나를 골라 클릭합니다. 선택한 계정 저장소 화면에서 [Account 생성] 버튼을 클릭하면 계정을 생성할 수 있습니다.

API 호출

클레이튼 계정 생성 API를 아래와 같이 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

API 인증 키가 있으면 모든 KAS 서비스를 사용할 수 있으며 Wallet API를 호출해 만든 Klaytn 계정에 대한 모든 권한을 소유합니다. 모든 권한에는 Klaytn 계정의 자산(KLAY 등) 이동이나 트랜잭션 전송 및 실행 권한이 포함됩니다. 만약 API 인증 키에 타인이 접근한다면 Klaytn 계정 권한을 탈취당해 원치 않는 트랜잭션이 발생할 수 있습니다.

KAS/Klaytn 계정 보안을 위해 KAS API 인증 키(Secret Access Key)를 타인과 함부로 공유하지 말고 주의해 관리하십시오.

//KAS에서 제공하는 기본 계정 저장소를 사용하는 예시이며 x-krn 헤더 파라미터를 생략
curl --location --request POST "https://wallet-api.klaytnapi.com/v2/account" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"

//여러분이 위에서 만든 계정 저장소를 사용하는 예시이며 x-krn 헤더 파라미터 포함
curl --location --request POST "https://wallet-api.klaytnapi.com/v2/account" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
--header "x-krn: krn:1001:wallet:6698d79e-78ee-439a-815d-f293ec6ae736:account-pool:ap1"

API 응답

클레이튼 계정 생성 API의 응답은 아래와 같습니다.

//KAS 기본 저장소에 계정을 만들었을 때 응답 예시
{
  "address": "0xa809284C83b901eD106Aba4Ccda14628Af128e14",
  "chainId": 1001,
  "createdAt": 1599187293,
  "keyId": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x4cbbcb974e32a7960e1b356edf60087613101919ed83199f12e872cba068a50f",
  "krn": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default",
  "publicKey": "0x04cdccfb99b2905561e3dd886687b429a004718f11b04914f17ce68fd3a0db46c598a45da85caa61fe84cb78a0f2eaa9983ec7b8805a93ef9428eb1350a8558237",
  "updatedAt": 1599187293
}

//여러분이 만든 계정 저장소에 계정을 만들었을 때 응답 예시
{
  "address": "0xa809284C83b901eD106Aba4Ccda14628Af128e14",
  "chainId": 1001,
  "createdAt": 1599187293,
  "keyId": "krn:1001:wallet:6698d79e-78ee-439a-815d-f293ec6ae736:account-pool:ap1:0x4cbbcb974e32a7960e1b356edf60087613101919ed83199f12e872cba068a50f",
  "krn": "krn:1001:wallet:6698d79e-78ee-439a-815d-f293ec6ae736:account-pool:ap1",
  "publicKey": "0x04cdccfb99b2905561e3dd886687b429a004718f11b04914f17ce68fd3a0db46c598a45da85caa61fe84cb78a0f2eaa9983ec7b8805a93ef9428eb1350a8558237",
  "updatedAt": 1599187293
}

이 API에 관한 자세한 내용은 다음을 확인하십시오. 이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

생성한 계정에 KLAY 충전하기

KLAY 충전은 테스트넷(Baobab)에서만 제공합니다. 선택한 하나의 계정에 충전하면 24시간이 지난 후에 다시 충전할 수 있습니다.

5KLAY 충전하기

충전하고자 하는 계정 주소 옆 배터리 이미지 버튼을 클릭하면 해당 계정에 5KLAY를 충전할 수 있습니다.

이 API에 관한 자세한 내용은 다음을 확인하십시오. 이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

수수료 대납 계정 만들기

수수료 대납 계정 저장소 생성

KAS에서 클레이튼 트랜잭션 수수료를 대신 납부하는 계정을 만들려면, 먼저 수수료 대납 계정들을 관리하는 수수료 대납 계정 저장소를 만들어야 합니다. 여러 개의 수수료 대납 계정 저장소를 만들 수 있으며 KAS 콘솔에서 대납 계정을 생성하고 싶은 저장소를 선택한 후 이 저장소에 계정을 생성해야 합니다.

KAS에서 제공하는 수수료 납부 방식에 관한 자세한 내용은 다음을 확인하십시오.

KAS 콘솔 - Service - Wallet - Fee-payer Pools

KAS 콘솔 - Service - Wallet - Fee Payers 메뉴에서 "생성" 버튼을 클릭합니다. 버튼을 클릭하면 아래와 같이 수수료 대납 계정 저장소를 생성하는 화면이 나타납니다.

수수료 대납 계정 저장소 생성

수수료 대납 계정 저장소를 만듭니다. 수수료 대납 계정 저장소의 이름은 현재 KAS 계정의 다른 수수료 대납 계정 저장소 이름과 중복되지 않아야 합니다.

수수료 대납 계정은 반드시 이 문서의 안내를 따라 KAS 콘솔에서만 생성하십시오. KAS의 다른 API로 수수료 대납 계정을 생성할 경우, 해당 계정은 KAS 계정 저장소에 등록되지 않습니다.

수수료 대납 계정 저장소 확인

계정 저장소를 만들었다면, 계정 저장소 목록에서 생성한 저장소를 확인할 수 있습니다.

KRN은 수수료 대납 방식으로 트랜잭션을 전송하는 API를 호출 시 사용합니다.

이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

수수료 대납 계정 생성

수수료 대납 계정 저장소들 중에서 수수료 대납 계정을 만들고 싶은 저장소를 선택합니다. 원하는 저장소의 KRN을 클릭하면 해당 수수료 대납 계정 저장소에 대한 상세 화면이 나타납니다.

Account 생성 버튼을 클릭하고 수수료 대납 계정을 생성합니다.

수수료 대납 계정 저장소 상세 화면에서 생성된 수수료 대납 계정 정보를 확인할 수 있습니다.

이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

오퍼레이터 만들기

KAS 콘솔 - Service - Anchor - Operators

KAS 콘솔 - Service - Anchor - Operators 메뉴에서 "생성" 버튼을 클릭합니다. 버튼을 클릭하면 아래와 같이 오퍼레이터를 생성하는 화면이 나타납니다.

데이터 앵커링 트랜잭션 수수료 납부 설정

KAS 콘솔에서 오퍼레이터를 생성하려면 아래와 같이 오퍼레이터가 보낼 데이터 앵커링 트랜잭션 수수료를 어떤 계정이 납부할 것인지 설정해야 합니다.

파라미터

설명

feepayer

사용자의 수수료 대납 계정 주소. 자신만의 대납 계정으로 데이터 앵커링 트랜잭션 수수료를 납부할 경우 사용

useOperator

오퍼레이터가 데이터 앵커링 트랜잭션 수수료를 직접 납부할 것인지 여부

useGlobalFeepayer

KAS에서 데이터 앵커링 트랜잭션 수수료를 대납해줄 것인지 여부(트랜잭션 수수료는 사용자에게 추후 청구됨)

  • useGlobalFeepayer를 사용하면 KLAY 잔고가 부족해도 데이터 앵커링 트랜잭션을 전송

  • 3개 파라미터가 모두 다 설정되어 있지 않은 경우엔 에러를 반환

  • 1개 이상의 파라미터를 입력했다면 아래 우선 순위를 따라서 데이터 앵커링 트랜잭션 수수료를 대납

앵커링 트랜잭션 실행을 보장하려면 useGlobalFeepayer를 사용하십시오.

feepayer를 사용하려면 먼저 수수료 대납 계정 저장소와 수수료 대납 계정을 만들어야 합니다. feepayer를 사용하려면 수수료 대납 계정 주소와 수수료 대납 계정이 소속된 수수료 대납 계정 저장소 KRN 값이 필요합니다.

수수료 대납 방식으로 앵커링 트랜잭션을 전송할 때 여러 파라미터를 모두 사용하기로 했다면, 수수료 납부 우선순위는 아래와 같습니다.

우선순위

파라미터

트랜잭션 수수료 대납주체

1

feepayer

사용자의 별도 대납 계정

2

useOperator

오퍼레이터

3

useGlobalFeepayer

KAS(추후 트랜잭션 수수료를 사용자에게 청구)

만약 여러분이 3개 파라미터를 모두 사용하기로 설정했다면, 우선순위가 높은 계정부터 앵커링 트랜잭션 수수료를 납부합니다. feepayer 계정 잔고가 부족하여 트랜잭션 수수료를 납부하기 어렵다면, 그 다음 순위가 오퍼레이터이므로 앵커링 트랜잭션을 전송하는 오퍼레이터가 수수료를 직접 납부합니다.

파라미터 설정별 동작을 정리하면 다음과 같습니다.

useGlobalFeepayer

feepayer

useOperator

우선순위

false

X

false

에러 발생

true

X

false

KAS

false

X

true

오퍼레이터

true

X

true

오퍼레이터 > KAS

false

O

false

사용자 대납 계정

false

O

true

사용자 대납 계정 > 오퍼레이터

true

O

true

사용자 대납 계정 > 오퍼레이터 > KAS

true

O

false

사용자 대납 계정 > KAS

오퍼레이터 생성 및 확인

파라미터 설정을 마쳤으면 오퍼레이터를 만듭니다.

오퍼레이터 목록에서 생성한 오퍼레이터를 확인할 수 있습니다.

이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.

Last updated