콘솔에서 시작하기

KAS를 사용하려면 KAS 회원에 가입해야 하며, 이메일 인증이 필요합니다. 이메일 인증이 완료되면 KAS를 사용할 수 있습니다.

KAS 회원 가입하기

1. 회원 가입 페이지로 접속해 로그인에 사용할 정보와 이름, 휴대전화 번호, 회사 정보를 입력합니다.

회원 가입

2. 정보 입력 후 [회원 가입]을 클릭하면 입력한 이메일로 인증 메일이 전송됩니다. KAS 인증 메일을 열어 인증 번호를 확인합니다.

인증 메일 확인

3. 메일에서 확인한 인증 번호를 KAS Console에서 입력하고 인증을 완료합니다.

메일 주소와 인증 번호 입력

4. 인증이 정상적으로 완료되면 로그인 페이지로 이동하게 됩니다.

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

KAS Console에 로그인하기

가입 시 입력한 이메일과 비밀번호로 로그인합니다.

로그인

로그인하면 기본 대시보드 페이지로 이동합니다. 대시보드 페이지에서는 KAS 계정별로 API 사용량을 확인할 수 있습니다.

대시보드 확인

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

Kaia 계정 생성하기

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

info

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

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

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

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

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

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

계정 저장소

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

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

  • 계정 저장소(Account Pool) : 일반적인 Kaia 계정들을 관리하는 저장소
  • 수수료 대납 계정 저장소(Fee-payer Pool) : 수수료 대납 계정들을 관리하는 저장소

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

계정 만들기

계정 저장소 생성

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

기본 계정 저장소

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

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

info

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

KAS Console > Service > Wallet > Account Pools

KAS Console > Service > Wallet > Account Pools 메뉴에서 [생성]을 클릭합니다. 버튼을 클릭하면 아래와 같이 Kaia 계정 저장소를 생성하는 화면이 나타납니다.

Service > Wallet > Account Pools

계정 저장소 생성

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

계정 저장소 생성

계정 저장소 확인

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

info

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

생성한 계정 저장소 확인

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

계정 생성

Console에서 생성

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

선택한 계정 저장소에서 계정 생성

API 호출

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

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

danger

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

cURLJavaScriptJava
Copy
Copied
//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"
Copy
Copied
const result = await caver.kas.wallet.createAccount();
Copy
Copied
Account account = caver.kas.wallet.createAccount();
System.out.println(account);

API 응답

Kaia 계정 생성 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
//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
}
Copy
Copied
Account {
  address: '0xC42cF87D75d3233de424cD68B0B6fE381aD83E98',
  chainId: 1001,
  createdAt: 1601876981,
  keyId: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default:0x199647191a710a38496ed645eeec3b82d980dd635eebe236464ebc3c28f2d841',
  krn: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default',
  publicKey: '0x04f86e01d9ec2f80cf47594c342aa1151a5b9cf95c3d0b8ba8613afa531ebdf7fe4b7c49c2b0d25be6491fe53b92bbb40f23f1f830ca50708f8fe2775f24e9c4ce',
  updatedAt: 1601876981
}
Copy
Copied
class Account {
    address: 0xE8785620772e6d5cddB4C71808C0EcF2FDEB4079
    chainId: 1001
    createdAt: 1602120333
    keyId: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool:0xa7b69c64336b0bc63481569cd81edaee81d61b35b4511d954dc534651eca75a3
    krn: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool
    publicKey: 0x04c5d9f0da5f39dcfb10fc386ce33853f6fbe0b75854433fd48af63af11ed889026d5b4f254637d21d8c03f9072065144529c0a54a36ed757b1893bad670d7dd0c
    updatedAt: 1602120333
    multiSigKeys: null
    threshold: null
}

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

생성한 계정에 KAIA 충전하기

warning

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

150 KAIA 충전하기

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

선택한 계정에 150 KAIA 충전

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

수수료 대납 계정 만들기

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

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

info

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

KAS Console > Service > Wallet > Fee-payer Pools

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

Service > Wallet > Fee-payer Pools

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

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

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

warning

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

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

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

info

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

생성한 수수료 대납 계정 저장소 확인

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

수수료 대납 계정 생성

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

수수료 대납 계정 저장소 목록

수수료 대납 계정 저장소 상세 정보 화면

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

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

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

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

생성된 수수료 대납 계정을 클릭하여 상세 정보 확인

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

오퍼레이터 만들기

KAS Console > Service > Anchor > Operators

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

Service > Anchor > Operators

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

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

오퍼레이터 생성 및 파라미터 설정 화면

파라미터 설명
feepayer 사용자의 수수료 대납 계정 주소. 자신만의 대납 계정으로 데이터 앵커링 트랜잭션 수수료를 납부할 경우 사용
useOperator 오퍼레이터가 데이터 앵커링 트랜잭션 수수료를 직접 납부할 것인지 여부
useGlobalFeepayer KAS에서 데이터 앵커링 트랜잭션 수수료를 대납해줄 것인지 여부(트랜잭션 수수료는 사용자에게 추후 청구됨)
  • useGlobalFeepayer 를 사용하면 KAIA 잔고가 부족해도 데이터 앵커링 트랜잭션을 전송
  • 3개 파라미터가 모두 다 설정되어 있지 않은 경우엔 에러를 반환
  • 1개 이상의 파라미터를 입력했다면 아래 우선 순위를 따라서 데이터 앵커링 트랜잭션 수수료를 대납
warning

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

info

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

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

우선순위 파라미터 트랜잭션 수수료 대납주체
1 feepayer 사용자의 별도 대납 계정
2 useOperator 오퍼레이터
3 useGlobalFeepayer KAS(추후 트랜잭션 수수료를 사용자에게 청구)

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

Feepayer와 GlobalFeepayer만을 사용하는 예시

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

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에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

API 인증 키 생성하기

API 인증 키란 KAS API를 호출하는 주체가 KAS 회원이 맞는지 증명하는 수단입니다. 인증 키는 AccessKey IDSecret AccessKey로 구성되며 API 호출 시 호출 헤더에 다음과 같이 인증 키를 입력합니다.

Copy
Copied
...
-u {access-key-id}:{secret-access-key}
...

KAS Console에서 Security > Credential 메뉴를 클릭합니다.

Security > Credential 메뉴

[AccessKey 생성]을 클릭하면 AccessKey ID와 Secret AccessKey가 생성됩니다. 다운로드를 클릭하여 kas-credential-{access-key-id}.json이라는 파일명으로 생성한 인증 키를 다운받습니다.

API 인증 키 생성

API 인증 키에서 인증 비밀번호인 Secret AccessKeyAuthorization최초 생성 시 한 번만 확인할 수 있습니다. 따라서, 최초 생성 시 반드시 Secret AccessKey와 Authorization을 안전한 곳에 복사 또는 다운로드해 관리해야 합니다. 인증 키 생성시 확인할 수 있는 Authorization (예: Basic S0FTS1A2WkRaSjh...)은 Basic 인증 방식을 이용하여 AccessKey IDSecret AccessKey를 인코딩한 값이며 API 호출 시 호출 헤더에 사용합니다.

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

danger

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

info

인증 키는 KAS Console > Security > Credential 메뉴에서 생성할 수 있습니다.
인증 키는 최대 2개까지 생성 가능합니다.
인증 키를 교체하려면 기존 키를 삭제하고 새 인증 키를 만들어야 합니다.

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