KAS Docs Dev
한국어
한국어
  • Introduction
  • Basics
    • KAS 콘솔
    • KAS API
  • Getting Started
    • KAS 가입, 인증, 권한, SDK 설치
    • KAS Project 생성, 수정, 관리
    • 클레이튼 계정 생성
    • API 호출
    • 마이그레이션 가이드
  • Tutorial
    • 메타 정보 조회
    • JSON-RPC API
    • 계정 생성과 관리
    • 트랜잭션 전송
      • KLAY 보내기
      • 스마트 컨트랙트 배포
      • 스마트 컨트랙트 실행
      • 보류중인 트랜잭션 취소
      • RLP 문자열 트랜잭션
      • 계정 업데이트
      • 데이터 앵커링
      • 다중 서명 트랜잭션
      • 기타
    • 토큰 정보 조회
      • 송/수신 기록 조회
      • 토큰 컨트랙트 조회
      • NFT 정보 조회
      • NFT 소유권 변동 조회
    • 데이터 앵커링
    • KAS 기반 BApp 예시
      • 명품 영수증 관리 애플리케이션
      • 커피 원격 주문 애플리케이션
    • NFT 컨트랙트 배포 및 토큰 발행/전송
    • FT 컨트랙트 배포 및 토큰 발행/전송
    • MT 컨트랙트 배포 및 토큰 발행/전송
  • API
    • Klaytn Node API
    • Token History API
    • Wallet API
    • Anchor API
    • KIP-7 API
    • KIP-17 API
    • KIP-37 API
    • Metadata API
    • API Change Log
  • SDK
    • caver-js-ext-kas
    • caver-java-ext-kas
  • 개발자 포럼
  • 개인정보처리방침
  • 서비스 이용약관
Powered by GitBook
On this page
  • 튜토리얼에 앞서
  • 클레이튼 계정 업데이트
  • 클레이튼 계정 키
  • 계정 키를 다중 서명 키로 변경: 트랜잭션을 보내는 계정이 트랜잭션 전송 수수료를 부담하기
  • API 호출
  • API 응답
  • 계정 키를 역할 기반 키로 변경: 수수료 대납 계정이 트랜잭션 전송 수수료를 부담하기
  • API 호출
  • API 응답
  • 계정 키를 역할 기반 키로 변경: KAS에서 트랜잭션 전송 수수료를 부담하기
  • API 호출
  • API 응답

Was this helpful?

  1. Tutorial
  2. 트랜잭션 전송

계정 업데이트

이 페이지는 Wallet API로 계정 키를 업데이트하는 트랜잭션을 클레이튼에 보내는 방법을 안내합니다.

PreviousRLP 문자열 트랜잭션Next데이터 앵커링

Last updated 4 years ago

Was this helpful?

튜토리얼에 앞서

  • API 호출에 사용되는 x-chain-id 값은 8217(Cypress) 또는 1001(Baobab)입니다.

  • API 호출에 필요한 필수 파라미터는 각 예시에 설명됩니다.

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

항목

값

비고

chain-id

8217 또는 1001

Cypress(Klaytn 메인넷) 또는 Baobab(Klaytn 테스트넷)

access-key-id

인증 아이디

KAS 콘솔 - Security - Credential에서 발급받은 accessKeyId

secret-access-key

인증 비밀번호

KAS 콘솔 - Security - Credential에서 발급받은 secretAccessKey

krn

(optional) 계정 저장소의 ID

기본 계정 저장소 사용 시 불필요

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

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

클레이튼 계정 업데이트

클레이튼 계정을 다른 계정으로 업데이트한다는 것은, 계정 키를 다른 키로 바꾼다는 것과 같은 뜻입니다. 예를 들어, 레거시 계정을 다중 서명 계정으로 업데이트하는 것은 내 클레이튼 계정 키를 레거시 키에서 다중 서명 키로 바꾼다는 것과 동일합니다.

클레이튼 계정과 계정 키에 관한 자세한 내용은 을 확인하십시오.

클레이튼 계정 키

모든 트랜잭션은 서명을 받아야 클레이튼에 전송되고, 클레이튼에 전송되어야 실행됩니다. 클레이튼 계정 키는 트랜잭션에 서명할 때 사용되지만, KAS를 사용하는 여러분은 일반적인 상황(KLAY 전송, 스마트 컨트랙트 배포 등)에서는 서명하지 않고도 트랜잭션을 보낼 수 있습니다. 여기서 일반적이지 않고 특수한 상황이란 1개의 트랜잭션에 여러 계정의 서명을 받아야 하거나(다중 서명), KAS에서 관리하는 클레이튼 계정 서명이 아닌 KAS 외부 클레이튼 계정 서명이 필요할 때(외부 서명)를 말합니다.

계정 키를 다중 서명 키로 변경: 트랜잭션을 보내는 계정이 트랜잭션 전송 수수료를 부담하기

여러분의 클레이튼 계정을 다중 서명 계정으로 업데이트하는 것은 여러분의 계정 키를 AccountKeyWeightedMultiSig로 업데이트 하는 것과 동일합니다.

다중 서명 키를 구성하는 각 키를 가지고 있는 계정들은 모두 같은 계정 저장소에 있어야 합니다.

계정 업데이트 트랜잭션을 보내려면 Klaytn Node에 트랜잭션을 보내야 하며, 트랜잭션을 보내려면 트랜잭션 수수료를 지불해야 합니다. 이 예시를 따라 계정 업데이트 트랜잭션을 보내면, 트랜잭션을 보내는 계정이 트랜잭션 수수료를 직접 지불합니다. API를 호출하려면 계정 저장소와 계정을 생성하고 사용할 계정을 선택해야 합니다.

API 호출

내 계정 정보, 새롭게 사용할 키 정보를 입력하고 계정 업데이트 트랜잭션 전송 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다. 아래 API 호출 예시는, 클레이튼 계정을 기준치가 3이고 트랜잭션 서명용 키가 4개이며 각 키는 가중치 1씩을 갖는 다중 서명 계정으로(=다중 서명 키를 갖도록) 업데이트합니다.

curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/tx/account" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}" \
--header "Content-Type: application/json" \
--data-raw "{
  "from": "0x5bb85d4032354E88020595AFAFC081C24098202e",
  "accountKey": {
    "keyType": 4,
    "key": {
      "threshold": 3,
      "weightedKeys": [
        {
          "weight": 1,
          "publicKey": "0x041c5c34cafdefddfd5d0c8baa9e9f75ff6aa6dc597776e5bf06e231c57926a2cb9a86f9d30c4760e70f30f08cf234e7847365bc5a1696223cfef73cd188e422ec"
        },
        {
          "weight": 1,
          "publicKey": "0x045552e73f34964eb04cad0d3c3dbd7cfeebbfb420ca83b1e7c640a9c76b42a4ca2308ddbdee4044c9f52a248ce3eee51c155c9d0567f3ebb32b4db38962f30f66"
        },
        {
          "weight": 1,
          "publicKey": "0x04ab9910325fd645a556fee3c6bbd8651be4fbff6688634d826474f3ef4baff7b1e4e48936db4cdb0fb3474beea3ba870bb0e7f9b0eb7c9e7b4e613bca90dec2"
        },
        {
          "weight": 1,
          "publicKey": "0x04a1c4e3830f19d1fb2c78d00cd5b29f75cdcc706a8611cbf4192c2d20f4899cba2ecee4706d0c58bdcbc2a634f7794cd43ecf02c6f1fc383a8bf8b1509dfdc493"
        }
      ]
    }
  },
  "nonce": 0,
  "gasLimit": 1000000,
  "submit": true
}"
// Update to AccountKeyLegay
const tx = {
  from: '0xA209b6D2DF012d63D798cB0BD0D7E0c53FddF649',
  accountKey: { keyType: 1 },
  gas: 1000000,
  submit: true
}
const result = await caver.kas.wallet.requestAccountUpdate(tx)

// Update to AccountKeyPublic
const tx = {
  from: '0x948C163A29Fc31996CCb478Fe4bA17C891Dc6221',
  accountKey: {
    keyType: 2,
    key: '0x049e24b9f7b59730cd45cb8be47b32f88fb428798dde1d723e79f80f2c200cc8a2fcdaa340979c09dbaecad698825537c401624cf9ba1b7724650fe67056968c1c'
  },
  gas: 1000000,
  submit: true
}
const result = await caver.kas.wallet.requestAccountUpdate(tx)

// Update to AccountKeyFail
const tx = {
  from: '0x7d0B0321FB82d70C3A2dDa1ab9112a6d58c94ADF',
  accountKey: { keyType: 3 },
  gas: 1000000,
  submit: true
}
const result = await caver.kas.wallet.requestAccountUpdate(tx)

// Update to AccountKeyWeightedMultiSig
const tx = {
  from: '0x443f01B81ECC1e83dC46edA711F3D707511ef257',
  accountKey: {
    keyType: 4,
    key: {
      threshold: 2,
      weightedKeys: [
        {
          weight: 1,
          publicKey: '0x04a4dad8e41de69fdbf7c2d3b76eeeed47d449fd680d7dda0ae6346ac9e2c8de1637d8cbc4adbfa7b0f02ffedf39d8edb7dae983ba24a33fcdde37feedbe2a5cd7'
        },
        {
          weight: 1,
          publicKey: '0x0424a43009be004a10cf6d2d7ddb3fa31aa8e73bf540d8ad2a7a870c697981f3743f3691a45fc1c5ff13a7f521c5488b5a7926063b307c0def3d5f8f1f3a7fde0b'
        }
      ]
    }
  },
  gas: 1000000,
  submit: true
}
const result = await caver.kas.wallet.requestAccountUpdate(tx)

// Update to AccountKeyRoleBased
const tx = {
  from: '0x7fe2434DA3B6Af4e23bB234a3972ab0bD9bad1bc',
  accountKey: {
    keyType: 5,
    key: [
      { keyType: 3, key: {} },
      { 
        keyType: 4,
        key: {
          threshold: 2,
          weightedKeys: [ 
            { 
              weight: 1,
              publicKey: '0x04abad100b699ea183959102c17d7792ba86b324548888ab4affb19bf814ea821066792679df7f1d8ce9075b93e29072d5600684a41a4614c1be9b3714302d9c4a'
            },
            {
              weight: 1,
              publicKey: '0x04c32ba77e5741783945a1ad7e2f201961d11e8e8192b104a2402e6307e9d7d9a77412693846eedc33083279e7e78e5619400bf194d8230ecec1f57cd14b791c2d'
            }
          ]
        }
      },
      {
        keyType: 2,
        key: '0x045505870ac8b7024e2b9eee23b8317eb79b796e44ece3fbb1d637d7a657bdbf0b3274216df59b1edf35bc94e4859357b5051cfaa8b5f659aae78a4d9bd2d8d6be'
      }
    ]
  },
  gas: 1000000,
  submit: true
}
const result = await caver.kas.wallet.requestAccountUpdate(tx)
// Update to AccountKeyLegay
AccountUpdateTransactionRequest requestLegacy = new AccountUpdateTransactionRequest();
requestLegacy.setFrom("0x3723dc535131bba5108b6bfe6ccf2d2e512bdc91");
requestLegacy.setAccountKey(new KeyTypeLegacy());
requestLegacy.setSubmit(true);

TransactionResult result = caver.kas.wallet.requestAccountUpdate(requestLegacy);
System.out.println(result);


// Update to AccountKeyPublic
AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
request.setFrom("0x50f7ec091d363f9180f95921cbb2ad98c09a0822");
request.setAccountKey(new KeyTypePublic(account.getPublicKey()));
request.setSubmit(true);

TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
System.out.println(result);


// Update to AccountKeyFail
AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
request.setFrom("0xFdd009222A79179CDe24F15Da6022A9cF302fcD3");
request.setAccountKey(new KeyTypeFail());
request.setSubmit(true);

TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
System.out.println(result);


