계정 생성과 관리

Wallet API로 Klaytn 계정을 생성하고 관리하는 방법을 안내합니다.

튜토리얼에 앞서

  • API 호출에 사용되는 x-chain-id 값은 8217(Cypress) 또는 1001(Baobab)입니다.
  • API 호출에 필요한 필수 파라미터는 각 예시에 설명됩니다.

API 호출 시 사용자가 입력해야 하는 값은 중괄호 1개({})로 표시합니다. 사용자가 입력해야 하는 값은 아래 테이블과 같습니다.

항목 비고
chain-id 8217 또는 1001 Cypress(Klaytn 메인넷) 또는 Baobab(Klaytn 테스트넷)
access-key-id 인증 아이디 KAS Console > Security > Credential에서 발급받은 accessKeyId
secret-access-key 인증 비밀번호 KAS Console > Security > Credential에서 발급받은 secretAccessKey
krn (optional) 계정 저장소의 ID 기본 계정 저장소 사용 시 불필요

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

danger

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

info

KAS SDK(caver-js/caver-java extension) 설치, 실행에 관한 자세한 내용은 KAS SDK를 확인하십시오.
계정 저장소 생성, 계정 생성, 계정 선택에 관한 자세한 내용은 Getting Started를 확인하십시오.

계정 저장소 생성

KAS는 여러 Klaytn 계정을 관리하는 계정 저장소를 제공합니다. KAS를 사용하려면 여러분은 KAS Console에서 계정 저장소를 만들고, 계정 생성 API로 콘솔에서 만든 계정 저장소에 새로운 Klaytn 계정을 만들어야 합니다. 여러분은 KAS Console에서 하나 이상의 계정 저장소를 생성할 수 있으며, 각 계정 저장소의 KRN값을 Klaytn 계정 생성 API 호출 헤더의 x-krn에 입력하면 해당 계정 저장소에 새로운 Klaytn 계정을 만들 수 있습니다.

  • Klaytn 계정

    블록체인 플랫폼인 Klaytn에서 KLAY, FT, NFT와 같은 가상자산을 소유, 거래하거나 스마트 컨트랙트를 배포하고 실행하는 주체입니다. Klaytn 계정에 관한 자세한 내용은 Klaytn Docs의 계정을 확인하십시오.

  • 기본 계정 저장소

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

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

1. Account Pools 생성

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

Accounts Pools 생성

2. 계정 저장소 생성

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

계정 저장소 생성

3. 계정 저장소 확인

생성한 계정 저장소는 계정 저장소 목록에서 확인할 수 있습니다.

생성한 계정 저장소 목록

Klaytn 계정 생성

info

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

API 호출

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

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:8217: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 응답