// Update to AccountKeyWeightedMultiSig
String publicKey1 = "0x048ab2585966fd8756e7565b9a6619a10f2b0c073825b66aafb9e474a03abc025bc27d9dd2304c90737160a206af7c938261d9efa0327474c858526104470f236b";
String publicKey2 = "0x0400df261720508aaeb0cd1ce01095e4a3fa88beef7300ab4663fa4769f74e0f4871258f438f11674f8d32c769d11e89eb7bcf7df382ceea0bc10a6a1e57e678a0";
String publicKey3 = "0x04b79fd28c45c3ca2ad6da97f8ba575605de16d249925a2321b8776f338d500eb2ce2b0530922564cb555a16435fc036f1eb007fc22ba9b9903cb6af0cb22f9ec3";

MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
multisigUpdateKey.setThreshold((long)2);
multisigUpdateKey.setWeightedKeys(
        Arrays.asList(createMultiSig(2, publicKey1),
                createMultiSig(1, publicKey2),
                createMultiSig(1, publicKey3))
);

KeyTypeMultiSig keyTypeMultiSig = new KeyTypeMultiSig(multisigUpdateKey);

AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
request.setFrom("0xba4C0E1f4f67EE60BD4c72933535BC3B5a4819a2");
request.setAccountKey(keyTypeMultiSig);
request.setSubmit(true);

TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
System.out.println(result);


// Update to AccountKeyRoleBased
KeyTypePublic txKey = new KeyTypePublic();
txKey.setKey("0x0439a181139c535990b24c10e7f5d7c6155b74098a674d6bbe92a8fa3ec8482557dba13d7381ddb9d66cbecc604d293f87f918ff341973cac2400c7e342bd244f2");

KeyTypePublic accountUpdateKey = new KeyTypePublic();
accountUpdateKey.setKey("0x0454e19cf077e460f251ccc9f3c23737dbf15ef9c593d1b132ce0d18f028a93df5cec8e06bde9fe5cd3a60c1a18728bd20998067f86ce602f968fcd0e24d9da1cf");


String publicKey1 = "0x048ab2585966fd8756e7565b9a6619a10f2b0c073825b66aafb9e474a03abc025bc27d9dd2304c90737160a206af7c938261d9efa0327474c858526104470f236b";
String publicKey2 = "0x0400df261720508aaeb0cd1ce01095e4a3fa88beef7300ab4663fa4769f74e0f4871258f438f11674f8d32c769d11e89eb7bcf7df382ceea0bc10a6a1e57e678a0";
String publicKey3 = "0x04b79fd28c45c3ca2ad6da97f8ba575605de16d249925a2321b8776f338d500eb2ce2b0530922564cb555a16435fc036f1eb007fc22ba9b9903cb6af0cb22f9ec3";

MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
multisigUpdateKey.setThreshold((long)2);
multisigUpdateKey.setWeightedKeys(
        Arrays.asList(createMultiSig(2, publicKey1),
                createMultiSig(1, publicKey2),
                createMultiSig(1, publicKey3))
);

KeyTypeMultiSig fdKey = new KeyTypeMultiSig(multisigUpdateKey);

KeyTypeRoleBased roleBasedUpdateKeyType = new KeyTypeRoleBased(Arrays.asList(txKey, accountUpdateKey, fdKey));

AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
request.setFrom("0xcf8b7b2c58805280ee4bb4d3fab17af8c6d9decf");
request.setAccountKey(roleBasedUpdateKeyType);
request.setGas(250000l);
request.setSubmit(true);

TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
System.out.println(result);
  • submit: false이면 트랜잭션이 전송되지 않고, 서명된 트랜잭션 RLP와 트랜잭션 정보를 반환합니다.

API 응답

계정 업데이트 트랜잭션 전송 API의 응답은 아래와 같습니다.

{
  "accountKey": "0x04f89303f890e301a1021c5c34cafdefddfd5d0c8baa9e9f75ff6aa6dc597776e5bf06e231c57926a2cbe301a1025552e73f34964eb04cad0d3c3dbd7cfeebbfb420ca83b1e7c640a9c76b42a4cae301a102ab9910325fd645a556fee3c6bbd8651be4fbff6688634d826474f3ef4baff7b1e301a103a1c4e3830f19d1fb2c78d00cd5b29f75cdcc706a8611cbf4192c2d20f4899cba",
  "from": "0x325dbaf78b393dc2115138c86a58f897ed413aff",
  "gasLimit": 1000000,
  "gasPrice": "0x5d21dba00",
  "nonce": 2,
  "rlp": "0x20f90101028505d21dba00830f424094325dbaf78b393dc2115138c86a58f897ed413affb89604f89303f890e301a1021c5c34cafdefddfd5d0c8baa9e9f75ff6aa6dc597776e5bf06e231c57926a2cbe301a1025552e73f34964eb04cad0d3c3dbd7cfeebbfb420ca83b1e7c640a9c76b42a4cae301a102ab9910325fd645a556fee3c6bbd8651be4fbff6688634d826474f3ef4baff7b1e301a103a1c4e3830f19d1fb2c78d00cd5b29f75cdcc706a8611cbf4192c2d20f4899cbaf847f8458207f5a0c669b62293629316d18e12cd90d5c4dc24000e13d31200c53e40ac8f01bf249ea062be831829631503e20cccd160fe1ec450950e6f982df16d83d3f6f948924aa1",
  "signatures": [
    {
      "R": "0xc669b62293629316d18e12cd90d5c4dc24000e13d31200c53e40ac8f01bf249e",
      "S": "0x62be831829631503e20cccd160fe1ec450950e6f982df16d83d3f6f948924aa1",
      "V": "0x7f5"
    }
  ],
  "status": "Submitted",
  "transactionHash": "0xd596aad17c6cf9f0fd9f3710652e00ebedd4f91cadc6cd856563e856492bd41c",
  "typeInt": 32
}
TransactionResult {
  from: '0x7fe2434da3b6af4e23bb234a3972ab0bd9bad1bc',
  gas: 1000000,
  gasPrice: '0x5d21dba00',
  nonce: 0,
  rlp: '0x20f8e5808505d21dba00830f4240947fe2434da3b6af4e23bb234a3972ab0bd9bad1bcb87a05f8778203c0b84e04f84b02f848e301a102abad100b699ea183959102c17d7792ba86b324548888ab4affb19bf814ea8210e301a103c32ba77e5741783945a1ad7e2f201961d11e8e8192b104a2402e6307e9d7d9a7a302a1025505870ac8b7024e2b9eee23b8317eb79b796e44ece3fbb1d637d7a657bdbf0bf847f8458207f6a0a7f12de6c2093f63d83f04d456446dfbd20c84473c68450ad874370fdde756c5a064bb0fabf09ef769a96bff45d1f74a108463409b3f4058a1f881d6ea9868e3aa',
  typeInt: 32,
  signatures: [
    Signature {
      R: '0xa7f12de6c2093f63d83f04d456446dfbd20c84473c68450ad874370fdde756c5',
      S: '0x64bb0fabf09ef769a96bff45d1f74a108463409b3f4058a1f881d6ea9868e3aa',
      V: '0x7f6'
    }
  ],
  status: 'Submitted',
  transactionHash: '0x6043beed2284b8223edef80c0bc562af36be300fb83be0377859a4d2968823cb',
  accountKey: '0x05f8778203c0b84e04f84b02f848e301a102abad100b699ea183959102c17d7792ba86b324548888ab4affb19bf814ea8210e301a103c32ba77e5741783945a1ad7e2f201961d11e8e8192b104a2402e6307e9d7d9a7a302a1025505870ac8b7024e2b9eee23b8317eb79b796e44ece3fbb1d637d7a657bdbf0b'
}
class TransactionResult {
    from: 0x50f7ec091d363f9180f95921cbb2ad98c09a0822
    gas: 100000
    gasPrice: 0x5d21dba00
    input: null
    nonce: 0
    rlp: 0x20f88d808505d21dba00830186a09450f7ec091d363f9180f95921cbb2ad98c09a0822a302a103aa8fe5f10690ddbc02cc69f6777b6e8d5e0fe5a21a791b63899d7bb1395c6813f847f8458207f5a00154c1b29101d07513215222bbc113f4825c1bebe3f5a9c8c395c1cb9c5b16e3a053c32a15b14d753eed6bec46db48fa04ec31ae307d2a76445dea2ab268917eb0
    signatures: [class Signature {
        R: 0x154c1b29101d07513215222bbc113f4825c1bebe3f5a9c8c395c1cb9c5b16e3
        S: 0x53c32a15b14d753eed6bec46db48fa04ec31ae307d2a76445dea2ab268917eb0
        V: 0x7f5
    }]
    status: Submitted
    to: null
    transactionHash: 0x52eb902ed67ca67fea6f7de5de6a2999a217283667c92061123242a9436aefcd
    typeInt: 32
    value: null
    code: null
    message: null
    transactionId: null
    accountKey: 0x02a103aa8fe5f10690ddbc02cc69f6777b6e8d5e0fe5a21a791b63899d7bb1395c6813
}

계정 키를 역할 기반 키로 변경: 수수료 대납 계정이 트랜잭션 전송 수수료를 부담하기

여러분의 클레이튼 계정을 역할 기반 계정으로 업데이트하는 것은 여러분의 계정 키를 AccountKeyRoleBased로 업데이트 하는 것과 동일합니다.

KAS로 계정 업데이트 트랜잭션을 전송하려면 Klaytn Node에 트랜잭션을 보내야 하며, 트랜잭션을 보내려면 트랜잭션 수수료를 지불해야 합니다. API를 호출하려면 계정 저장소, 수수료 대납 계정 저장소에 각각 계정, 수수료 대납 계정을 생성하고 사용할 계정, 수수료 대납 계정을 선택해야 합니다.

API 호출

수수료 대납 방식 계정 업데이트 트랜잭션 전송 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다. 아래 API 호출 예시는, 클레이튼 계정을 역할 기반 키(AccountKeyRoleBased, KAS에서는 keyType:5)로 업데이트합니다. 어떤 클레이튼 계정이 역할 기반 키를 가지면 이 계정은 자신이 수행하는 역할(Role)에 따라 다른 키를 트랜잭션 서명에 사용합니다.

역할은 크게 일반 트랜잭션 전송(KLAY 전송, 컨트랙트 배포, 컨트랙트 실행 등), 계정 업데이트, 수수료 대납의 3가지가 있습니다. 아래 API 호출 예시는 일반 트랜잭션 전송용으로 AccountKeyPublic(keyType:2) 키, 계정 업데이트용으로 AccountKeyFail(keyType:3) 키, 수수료 대납용으로 AccountKeyWeightedMultiSig(keyType:4) 키를 가진 계정으로 업데이트 합니다. 여기서 수수료 대납용 키는 기준치가 2이고 트랜잭션 서명용 키가 2개이며 각 키는 가중치 1씩을 갖는 다중 서명용 키입니다. 이 계정은 계정 업데이트 역할에 AccountKeyFail을 입력했으므로 계정을 업데이트하는 역할을 수행하지 않습니다.

curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/tx/fd-user/account" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}" \
--header "Content-Type: application/json" \
--data-raw "{
  "from": "0x5bb85d4032354E88020595AFAFC081C24098202e",
  "accountKey": {
    "keyType": 5,
    "key": [
      {
        "keyType": 3,
        "key": {}
      },
      {
        "keyType": 4,
        "key": {
          "threshold": 2,
          "weightedKeys": [
            {
              "weight": 1,
              "publicKey": "0xe4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512da5735a23ce1654b14680054a993441eae7c261983a56f8e0da61280758b5919"
            },
            {
              "weight": 1,
              "publicKey": "0x36f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c066fdf9fc87a16ac359e66d9761445d5ccbb417fb7757a3f5209d713824596a50d"
            }
          ]
        }
      },
      {
        "keyType": 2,
        "key": "0x698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f27cbef61d21ed45e6675e220b73912c76522bfae899ddde4eb25926617fb89d5d"
      }
    ]
  },
  "nonce": 0,
  "gasLimit": 1000000,
  "submit": true,
  "feePayer": "0x85B98485444c89880cD9C48807CEF727C296F2da",
  "feeRatio": 10
}"
// 각 AccountKey 타입 별 트랜잭션 포맷은 페이지 상단의 "계정 키를 다중 서명 키로 변경: 트랜잭션을 보내는 계정이 트랜잭션 전송 수수료를 부담하기" 챕터를 참고하십시오.
const tx = { 
  from: '0xA3E79115c78bbC8eFdDA2a17a4Bdb48Dca2b5333',
  accountKey: { 
    keyType: 4, 
    key: { 
      threshold: 2, 
      weightedKeys: [ 
        { 
          weight: 1,
          publicKey: '0x04371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec6544bc9a04598ca5ba4c2e75e648c6d8e6a892b33662bfe680544daa53c75b06e35'
        },
        {
          weight: 1,
          publicKey: '0x041640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c52855ed8b4164db5db21d3c4e3baed2611d9d34932f36b6096086eee0c690417fb97'
        }
      ]
    }
  },
  gas: 1000000,
  feePayer: '0x44Ee3906a7a2007762E9d706dF6E4eF63FA1edA8',
  submit: true
}
const result = await caver.kas.wallet.requestFDAccountUpdatePaidByUser(tx)
String publicKey1 = "0x0459b8b2f0297f8fc96326254c4b6dc706c53119626ab1a524b629af9e7bcbe153b81c6a4870e76ca6533a9ac10c879a19cbe415fcb481dcd13ddf42ecbc877c11";
String publicKey2 = "0x0471ed41581d6cd86499cfa0980db20b86c9a5028b5b2fbce6eef92a297f3ba96f3bfda8b42a45a43868dd4308f2fa8e068d25701ce6c53bbddc6c6e7bd1d7049c";
String publicKey3 = "0x04508fd5b298583115eb69b445d13c1dc5ccf96a73e1135bb52f4852b35206468c3b21dcbae4560ef34638632827539e8a770dbc922b9e7e1bd5f30c3dd84bb19b";

MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
multisigUpdateKey.setThreshold((long)2);
multisigUpdateKey.setWeightedKeys(
        Arrays.asList(createMultiSig(2, publicKey1),
                createMultiSig(1, publicKey2),
                createMultiSig(1, publicKey3))
);

KeyTypeMultiSig keyTypeMultiSig = new KeyTypeMultiSig(multisigUpdateKey);

FDAccountUpdateTransactionRequest request = new FDAccountUpdateTransactionRequest();
request.setFrom("0x08Ba68AC55396e291adD39292E0280b08342FE2b");
request.setAccountKey(keyTypeMultiSig);
request.setFeePayer("0x31d845Ac80A0B2a38f6267CabcF34F8fA9DcD2B7");
request.setSubmit(true);

FDTransactionResult result = caver.kas.wallet.requestFDAccountUpdatePaidByUser(request);
System.out.println(result);
  • submit: false이면 트랜잭션이 전송되지 않고, 서명된 트랜잭션 RLP와 트랜잭션 정보를 반환합니다.

  • feePayer: 사용자가 트랜잭션 수수료를 대납하는 계정을 별도로 사용할 때, 이 계정 주소를 여기에 입력합니다. KAS에서 먼저 수수료를 대납해주는 방식을 사용하려면 feePayer 파라미터 자체를 사용하지 않습니다.

  • feeRatio: 트랜잭션 수수료 전체에서 feePayer가 납부할 비율(1%~99%)입니다. 나머지 비율은 트랜잭션을 Klaytn에 보내는 from이 직접 납부합니다.

    • 사용자 대납 계정으로 납부하거나 KAS에서 수수료를 대납하는 2가지 방식 모두, feeRatio를 사용할 수 있습니다.

API 응답

수수료 대납 계정 업데이트 트랜잭션 전송 API의 응답은 아래와 같습니다.