Klaytn 계정 생성 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:8217:wallet:6698d79e-78ee-439a-815d-f293ec6ae736:account-pool:ap1:0x4cbbcb974e32a7960e1b356edf60087613101919ed83199f12e872cba068a50f",
  "krn": "krn:8217:wallet:6698d79e-78ee-439a-815d-f293ec6ae736:account-pool:ap1",
  "publicKey": "0x04cdccfb99b2905561e3dd886687b429a004718f11b04914f17ce68fd3a0db46c598a45da85caa61fe84cb78a0f2eaa9983ec7b8805a93ef9428eb1350a8558237",
  "updatedAt": 1599187293
}
Copy
Copied
Account {
  address: '0x09634F250DeAaA20d0F93da624662eB5339E6212',
  chainId: 1001,
  createdAt: 1601970606,
  keyId: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default:0xc8bca3c1f9e09d4f38b6a629f27fff9cab3ead3ddf3791c2df01d9f0d8b743f2',
  krn: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default',
  publicKey: '0x04df8709251407a1663432ae0e0f21291b9d6ec01ad656773a56b951ebcc56c65323f4dfe7141ce71a6350f7186f6150db8833f30be357cc8bb4d416a9f5402548',
  updatedAt: 1601970606
}
Copy
Copied
class Account {
    address: 0x0BA67C887F922AF3d0D781dD940c6d0C80D395DE
    chainId: 1001
    createdAt: 1602550121
    keyId: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool:0xbedefad10db4df3488aaf1669b9164549c1aebe7c326f4b19ba6c6ce0f330fa5
    krn: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool
    publicKey: 0x041d56cbe46915854600c9d3c4ef614906f27473abe948cf587d990dcbce030d5989f4458bc470e44b2916d75194729102bb60e1e6a27c01030de84208a13232c2
    updatedAt: 1602550121
    multiSigKeys: null
    threshold: null
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 기본 계정 생성을 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

Klaytn 계정 조회

Klaytn 계정 조회 API는 생성된 Klaytn 계정의 정보를 조회할 때 사용됩니다.

API 호출

계정 EOA를 입력하고 Klaytn 계정 조회 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request GET "https://wallet-api.klaytnapi.com/v2/account/0xa809284C83b901eD106Aba4Ccda14628Af128e14" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
Copy
Copied
const result = await caver.kas.wallet.getAccount(accountToTest.address);
Copy
Copied
String address = "0xBD1b03C426Bfa132C838C05846D61941C5b6e820";
Account account = caver.kas.wallet.getAccount(address);
System.out.println(account);

API 응답

Klaytn 계정 조회 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
{
  "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
}
Copy
Copied
Account {
  address: '0x74a0a04c16025da4d24154440918035497795c14',
  chainId: 1001,
  createdAt: 1601970655,
  keyId: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default:0x5870e94faea33f3f447cc588a1d09a98c8926f258efccb01678e6c98112c1fb7',
  krn: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default',
  publicKey: '0x04686e10c48f86bf6a2127b429b5cd2fe308ac50b57db123ba3760fd845872c0d01c5f55792d5dff79a3fc3bc972af8b8a67a8bcbf906c1bd1e1e53b8c1e537f9e',
  updatedAt: 1601970655
}
Copy
Copied
class Account {
    address: 0xBD1b03C426Bfa132C838C05846D61941C5b6e820
    chainId: 1001
    createdAt: 1602550228
    keyId: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool:0x8a13fa72996d1ea1c9619326846854ae906d65ed11e4f89642fff5329c231c36
    krn: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool
    publicKey: 0x046fd7fb4be4ac31b2f7822a4a1a05a2a510dc810af44497491e4a1b657b9724b4980238a0a9b56e3fa8570ac89ce352ba1de348a18751c83bd55c29a243d8f5c8
    updatedAt: 1602550228
    multiSigKeys: null
    threshold: null
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 계정 조회를 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

Klaytn 계정 목록 조회

Klaytn 계정 목록 조회 API는 생성된 Klaytn 계정 목록을 조회할 때 사용됩니다.

API 호출

Klaytn 계정 목록 조회 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

쿼리 파라미터

커서 방식 페이지네이션을 사용해 API 응답값을 받아올 수 있습니다. 검색 범위를 초단위로 지정할 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request GET "https://wallet-api.klaytnapi.com/v2/account?&size=100&cursor=&from-timestamp=1592360291&to-timestamp=15991809920" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
Copy
Copied
const query = {
  size: 1,
  fromTimestamp: 1501970769,
  toTimestamp: 1601970769,
  cursor:
    "eyJBZGRyZXNzIjoia3JuOjEwMDE6d2FsbGV0OjhlNzZkMDAzLWQ2ZGQtNDI3OC04ZDA1LTUxNzJkOGYwMTBjYTphY2NvdW50LXBvb2w6ZGVmYXVsdDoweDUzM0ZjQzMyMWE4ODgxQzllNEEzNUIzMUJhZWI4MEI1MWE3RDI2OEQiLCJUeXBlIjoiQUNDIiwiY3JlYXRlZF9hdCI6MTYwMTk3MDc2OSwicnBuIjoia3JuOjEwMDE6d2FsbGV0OjhlNzZkMDAzLWQ2ZGQtNDI3OC04ZDA1LTUxNzJkOGYwMTBjYTphY2NvdW50LXBvb2w6ZGVmYXVsdCJ9",
};
const result = await caver.kas.wallet.getAccountList(query);
Copy
Copied
WalletQueryOptions options = new WalletQueryOptions();
options.setSize((long)1);
options.setFromTimestamp((long)1601020759);
options.setToTimestamp((long)1602495442l);

Accounts accounts = caver.kas.wallet.getAccountList(options);
System.out.println(accounts);

API 응답

Klaytn 계정 목록 조회 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
{
  "cursor": "",
  "items": [
    {
      "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": "0x78B123CCCCd50f41E3192a60e6ED92B15E21b1B5",
      "chainId": 1001,
      "createdAt": 1599187194,
      "keyId": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x6c4419647e7724853f9e50b0c54b5985d0870470ac37b3ef865e62c3ccfa4ea4",
      "krn": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default",
      "publicKey": "0x0463cc38f08dd15dfd416966e9d0da93942e26d2a9a9bcac08d614f487f94a7e46e4418d1acda9e21706f19c917486de40c974eb20c12a2eca2eea91895499d379",
      "updatedAt": 1599187194
    },
   ...
   ,
    {
      "address": "0x7ec5169EA28B2e3fFEF143a3513D7eC1CeFF2cB4",
      "chainId": 1001,
      "createdAt": 1599187161,
      "keyId": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0xd3ee56e2616c8d412918e7f0e9222c805aacf5bad6d84b70b83c2229d61f21c9",
      "krn": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default",
      "publicKey": "0x043ccf257d2ad3f8c3b2128969302efc6bf59d8cd8e578bcfdac8a4ac9cea6d4747350c98edaec5d23fafa9b3288a3b45816d2e9b3bb28443cc2486ad6bca652f1",
      "updatedAt": 1599187161
    }
  ]
}
Copy
Copied
Accounts {
  cursor: 'eyJBZGRyZXNzIjoia3JuOjEwMDE6d2FsbGV0OjhlNzZkMDAzLWQ2ZGQtNDI3OC04ZDA1LTUxNzJkOGYwMTBjYTphY2NvdW50LXBvb2w6ZGVmYXVsdDoweERGZTdlMjBGMjNhNDBDM0M4OTExMzk2YUYzREJhMjU3NTEzQzM5NTkiLCJUeXBlIjoiQUNDIiwiY3JlYXRlZF9hdCI6MTYwMTk3MDczOSwicnBuIjoia3JuOjEwMDE6d2FsbGV0OjhlNzZkMDAzLWQ2ZGQtNDI3OC04ZDA1LTUxNzJkOGYwMTBjYTphY2NvdW50LXBvb2w6ZGVmYXVsdCJ9',
  items: [
    Account {
      address: '0xDFe7e20F23a40C3C8911396aF3DBa257513C3959',
      chainId: 1001,
      createdAt: 1601970739,
      keyId: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default:0x2a6b68676a8ab5312d606aef6198b86399091c791264a77dfb351fc1860ab158',
      krn: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default',
      publicKey: '0x04e58e1011de62f6981af17faa4b11aa8c2bcafd6a9765db2df57decb6cc4500ee0d82ecba932ffc5bdee883d970944f4098627a631a0b1d84b270dbf4ea811a9d',
      updatedAt: 1601970739
    }
  ]
}
Copy
Copied
class Accounts {
    cursor: eyJBZGRyZXNzIjoia3JuOjEwMDE6d2FsbGV0OmQ1YzM0NmY1LWJiODAtNGY0NS05MDkzLTU3ZTI1MjA1Y2RjODphY2NvdW50LXBvb2w6cG9vbDoweEEzNjQwRTdkMDM3ODRhODE2N0ZjNTU0N0RFNUYxODRmNkM4ZTRFRWIiLCJUeXBlIjoiQUNDIiwiY3JlYXRlZF9hdCI6MTYwMjQ5NTQ0MiwicnBuIjoia3JuOjEwMDE6d2FsbGV0OmQ1YzM0NmY1LWJiODAtNGY0NS05MDkzLTU3ZTI1MjA1Y2RjODphY2NvdW50LXBvb2w6cG9vbCJ9
    items: [class Account {
        address: 0xA3640E7d03784a8167Fc5547DE5F184f6C8e4EEb
        chainId: 1001
        createdAt: 1602495442
        keyId: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool:0xa52d4457198474d1aa314c6fab1a77a92ca4b8969a3c605e5083bd7bcd37b890
        krn: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool
        publicKey: 0x048c6ed6327200eac60eea1dd07df87d927f473f67298c91b0195d519ec3ed07218d905dbc46d2af5a456ba661d8474cada5fd99c8063f42dfa9605094bf6ce40c
        updatedAt: 1602495442
        multiSigKeys: null
        threshold: null
    }]
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 계정 목록 조회를 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

Klaytn 계정 삭제

Klaytn 계정 삭제 API는 Klaytn 계정을 삭제할 때 사용됩니다.

warning

Klaytn 계정을 삭제하면 해당 계정으로는 서명할 수 없습니다.

API 호출

삭제할 계정 주소(EOA)를 입력하고 Klaytn 계정 삭제 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request DELETE "https://wallet-api.klaytnapi.com/v2/account/0xa809284C83b901eD106Aba4Ccda14628Af128e14" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
Copy
Copied
const result = await caver.kas.wallet.deleteAccount(created.address);
Copy
Copied
String account = "0x9D2978c98A165EA2F426035C1c13D1871Ca83646";
AccountStatus accountStatus = caver.kas.wallet.deleteAccount(account);

System.out.println(accountStatus);

API 응답

Klaytn 계정 삭제 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
{
  "status": "deleted"
}
Copy
Copied
AccountStatus { status: 'deleted' }
Copy
Copied
class AccountStatus {
    status: deleted
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 계정 삭제를 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

Klaytn 계정 비활성화

Klaytn 계정 비활성화 API는 생성된 Klaytn 계정을 비활성화할 때 사용됩니다.

API 호출

비활성화할 계정 주소(EOA)를 입력하고 Klaytn 계정 비활성화 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/account/0xa809284C83b901eD106Aba4Ccda14628Af128e14/disable" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
Copy
Copied
const result = await caver.kas.wallet.disableAccount(accountToTest.address);
Copy
Copied
String address = "0x10Fb446303d019E89c2033C833ceC2e5ae875b5F";

AccountSummary status = caver.kas.wallet.disableAccount(address);
System.out.println(status);

API 응답

Klaytn 계정 비활성화 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
{
  "address": "0xa809284C83b901eD106Aba4Ccda14628Af128e14",
  "krn": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default",
  "updatedAt": 1599187344
}
Copy
Copied
AccountSummary {
  address: '0xE80bFBE82230ff91113728f2392a9bf2b607393a',
  krn: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default',
  updatedAt: 1601971006
}
Copy
Copied
class AccountSummary {
    address: 0x10Fb446303d019E89c2033C833ceC2e5ae875b5F
    krn: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool
    updatedAt: 1602550794
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 계정 비활성화를 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

Klaytn 계정 활성화

Klaytn 계정 활성화 API는 생성된 Klaytn 계정을 활성화할 때 사용됩니다.

API 호출

활성화할 계정 주소(EOA)를 입력하고 Klaytn 계정 활성화 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request GET "https://wallet-api.klaytnapi.com/v2/account/0xa809284C83b901eD106Aba4Ccda14628Af128e14/enable" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
Copy
Copied
const result = await caver.kas.wallet.enableAccount(accountToTest.address);
Copy
Copied
String address = "0xDEe95846929A2703D57F2d2994ee64316f771418";
AccountSummary enableSummary = caver.kas.wallet.enableAccount(address);

System.out.println(enableSummary);

API 응답

Klaytn 계정 활성화 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
{
  "address": "0xa809284C83b901eD106Aba4Ccda14628Af128e14",
  "krn": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default",
  "updatedAt": 1599187359
}
Copy
Copied
AccountSummary {
  address: '0xE80bFBE82230ff91113728f2392a9bf2b607393a',
  krn: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default',
  updatedAt: 1601971006
}
Copy
Copied
class AccountSummary {
    address: 0xDEe95846929A2703D57F2d2994ee64316f771418
    krn: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool
    updatedAt: 1602551180
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 계정 활성화를 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

특정 트랜잭션 서명

Klaytn 계정으로 특정 트랜잭션 ID를 가진 트랜잭션에 서명합니다. 이 API는 트랜잭션이 다중 서명을 받아야 할 때 사용하는 API입니다. 트랜잭션이 다중 서명을 받아야 하는 상황이 아니라면 Wallet API가 여러분을 대신해 자동으로 트랜잭션에 서명하므로 이 API를 사용할 필요가 없습니다.

info

트랜잭션이 다중 서명을 받아야 하는 상황이란 트랜잭션을 보내려는 Klaytn 계정이 다중 서명 키를 가진 상황을 의미합니다.
트랜잭션에 다중 서명을 받아 전송하는 방법에 관한 자세한 내용은 다중 서명 트랜잭션을 확인하십시오.

info

클레이큰 계정 키에 관한 자세한 내용은 Klaytn Docs의 계정을 확인하십시오.

API 호출

서명하려는 Klaytn 계정 주소(EOA)와 서명을 받을 트랜잭션의 ID값을 입력하고 트랜잭션 서명 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

info

트랜잭션 ID는 보류 중인 트랜잭션 목록 조회 API 응답값에서 얻을 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request POST "https://wallet-api.klaytnapi.com/v2/account/0xa809284C83b901eD106Aba4Ccda14628Af128e14/tx/{transaction-id}/sign" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
Copy
Copied
const address = "0xDbe780a8db6Dd219Fad25CDe29cB27392714f3ba";
const transactionId =
  "0x846534f00729fb838ade7478770d32d54f2b9ad4994f0c2ba8c5d569b241ae77";
const result = await caver.kas.wallet.signTransaction(address, transactionId);
Copy
Copied
String address = "0xDbe780a8db6Dd219Fad25CDe29cB27392714f3ba";
String transactionId = "0x846534f00729fb838ade7478770d32d54f2b9ad4994f0c2ba8c5d569b241ae77";
Signature signature = caver.kas.wallet.signTransaction(address, transactionId);

System.out.println(signature);

API 응답

트랜잭션 서명 API의 응답은 아래와 같습니다. ECDSA 서명 정보(R,S)와 공개키 복원정보(V)를 반환합니다.

cURLJavaScriptJava
Copy
Copied
{
  "R": "0x670a63ca525b80f67cd412a88ffb5cabb84616fb4cb43ff827552586fc722403",
  "S": "0x2f20ad3f4b3c2483a4ae4213a871e404f7214ffd84845fad022c3316eb0af09b",
  "V": "0x7f6"
}
Copy
Copied
Signature {
  R: '0x9f1c0bafa5763120c2cbcdf80c73874cf37d63a2ed71799de3ff8d61ccc29b4d',
  S: '0x5d2266f82e1089141de759c63e49d275cabcd7cf5f723615750abc0efc8dfc69',
  V: '0x7f6'
}
Copy
Copied
class Signature {
    R: 0xdf18c28d936cc411732ec3d1c00a0ec1ae5c4f9910f3aa529c566a46a058e0e1
    S: 0x3825119d0c74b9dcb1dd8fb5636e09b1c7544110173ac47394a38df3c0f41901
    V: 0x7f6
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 트랜잭션 사인을 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

공개키로 계정 정보 조회

이 API는 Wallet API를 통해 생성한 Klaytn 계정 중에서 특정 공개키(Public Key)를 가진 계정 정보를 조회합니다.

API 호출

공개키를 입력하고 이 공개키를 가진 Klaytn 계정 정보를 조회하는 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request GET "https://wallet-api.klaytnapi.com/v2/pubkey/0x049e00f9fbc12f01./account" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
Copy
Copied
const publicKey =
  "0x04334fbfedaa65df28797fdbd54778179ecc0929ddf40189e1470029e5efca4a0fadd510680228d261234e11f425ce85adb2a3ad014b2bb07470e66425ed483fd0";
const result = await caver.kas.wallet.getAccountListByPublicKey(publicKey);
Copy
Copied
String publicKey = "0x04f715a9d9e0f7a4b152d4ef8a67f4708fc1f83fe2e1984cf0f72987dbacbad324fb619fbdf30497441eddf80676403f0009f07b4195915df7220c79183e9d1f27";
AccountsByPubkey accounts = caver.kas.wallet.getAccountListByPublicKey(publicKey);

System.out.println(accounts);

API 응답

공개키를 사용한 Klaytn 계정 조회 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
{
  "items": [
    {
      "address": "0x0b7caaf70e7A0a5399041c64711E535CE8B3cf7d",
      "chainId": 1001
    },
    {
      "address": "0xc6C9356887b7F7887918Bf577417E5D8De253295",
      "chainId": 1001
    }
  ]
}
Copy
Copied
AccountsByPubkey {
  items: [
    AccountByPubkey {
      address: '0x8e53770c83c1Ec6C52226Bc27B1743731486a61b',
      chainId: 1001
    }
  ]
}
Copy
Copied
class AccountsByPubkey {
    items: [class AccountByPubkey {
        address: 0x0be73FcBE9F4D66b949eCC0a61325170460e4f88
        chainId: 1001
    }]
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 공개키 연관 계정 조회를 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

내 계정을 다중 서명 계정으로 업데이트

다중 서명 계정이란 다중 서명 키를 가진 Klaytn 계정입니다. 여러 계정이 트랜잭션에 서명해야 하는 다중 서명 트랜잭션을 보내려면 다중 서명 계정을 사용해야 합니다. KAS도 Klaytn과 마찬가지로 다중 서명 트랜잭션을 지원합니다. KAS에서 다중 서명 트랜잭션을 보내려면 여러분의 Klaytn 계정 키가 다중 서명 키여야 합니다.

다중 서명 계정을 간단히 설명하면, 다중 서명을 위해 여러 키(개인키-공개키 쌍)을 가진 계정이며, 이 키들은 각각 다른 Klaytn 계정들이 소유하고 있습니다. 각 키에는 가중치(weight)를 설정할 수 있습니다.

예를 들어, 어떤 Klaytn 계정 A가 키 2개짜리 다중 서명 계정이라면 계정 A의 키는 (계정 B의 key, 계정 C의 key)의 2개 키로 구성되고, 각 키의 가중치는 (weight1, weight2)일 수 있습니다. 만약 이 상황에서 계정 B만 자신의 AccountKey로 트랜잭션에 서명했다면 서명에 사용된 AccountKey 가중치의 합은 weight1입니다. 그리고 이 상태에서 계정 C도 트랜잭션에 서명한다면 서명에 사용된 AccountKey 가중치의 합은 weight1 + weight2입니다. 이렇게, 서명에 사용된 모든 AccountKey weight의 합이 기준치(threshold)보다 크거나 같아야 트랜잭션이 전송됩니다. 기준치는 Klaytn 계정을 다중 서명 계정으로 업데이트할 때, 다시 말해 계정 키를 다중 서명 키로 업데이트할 때 입력 파라미터로 설정할 수 있습니다.

info

다중 서명 계정에 관한 자세한 내용은 Klaytn Docs의 계정을 확인하십시오.

Klaytn 계정을 다중 서명 계정으로 업데이트하는 데는 2가지 방법이 있습니다. KAS Console에서 Multi-sig Update를 하거나 API를 호출하여 계정을 업데이트합니다.

info

다중 서명 계정으로 업데이트하려면 트랜잭션 수수료 이상의 잔고를 보유해야 합니다. 생성한 계정에 KLAY 충전하기를 참고하세요.

KAS Console에서 Multi-sig Update하기

1. KAS Console에 접속하여 로그인합니다.

2. KAS Console > Service > Wallet > Account Pools 메뉴에서 해당 계정 저장소 KRN을 선택합니다.
Account Pool 상세정보로 이동한 것을 확인할 수 있습니다.

Account Pools

Account Pool 상세정보

3. 다중 서명으로 업데이트할 계정을 선택, Account 상세정보로 이동하여 [Multi-sig Update]를 클릭합니다.

4. Threshold(임계값) 아래 칸에 트랜잭션 서명에 필요한 최소한의 가중치 합을 숫자로 입력합니다. Key List에는 Pulic KeyWeight 숫자값을 입력 후 [추가]를 클릭합니다.

Account 상세정보

5. 입력한 값이 정확한지 확인 후 우측 하단의 [저장]을 클릭합니다.
이후 Account 상세정보에서 Multi-sig Keys 목록이 업데이트된 걸 확인할 수 있습니다.

Multi-sig Keys

Klaytn 계정 생성하기

다중 서명 계정을 만들기 위해서는 Klaytn 계정 생성을 완료한 상태여야 합니다. 또, 다중 서명 계정에 포함될 키를 지닌 계정은 모두 똑같은 계정 저장소에 있어야 합니다. 여기에서는, "0x07DAe1aAb1e1b42A7184E12Ad50CEAc07A890640"라는 EOA를 가진 Klaytn 계정을 키가 2개인 다중 서명 계정으로 업데이트하는 예시를 소개합니다.

Klaytn 계정 A가 키 2개짜리 다중 서명 계정이라면 계정 A의 키는 (계정 B의 key, 계정 C의 key)의 2개 키로 구성될 수 있습니다. 계정 A가 다중 키를 가지려면 해당 키를 가지는 Klaytn 계정(계정 B, 계정 C)가 KAS에 존재해야 합니다.

아래는 생성한 Klaytn 계정 예시입니다.

Copy
Copied
//계정 A
{
  "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
}
//계정 B
{
  "address": "0x78B123CCCCd50f41E3192a60e6ED92B15E21b1B5",
  "chainId": 1001,
  "createdAt": 1599187194,
  "keyId": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0x6c4419647e7724853f9e50b0c54b5985d0870470ac37b3ef865e62c3ccfa4ea4",
  "krn": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default",
  "publicKey": "0x0463cc38f08dd15dfd416966e9d0da93942e26d2a9a9bcac08d614f487f94a7e46e4418d1acda9e21706f19c917486de40c974eb20c12a2eca2eea91895499d379",
  "updatedAt": 1599187194
}
//계정 C
{
  "address": "0x7ec5169EA28B2e3fFEF143a3513D7eC1CeFF2cB4",
  "chainId": 1001,
  "createdAt": 1599187161,
  "keyId": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default:0xd3ee56e2616c8d412918e7f0e9222c805aacf5bad6d84b70b83c2229d61f21c9",
  "krn": "krn:1001:wallet:68ec0e4b-0f61-4e6f-ae35-be865ab23187:account-pool:default",
  "publicKey": "0x043ccf257d2ad3f8c3b2128969302efc6bf59d8cd8e578bcfdac8a4ac9cea6d4747350c98edaec5d23fafa9b3288a3b45816d2e9b3bb28443cc2486ad6bca652f1",
  "updatedAt": 1599187161
}

계정 A를 다중 서명 계정으로 업데이트 다중 서명 계정 업데이트 API는 여러분의 계정을 다른 Klaytn 계정들도 함께 서명해야 트랜잭션을 보낼 수 있는 다중 서명 계정으로 업데이트합니다. 여기에서는, "0xa809284C83b901eD106Aba4Ccda14628Af128e14"라는 EOA를 가진 Klaytn 계정(=계정 A)을 키 2개(계정 B, 계정 C의 키), 키별 가중치는 각각 (3, 1), 기준치는 4를 가진 다중 서명 계정으로 업데이트하는 예시를 소개합니다.

API 호출

다중 서명 계정 업데이트 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.

cURLJavaScriptJava
Copy
Copied
curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/account/0xa809284C83b901eD106Aba4Ccda14628Af128e14/multisig" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}" \
--header "Content-Type: application/json" \
--data-raw "{
    "threshold": 4,
    "weightedKeys": [
        {
            "weight": 3,
            "publicKey": "0x0463cc38f08dd15dfd416966e9d0da93942e26d2a9a9bcac08d614f487f94a7e46e4418d1acda9e21706f19c917486de40c974eb20c12a2eca2eea91895499d379"
        },
        {
            "weight": 1,
            "publicKey": "0x043ccf257d2ad3f8c3b2128969302efc6bf59d8cd8e578bcfdac8a4ac9cea6d4747350c98edaec5d23fafa9b3288a3b45816d2e9b3bb28443cc2486ad6bca652f1"
        }
    ]
}"
Copy
Copied
const address = "0x385500f711c20f22Ebe9599C7cb7Ed2e8495AA87";
const weightedMultisig = {
  threshold: 3,
  weightedKeys: [
    {
      weight: 1,
      publicKey:
        "0x047080d0a3368c2e6e2e03dbe40e82a07109bcbff199fc1650b4ed1d0a2bd7a39eef8c1b6d59423e2de48f391ed996eee6fa876be13c54fafde52301f290453c9a",
    },
    {
      weight: 1,
      publicKey:
        "0x04023337c168044de198c556a842344c3c3b173a5b8628ad2f9b0bf5b8481847844cda8b08acfec66fd483fcf2a3b007adf1f34d72aae59df664b031e012bae72a",
    },
    {
      weight: 1,
      publicKey:
        "0x0429f095fabc59bd3dadf43103acc5a1c090d0fe238b7d8ebd89684a768ca21fa82ad4dfb146825783c8b2e0f51c9d0f9ddea57bce65cf7e967f8454ba3195dc86",
    },
  ],
};
const result = await caver.kas.wallet.updateToMultiSigAccount(
  address,
  weightedMultisig
);
Copy
Copied
String address = "0x95AdA22b2C49C31b070b22347485B6739D00e32a";
String[] publicKeyArr = new String[] {
        "0x044b36e9c4e8c6bea364c3c4d214625a70e5e697ac551d99a6eb39197b3c26640dbaaa11b7dc36c2ca3b447bb78a27bb00f4e8fef5ed3401db1358270c52dee9f4",
        "0x047fa3b3a09e9846edecfa1548ecb131c9705255685bfb9b0620de6c7e97d4f17d828317c6ff9dfcebc9bb5086cddf3dbc1ca552c6fc0e019f266b24c6b46ae782",
        "0x0462f067faefd6d087f0e087abc23802af0721302777ed8e77c4544eabf031c794ebf0b83dfad9932b972a0e1b8e3abd31560e97a8610303026806db8e8081d0fe"
};

List<MultisigKey> multiSigKeys = Arrays.stream(publicKeyArr).map(key -> {
    MultisigKey multisigKey = new MultisigKey();
    multisigKey.setWeight((long)2);
    multisigKey.setPublicKey(key);

    return multisigKey;
}).collect(Collectors.toList());

MultisigAccountUpdateRequest request = new MultisigAccountUpdateRequest();
request.setThreshold((long)3);
request.setWeightedKeys(multiSigKeys);

MultisigAccount account = caver.kas.wallet.updateToMultiSigAccount(address, request);
System.out.println(account);

API 응답

다중 서명 계정 업데이트 API의 응답은 아래와 같습니다.

cURLJavaScriptJava
Copy
Copied
{
  "code": 0,
  "result": {
    "address": "0xa809284C83b901eD106Aba4Ccda14628Af128e14",
    "krn": "krn:1001:wallet:test:account-pool:rp1",
    "multiSigKeys": [
      {
        "publicKey": "0x0463cc38f08dd15dfd416966e9d0da93942e26d2a9a9bcac08d614f487f94a7e46e4418d1acda9e21706f19c917486de40c974eb20c12a2eca2eea91895499d379",
        "weight": 3
      },
      {
        "publicKey": "0x043ccf257d2ad3f8c3b2128969302efc6bf59d8cd8e578bcfdac8a4ac9cea6d4747350c98edaec5d23fafa9b3288a3b45816d2e9b3bb28443cc2486ad6bca652f1",
        "weight": 1
      }
    ],
    "threshold": 4,
    "transactionHash": "0x2b0f6ecd671e4a7075f22c7f46ea43ab8016747e6aae05d8dac4f487a3e640a0",
    "updatedAt": 1597297768
  }
}
Copy
Copied
MultisigAccount {
  address: '0x385500f711c20f22Ebe9599C7cb7Ed2e8495AA87',
  krn: 'krn:1001:wallet:8e76d003-d6dd-4278-8d05-5172d8f010ca:account-pool:default',
  threshold: 3,
  transactionHash: '0x69c65222d9ea58b2674b11f04d5fa6b40176fc93639909eb303a237de868fa8b',
  updatedAt: 1601971504,
  multiSigKeys: [
    MultisigKey {
      publicKey: '0x047080d0a3368c2e6e2e03dbe40e82a07109bcbff199fc1650b4ed1d0a2bd7a39eef8c1b6d59423e2de48f391ed996eee6fa876be13c54fafde52301f290453c9a',
      weight: 1
    },
    MultisigKey {
      publicKey: '0x04023337c168044de198c556a842344c3c3b173a5b8628ad2f9b0bf5b8481847844cda8b08acfec66fd483fcf2a3b007adf1f34d72aae59df664b031e012bae72a',
      weight: 1
    },
    MultisigKey {
      publicKey: '0x0429f095fabc59bd3dadf43103acc5a1c090d0fe238b7d8ebd89684a768ca21fa82ad4dfb146825783c8b2e0f51c9d0f9ddea57bce65cf7e967f8454ba3195dc86',
      weight: 1
    }
  ]
}
Copy
Copied
class MultisigAccount {
    address: 0x95AdA22b2C49C31b070b22347485B6739D00e32a
    krn: krn:1001:wallet:d5c346f5-bb80-4f45-9093-57e25205cdc8:account-pool:pool
    multiSigKeys: [class MultisigKey {
        publicKey: 0x044b36e9c4e8c6bea364c3c4d214625a70e5e697ac551d99a6eb39197b3c26640dbaaa11b7dc36c2ca3b447bb78a27bb00f4e8fef5ed3401db1358270c52dee9f4
        weight: 2
    }, class MultisigKey {
        publicKey: 0x047fa3b3a09e9846edecfa1548ecb131c9705255685bfb9b0620de6c7e97d4f17d828317c6ff9dfcebc9bb5086cddf3dbc1ca552c6fc0e019f266b24c6b46ae782
        weight: 2
    }, class MultisigKey {
        publicKey: 0x0462f067faefd6d087f0e087abc23802af0721302777ed8e77c4544eabf031c794ebf0b83dfad9932b972a0e1b8e3abd31560e97a8610303026806db8e8081d0fe
        weight: 2
    }]
    threshold: 3
    transactionHash: 0xd727d047c413b3a23c0c003169e816aaee82c404eadac1edae5dc16d86317f6d
    updatedAt: 1602552587
}

이 API에 관한 자세한 내용은 KAS Reference Documentation의 Multisig 계정 업데이트를 확인하십시오.
이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

계정 업데이트 트랜잭션 생성

기존에 사용하던 계정의 개인 키로 계정 업데이트 트랜잭션을 생성해야 합니다.

danger

반드시 공개키 타입대납 계정 업데이트 트랜잭션으로 생성해야 합니다. 공개키 타입이 아닌 다른 계정 업데이트 트랜잭션을 만들면 계정을 사용하지 못할 수 있습니다.

Multisig 계정을 사용하고자 하는 경우에는 마이그레이션 절차를 모두 수행한 후에, Wallet API의 Multisig 계정 업데이트 API를 통해서 변경해 주시길 바랍니다. 마이그레이션 방법은 Klaytn 계정 마이그레이션에서 확인하세요.

API 호출

JavaScriptJava
Copy
Copied
// Klaytn 계정을 KAS Wallet API로 마이그레이션하기 위해서는 트랜잭션을 생성하고 이를 서명하여 KAS로 전송해야 합니다.
// 트랜잭션에 서명하기 위해 Klaytn 계정으로 Keyring 인스턴스를 생성하고 이를 KeyringContainer에 추가합니다.
// 만약 Klaytn 계정의 키가 `AccountKeyWeigthedMultiSig`이거나 `AccountKeyRoleBased`인 경우
// `keyringContainer.keyring.create` 의 두 번째 파라미터를 배열 혹은 이중 배열로 넘기면 됩니다.
// 더욱 자세한 내용은 https://ko.docs.klaytn.foundation/dapp/sdk/caver-js/api-references/caver.wallet/keyring#caver-wallet-keyring-create 를 참고해 주세요.
const keyringContainer = new caver.keyringContainer();
const keyring = keyringContainer.keyring.create(
  "0xc756f6809bc34c2458fcb82fb16d5add3dbad9e3",
  "0x{private key}"
);
keyringContainer.add(keyring);

// KAS Wallet API에 키를 생성합니다.
// `caver.kas.wallet.createKeys`를 통해 리턴되는 값의 형태는 아래와 같습니다.
// {
//     items: [
//         { blob: '0x06000...', keyId: 'krn:1001:...', krn: 'krn:1001:...', publicKey: '0x0400e...', },
//     ],
// }
const createdKeys = await caver.kas.wallet.createKeys(1);
const key = createdKeys.items[0];

// FeeDelegatedAccountUpdate 트랜잭션을 생성합니다.
// account 필드에 할당되는 값은 `caver.account.createWithAccountKeyPublic`를 사용하여 생성할 수 있으며
// 마이그레이션 하고자 하는 계정의 주소, 그리고 KAS Wallet API에 생성된 키(public key string 형태)를 파라미터로 전달해야 합니다.
const updateTx = new caver.transaction.feeDelegatedAccountUpdate({
  from: keyring.address,
  account: caver.account.createWithAccountKeyPublic(
    keyring.address,
    key.publicKey
  ),
  gas: 1000000,
});

// 트랜잭션에 서명합니다.
await keyringContainer.sign(keyring.address, updateTx);

const result = {
  keyId: key.keyId,
  address: keyring.address,
  rlp: updateTx.getRLPEncoding(),
};
Copy
Copied
// Klaytn 계정을 KAS Wallet API로 마이그레이션하기 위해서는 트랜잭션을 생성하고 이를 서명하여 KAS로 전송해야 합니다.
// 트랜잭션에 서명하기 위해 Klaytn 계정으로 Keyring 인스턴스를 생성하고 해당 Keyring 인스턴스를 트랜잭션에 서명할 때 파라미터로 넘겨줍니다.
// 만약 Klaytn 계정의 키가 `AccountKeyWeigthedMultiSig`이거나 `AccountKeyRoleBased`인 경우
// `KeyringFactory.create` 의 두 번째 파라미터를 String[] 혹은 List<String[]>로 넘기면 됩니다.
// 더욱 자세한 내용은 https://javadoc.io/doc/com.klaytn.caver/core/latest/com/klaytn/caver/wallet/keyring/KeyringFactory.html 를 참고해 주세요.

AbstractKeyring keyring = KeyringFactory.create("0xc756f6809bc34c2458fcb82fb16d5add3dbad9e3", "0x{private key}");

// KAS Wallet API에 키를 생성합니다.
// `caver.kas.wallet.createKeys`를 통해 리턴되는 값의 형태는 아래와 같습니다.
// {
//     items: [
//         { blob: '0x06000...', keyId: 'krn:1001:...', krn: 'krn:1001:...', publicKey: '0x0400e...', },
//     ],
// }
KeyCreationResponse keyCreationResponse = caver.kas.wallet.createKeys(1);
List<Key> createdKeys = keyCreationResponse.getItems();
Key key = createdKeys.get(0);

// FeeDelegatedAccountUpdate 트랜잭션을 생성합니다.
// account 필드에 할당되는 값은 `caver.account.createWithAccountKeyPublic`를 사용하여 생성할 수 있으며
// 마이그레이션 하고자 하는 계정의 주소, 그리고 KAS Wallet API에 생성된 키(public key string 형태)를 파라미터로 전달해야 합니다.
FeeDelegatedAccountUpdate updateTx = caver.transaction.feeDelegatedAccountUpdate.create(
        TxPropertyBuilder.feeDelegatedAccountUpdate()
                .setFrom(keyring.getAddress())
                .setAccount(
                        caver.account.createWithAccountKeyPublic(
                                keyring.getAddress(),
                                key.getPublicKey()
                        )
                )
                .setGas(BigInteger.valueOf(1000000))
);

// 트랜잭션에 서명합니다.
updateTx.sign(keyring);

System.out.println("keyId: " + key.getKeyId());
System.out.println("address: " + keyring.getAddress());
System.out.println("rlp: " + updateTx.getRLPEncoding());

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