{
  "accountKey": "0x05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2",
  "feePayer": "0xe8ab1729ab614551021cf5cc22c0e037f5a82930",
  "from": "0x9c56b45b7443bc73f47234199982481c64807f78",
  "gasLimit": 1000000,
  "gasPrice": "0x5d21dba00",
  "nonce": 6,
  "rlp": "0x21f90143068505d21dba00830f4240949c56b45b7443bc73f47234199982481c64807f78b87a05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2f847f8458207f5a0417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6a024d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a3179994e8ab1729ab614551021cf5cc22c0e037f5a82930f847f8458207f5a0b2917ba146947e7898f3df954ffde028cf11c5f23338b3eccc5e1ce20e73ec9ca05251179f052c064813fecae03ec07b121622f8352c599c12f4671784d6b94a03",
  "signatures": [
    {
      "R": "0x417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6",
      "S": "0x24d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a31799",
      "V": "0x7f5"
    }
  ],
  "status": "Submitted",
  "transactionHash": "0x6bd7c53520171aa9dfb535b62ac35e97a16798de7060eb844cbad6afbd847b86",
  "typeInt": 33
}
FDTransactionResult {
  feePayer: '0x44ee3906a7a2007762e9d706df6e4ef63fa1eda8',
  from: '0xa3e79115c78bbc8efdda2a17a4bdb48dca2b5333',
  gas: 1000000,
  gasPrice: '0x5d21dba00',
  nonce: 0,
  rlp: '0x21f90117808505d21dba00830f424094a3e79115c78bbc8efdda2a17a4bdb48dca2b5333b84e04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285f847f8458207f5a072332d0c98a364702d5da44f75ea2945d030cd6d540221433248dacf7d7cc543a01c689fe90dbc086c88a7faf9d160a544de711c905633c252b4d825e7c7396a189444ee3906a7a2007762e9d706df6e4ef63fa1eda8f847f8458207f6a052ba46bc1616929027ba54df4a736bd021ba4603c3a3bb19d6b4e4150bc4bf3fa077fa110b70b964beb79e895a5f9476a8b594b0fce2912c51c22a97c1e482b950',
  typeInt: 33,
  signatures: [
    Signature {
      R: '0x72332d0c98a364702d5da44f75ea2945d030cd6d540221433248dacf7d7cc543',
      S: '0x1c689fe90dbc086c88a7faf9d160a544de711c905633c252b4d825e7c7396a18',
      V: '0x7f5'
    } 
  ],
  status: 'Submitted',
  transactionHash: '0x9d2fd76c3962f013a9f81f7a03f3237b09efd465a81b60ebbcd476b4472e9fe3',
  accountKey: '0x04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285'
}
class FDTransactionResult {
    feePayer: 0x31d845ac80a0b2a38f6267cabcf34f8fa9dcd2b7
    from: 0xdd9f780ef810138a9625071b45211b00a76c9c43
    gas: 100000
    gasPrice: 0x5d21dba00
    input: null
    nonce: 0
    rlp: 0x21f9013b808505d21dba00830186a094dd9f780ef810138a9625071b45211b00a76c9c43b87204f86f02f86ce302a10359b8b2f0297f8fc96326254c4b6dc706c53119626ab1a524b629af9e7bcbe153e301a10271ed41581d6cd86499cfa0980db20b86c9a5028b5b2fbce6eef92a297f3ba96fe301a103508fd5b298583115eb69b445d13c1dc5ccf96a73e1135bb52f4852b35206468cf847f8458207f6a0942b8febf7814a978d50144a086fb8266d6946f2b00d7d94a162245f8606b52ca0129d39b1d9f957ba61f7d2ead87dbc8eeeedf758d4846385a0ad66e21e67f5419431d845ac80a0b2a38f6267cabcf34f8fa9dcd2b7f847f8458207f6a079da3d049da82db02191c3df171af460043f13cd480b029d35d77a36dede494fa009eb920ba1c809d5a06912f09b0888ac92abd32ed08dba987f85dedd91d80bcd
    signatures: [class Signature {
        R: 0x942b8febf7814a978d50144a086fb8266d6946f2b00d7d94a162245f8606b52c
        S: 0x129d39b1d9f957ba61f7d2ead87dbc8eeeedf758d4846385a0ad66e21e67f541
        V: 0x7f6
    }]
    status: Submitted
    to: null
    transactionHash: 0x3d0b8802d1c16655115803f23f4866c9e0fb5d18a02862fb4f979a1799b43bd8
    typeInt: 33
    value: null
    feeRatio: null
    transactionId: null
    accountKey: 0x04f86f02f86ce302a10359b8b2f0297f8fc96326254c4b6dc706c53119626ab1a524b629af9e7bcbe153e301a10271ed41581d6cd86499cfa0980db20b86c9a5028b5b2fbce6eef92a297f3ba96fe301a103508fd5b298583115eb69b445d13c1dc5ccf96a73e1135bb52f4852b35206468c
}

계정 키를 역할 기반 키로 변경: KAS에서 트랜잭션 전송 수수료를 부담하기

여러분의 클레이튼 계정을 역할 기반 계정으로 업데이트하는 것은 여러분의 계정 키를 AccountKeyRoleBased로 업데이트 하는 것과 동일합니다.

API 호출

KAS GlobalFeePayer 수수료 대납 방식 계정 업데이트 트랜잭션 전송 API를 호출합니다. API 호출 시 REST API를 사용할 수 있습니다. 아래 API 호출 예시는, 클레이튼 계정을 역할 기반 키(AccountKeyRoleBased, KAS에서는 keyType:5)로 업데이트합니다. 어떤 클레이튼 계정이 역할 기반 키를 가지면 이 계정은 자신이 수행하는 역할(Role)에 따라 다른 키를 트랜잭션 서명에 사용합니다.

역할은 크게 일반 트랜잭션 전송(KLAY 전송, 컨트랙트 배포, 컨트랙트 실행 등), 계정 업데이트, 수수료 대납의 3가지가 있습니다. 아래 API 호출 예시는 일반 트랜잭션 전송용으로 AccountKeyPublic(keyType:2) 키, 계정 업데이트용으로 AccountKeyFail(keyType:3) 키, 수수료 대납용으로 AccountKeyWeightedMultiSig(keyType:4) 키를 가진 계정으로 업데이트 합니다. 여기서 수수료 대납용 키는 기준치가 2이고 트랜잭션 서명용 키가 2개이며 각 키는 가중치 1씩을 갖는 다중 서명용 키입니다. 이 계정은 계정 업데이트 역할에 AccountKeyFail을 입력했으므로 계정을 업데이트하는 역할을 수행하지 않습니다.

curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/tx/fd/account" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}" \
--header "Content-Type: application/json" \
--data-raw "{
  "from": "0x5bb85d4032354E88020595AFAFC081C24098202e",
  "accountKey": {
    "keyType": 5,
    "key": [
      {
        "keyType": 3,
        "key": {}
      },
      {
        "keyType": 4,
        "key": {
          "threshold": 2,
          "weightedKeys": [
            {
              "weight": 1,
              "publicKey": "0xe4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512da5735a23ce1654b14680054a993441eae7c261983a56f8e0da61280758b5919"
            },
            {
              "weight": 1,
              "publicKey": "0x36f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c066fdf9fc87a16ac359e66d9761445d5ccbb417fb7757a3f5209d713824596a50d"
            }
          ]
        }
      },
      {
        "keyType": 2,
        "key": "0x698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f27cbef61d21ed45e6675e220b73912c76522bfae899ddde4eb25926617fb89d5d"
      }
    ]
  },
  "nonce": 0,
  "gasLimit": 1000000,
  "submit": true,
  "feeRatio": 10
}"
// 각 AccountKey 타입 별 트랜잭션 포맷은 페이지 상단의 "계정 키를 다중 서명 키로 변경: 트랜잭션을 보내는 계정이 트랜잭션 전송 수수료를 부담하기" 챕터를 참고하십시오.
const tx = { 
  from: '0xd19CeD8B6CA1d5924ECaf4321c1C8Fae64C2ADf8',
  accountKey: { 
    keyType: 4, 
    key: { 
      threshold: 2, 
      weightedKeys: [ 
        { 
          weight: 1,
          publicKey: '0x04371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec6544bc9a04598ca5ba4c2e75e648c6d8e6a892b33662bfe680544daa53c75b06e35'
        },
        {
          weight: 1,
          publicKey: '0x041640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c52855ed8b4164db5db21d3c4e3baed2611d9d34932f36b6096086eee0c690417fb97'
        }
      ]
    }
  },
  gas: 1000000,
  submit: true
}
const result = await caver.kas.wallet.requestFDAccountUpdatePaidByGlobalFeePayer(tx)
String publicKey1 = "0x04a9f0fbeab8c415e560c12266c51ecd90c71dd16ca97a99d3fd55f2eaf4698a1a68a942c0d25bd27f3d4e5604b394fb197b69091972d70d35927896633aae140c";
String publicKey2 = "0x0432ac2fa7aa17035999f9dc2b151d9b551a85e4acb6c61e2e4905bafcf64b5fb29f59f12d631a31a3fb32c9913945cfc623db4714471a7ceee4c2d39c99922691";
String publicKey3 = "0x040f381470965e1c939e792b583ae221fd5fb7524c25bc07221e2a80f71431ed2a2e859dfb641aa8c809d5e649d0b5fc3ba407369aa7e67f72d63d5a253f143048";

MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
multisigUpdateKey.setThreshold((long)2);
multisigUpdateKey.setWeightedKeys(
        Arrays.asList(createMultiSig(2, publicKey1),
                createMultiSig(1, publicKey2),
                createMultiSig(1, publicKey3))
);

KeyTypeMultiSig keyTypeMultiSig = new KeyTypeMultiSig(multisigUpdateKey);

FDAccountUpdateTransactionRequest request = new FDAccountUpdateTransactionRequest();
request.setFrom("0xEFBB861E098641550e5b1732454b1dD7BA008259");
request.setAccountKey(keyTypeMultiSig);
request.setSubmit(true);

FDTransactionResult result = caver.kas.wallet.requestFDAccountUpdatePaidByGlobalFeePayer(request);
System.out.println(result);
  • submit: false이면 트랜잭션이 전송되지 않고, 서명된 트랜잭션 RLP와 트랜잭션 정보를 반환합니다.

  • feeRatio: 트랜잭션 수수료 전체에서 feePayer가 납부할 비율(1%~99%)입니다. 나머지 비율은 트랜잭션을 Klaytn에 보내는 from이 직접 납부합니다.

    • 사용자 대납 계정으로 납부하거나 KAS에서 수수료를 대납하는 2가지 방식 모두, feeRatio를 사용할 수 있습니다.

API 응답

KAS GlobalFeePayer 수수료 대납 계정 업데이트 트랜잭션 전송 API의 응답은 아래와 같습니다.

{
  "accountKey": "0x05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2",
  "feePayer": "0x85b98485444c89880cd9c48807cef727c296f2da",
  "feeRatio": 10,
  "from": "0x9c56b45b7443bc73f47234199982481c64807f78",
  "gasLimit": 1000000,
  "gasPrice": "0x5d21dba00",
  "nonce": 6,
  "rlp": "0x21f90143068505d21dba00830f4240949c56b45b7443bc73f47234199982481c64807f78b87a05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2f847f8458207f5a0417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6a024d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a3179994e8ab1729ab614551021cf5cc22c0e037f5a82930f847f8458207f5a0b2917ba146947e7898f3df954ffde028cf11c5f23338b3eccc5e1ce20e73ec9ca05251179f052c064813fecae03ec07b121622f8352c599c12f4671784d6b94a03",
  "signatures": [
    {
      "R": "0x417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6",
      "S": "0x24d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a31799",
      "V": "0x7f5"
    }
  ],
  "status": "Submitted",
  "transactionHash": "0x6bd7c53520171aa9dfb535b62ac35e97a16798de7060eb844cbad6afbd847b86",
  "typeInt": 33
}
FDTransactionResult {
  feePayer: '0x1b71a63903e35371e2fc41c6012effb99b9a2c0f',
  from: '0xd19ced8b6ca1d5924ecaf4321c1c8fae64c2adf8',
  gas: 1000000,
  gasPrice: '0x5d21dba00',
  nonce: 0,
  rlp: '0x21f90117808505d21dba00830f424094d19ced8b6ca1d5924ecaf4321c1c8fae64c2adf8b84e04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285f847f8458207f5a0f70cfcc8c3354eec1b6ed248bd59f05501f18507fd00e546d17f3925d277fdaaa0295ee51197017cf9512c7d5ca93d5cf504a866533b55347002bed2c7960ab2e9941b71a63903e35371e2fc41c6012effb99b9a2c0ff847f8458207f5a0c4803710b2856e75aef99192911d386ffd25c23825835f5cc649abd63f664be0a020e65737788dc2006144891d1e97e60200b2163e6a8b890693a87716b0126e5a',
  typeInt: 33,
  signatures: [
    Signature {
      R: '0xf70cfcc8c3354eec1b6ed248bd59f05501f18507fd00e546d17f3925d277fdaa',
      S: '0x295ee51197017cf9512c7d5ca93d5cf504a866533b55347002bed2c7960ab2e9',
      V: '0x7f5'
    }
  ],
  status: 'Submitted',
  transactionHash: '0x53fcc4efe8a7fb7b251233564043dd8c2fdedea7b7d42d750a1cc4aead208c11',
  accountKey: '0x04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285'
}
class FDTransactionResult {
    feePayer: 0x1b71a63903e35371e2fc41c6012effb99b9a2c0f
    from: 0xefbb861e098641550e5b1732454b1dd7ba008259
    gas: 100000
    gasPrice: 0x5d21dba00
    input: null
    nonce: 0
    rlp: 0x21f9013b808505d21dba00830186a094efbb861e098641550e5b1732454b1dd7ba008259b87204f86f02f86ce302a102a9f0fbeab8c415e560c12266c51ecd90c71dd16ca97a99d3fd55f2eaf4698a1ae301a10332ac2fa7aa17035999f9dc2b151d9b551a85e4acb6c61e2e4905bafcf64b5fb2e301a1020f381470965e1c939e792b583ae221fd5fb7524c25bc07221e2a80f71431ed2af847f8458207f6a0d9272e8f511ffc30ebb77c968ca3fedc2a62e436fcdaba96c0d05cdbdeebda24a05cf0adb9b257a08ac2e3232b9943e60e5c3faf16c87f239258ed9ce199d64a36941b71a63903e35371e2fc41c6012effb99b9a2c0ff847f8458207f5a0ec3596ab6196a3fc5a027eea06758e9afa0a24b63c1aac06004afd377e878aaca00846ed9051ccf56b74317b855e225ff9ef89136557049fc6124f0f2f45459f74
    signatures: [class Signature {
        R: 0xd9272e8f511ffc30ebb77c968ca3fedc2a62e436fcdaba96c0d05cdbdeebda24
        S: 0x5cf0adb9b257a08ac2e3232b9943e60e5c3faf16c87f239258ed9ce199d64a36
        V: 0x7f6
    }]
    status: Submitted
    to: null
    transactionHash: 0x35cd6e962aacdde5b1188267f0fc81b31fdd42b9c9d9f7ee31f7b9ee82be6510
    typeInt: 33
    value: null
    feeRatio: null
    transactionId: null
    accountKey: 0x04f86f02f86ce302a102a9f0fbeab8c415e560c12266c51ecd90c71dd16ca97a99d3fd55f2eaf4698a1ae301a10332ac2fa7aa17035999f9dc2b151d9b551a85e4acb6c61e2e4905bafcf64b5fb2e301a1020f381470965e1c939e792b583ae221fd5fb7524c25bc07221e2a80f71431ed2a
}

KAS에서도 를 제공합니다.

트랜잭션 서명에 사용하는 클레이튼 계정 키에는 크게 , , 가 있습니다.

클레이튼 키 타입(keyType)에 관한 자세한 내용은 을 확인하십시오.

클레이튼 계정 키를 다중 서명 키로 바꾸는 트랜잭션을 보냅니다. 여기서 소개하는 내용을 따르면 계정 키를 다중 서명 키 외에 다른 키로도 바꿀 수 있습니다. 클레이튼 계정 키 종류는 을 확인하십시오.

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

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

클레이튼 계정 키를 역할 기반 키로 바꾸는 트랜잭션을 보냅니다. 여기서 소개하는 내용을 따르면 계정 키를 역할 기반 키 외에 다른 키로 바꿀 수 있으며 마찬가지로 수수료 대납 계정이 이 트랜잭션 수수료를 대납하게 할 수 있습니다. 클레이튼 계정 키 종류는 을 확인하십시오.

이 예시를 따라 계정 업데이트 트랜잭션을 보내면, 보내는 계정(Account)이 아니라 다른 계정(여러분의 수수료 대납 계정)이 이 트랜잭션 수수료를 대신 부담합니다. KAS에서 제공하는 수수료 대납 방식에 관한 자세한 내용은 을 확인하십시오.

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

클레이튼 키 타입(keyType)에 관한 자세한 내용은 을 확인하십시오.

계정 키를 역할 기반 키로 바꿀 때 특정 역할을 배제하고 싶다면, 배제하려는 역할 키에는 keyType=3()을 입력하십시오.

계정 키를 역할 기반 키로 바꿀 때 특정 역할만 업데이트하고 싶다면, 업데이트하고 싶지 않은 역할 키에는 keyType=128()을 입력하십시오.

typeInt 변수는 트랜잭션 종류를 구별하는 값입니다. 트랜잭션의 종류에 관한 자세한 내용은 을 확인하십시오.

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

클레이튼 계정 키를 역할 기반 키로 바꾸는 트랜잭션을 보냅니다. 여기서 소개하는 내용을 따르면 계정 키를 역할 기반 키 외에 다른 키로 바꿀 수 있으며 마찬가지로 수수료 대납 계정이 이 트랜잭션 수수료를 대납하게 할 수 있습니다. 클레이튼 계정 키 종류는 을 확인하십시오.

KAS로 계정 업데이트 트랜잭션을 전송하려면 Klaytn Node에 트랜잭션을 보내야 하며, 트랜잭션을 보내려면 트랜잭션 수수료를 지불해야 합니다. API를 호출하려면 계정 저장소에 계정을 생성하고 사용할 계정을 선택해야 합니다. 이 예시를 따라 Klay를 보내면, KLAY를 보내는 계정(Account)이 아니라 다른 계정(KAS의 글로벌 수수료 대납 계정)이 이 트랜잭션 수수료를 대신 부담합니다. KAS 글로벌 수수료 대납 계정(KAS GlobalFeePayer)이 트랜잭션을 전송하는 클레이튼 계정을 대신해 부담한 수수료는 추후 여러분의 KAS 계정에 청구됩니다. KAS에서 제공하는 수수료 대납 방식에 관한 자세한 내용은 을 확인하십시오.

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

클레이튼 키 타입(keyType)에 관한 자세한 내용은 을 확인하십시오.

계정 키를 역할 기반 키로 바꿀 때 특정 역할을 배제하고 싶다면, 배제하려는 역할 키에는 keyType=3()을 입력하십시오.

계정 키를 역할 기반 키로 바꿀 때 특정 역할만 업데이트하고 싶다면, 업데이트하고 싶지 않은 역할 키에는 keyType=128()을 입력하십시오.

typeInt 변수는 트랜잭션 종류를 구별하는 값입니다. 트랜잭션의 종류에 관한 자세한 내용은 을 확인하십시오.

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

트랜잭션
다음
일반적인 공개키
다중 서명용 키
역할 기반 키
다음
다음
다음
개발자 포럼
다음
다음
AccountKeyFail
AccountKeyNil
다음
다음
개발자 포럼
다음
다음
AccountKeyFail
AccountKeyNil
다음
다음
개발자 포럼
Getting Started
Getting Started
Getting Started
다음
다음
트랜잭션에 서명하는 API
KAS SDK
Getting Started
KAS SDK
KAS SDK