계정 업데이트
이 페이지는 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 콘솔 - 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)를 타인과 함부로 공유하지 말고 주의해 관리하십시오.

Klaytn 계정 업데이트

Klaytn 계정을 다른 계정으로 업데이트한다는 것은, 계정 키를 다른 키로 바꾼다는 것과 같은 뜻입니다. 예를 들어, 레거시 계정을 다중 서명 계정으로 업데이트하는 것은 내 Klaytn 계정 키를 레거시 키에서 다중 서명 키로 바꾼다는 것과 동일합니다.
Klaytn 계정과 계정 키에 관한 자세한 내용은 다음을 확인하십시오.
  • Klaytn 계정 키 모든 트랜잭션은 서명을 받아야 Klaytn에 전송되고, Klaytn에 전송되어야 실행됩니다. Klaytn 계정 키는 트랜잭션에 서명할 때 사용되지만, KAS를 사용하는 여러분은 일반적인 상황(KLAY 전송, 스마트 컨트랙트 배포 등)에서는 서명하지 않고도 트랜잭션을 보낼 수 있습니다. 여기서 일반적이지 않고 특수한 상황이란 1개의 트랜잭션에 여러 계정의 서명을 받아야 하거나(다중 서명), KAS에서 관리하는 Klaytn 계정 서명이 아닌 KAS 외부 Klaytn 계정 서명이 필요할 때(외부 서명)를 말합니다.
KAS에서도 트랜잭션에 서명하는 API를 제공합니다.
트랜잭션 서명에 사용하는 Klaytn 계정 키에는 크게 일반적인 공개키, 다중 서명용 키, 역할 기반 키가 있습니다.
Klaytn 키 타입(keyType)에 관한 자세한 내용은 다음을 확인하십시오.

계정 키를 다중 서명 키로 변경

여기서 소개하는 내용은 트랜잭션 전송 계정이 전송 수수료를 부담할 때 계정 키를 다중 서명 키로 변경하는 방법입니다.
먼저 Klaytn 계정 키를 다중 서명 키로 바꾸는 트랜잭션을 보냅니다. 계정 키를 다중 서명 키 외에 다른 키로도 바꿀 수 있습니다. Klaytn 계정 키 종류는 다음을 확인하십시오.
여러분의 Klaytn 계정을 다중 서명 계정으로 업데이트하는 것은 여러분의 계정 키를 AccountKeyWeightedMultiSig로 업데이트 하는 것과 동일합니다.
다중 서명 키를 구성하는 각 키를 가지고 있는 계정들은 모두 같은 계정 저장소에 있어야 합니다.
계정 업데이트 트랜잭션을 보내려면 Klaytn Node에 트랜잭션을 보내야 하며, 트랜잭션을 보내려면 트랜잭션 수수료를 지불해야 합니다. 이 예시를 따라 계정 업데이트 트랜잭션을 보내면, 트랜잭션을 보내는 계정이 트랜잭션 수수료를 직접 지불합니다. API를 호출하려면 계정 저장소와 계정을 생성하고 사용할 계정을 선택해야 합니다.
KAS SDK(caver-js/caver-java extension) 설치, 실행에 관한 자세한 내용은 KAS SDK를 확인하십시오. 계정 저장소 생성, 계정 생성, 계정 선택에 관한 자세한 내용은 Getting Started를 확인하십시오.

API 호출

내 계정 정보, 새롭게 사용할 키 정보를 입력하고 계정 업데이트 트랜잭션 전송 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다. 아래 API 호출 예시는, Klaytn 계정을 기준치가 3이고 트랜잭션 서명용 키가 4개이며 각 키는 가중치 1씩을 갖는 다중 서명 계정으로(=다중 서명 키를 갖도록) 업데이트합니다.
curl
javascript
java
1
curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/tx/account" \
2
-u {access-key-id}:{secret-access-key} \
3
--header "x-chain-id: {chain-id}" \
4
--header "Content-Type: application/json" \
5
--data-raw "{
6
"from": "0x5bb85d4032354E88020595AFAFC081C24098202e",
7
"accountKey": {
8
"keyType": 4,
9
"key": {
10
"threshold": 3,
11
"weightedKeys": [
12
{
13
"weight": 1,
14
"publicKey": "0x041c5c34cafdefddfd5d0c8baa9e9f75ff6aa6dc597776e5bf06e231c57926a2cb9a86f9d30c4760e70f30f08cf234e7847365bc5a1696223cfef73cd188e422ec"
15
},
16
{
17
"weight": 1,
18
"publicKey": "0x045552e73f34964eb04cad0d3c3dbd7cfeebbfb420ca83b1e7c640a9c76b42a4ca2308ddbdee4044c9f52a248ce3eee51c155c9d0567f3ebb32b4db38962f30f66"
19
},
20
{
21
"weight": 1,
22
"publicKey": "0x04ab9910325fd645a556fee3c6bbd8651be4fbff6688634d826474f3ef4baff7b1e4e48936db4cdb0fb3474beea3ba870bb0e7f9b0eb7c9e7b4e613bca90dec2"
23
},
24
{
25
"weight": 1,
26
"publicKey": "0x04a1c4e3830f19d1fb2c78d00cd5b29f75cdcc706a8611cbf4192c2d20f4899cba2ecee4706d0c58bdcbc2a634f7794cd43ecf02c6f1fc383a8bf8b1509dfdc493"
27
}
28
]
29
}
30
},
31
"nonce": 0,
32
"gasLimit": 1000000,
33
"submit": true
34
}"
Copied!
1
// Update to AccountKeyLegay
2
const tx = {
3
from: '0xA209b6D2DF012d63D798cB0BD0D7E0c53FddF649',
4
accountKey: { keyType: 1 },
5
gas: 1000000,
6
submit: true
7
}
8
const result = await caver.kas.wallet.requestAccountUpdate(tx)
9
10
// Update to AccountKeyPublic
11
const tx = {
12
from: '0x948C163A29Fc31996CCb478Fe4bA17C891Dc6221',
13
accountKey: {
14
keyType: 2,
15
key: '0x049e24b9f7b59730cd45cb8be47b32f88fb428798dde1d723e79f80f2c200cc8a2fcdaa340979c09dbaecad698825537c401624cf9ba1b7724650fe67056968c1c'
16
},
17
gas: 1000000,
18
submit: true
19
}
20
const result = await caver.kas.wallet.requestAccountUpdate(tx)
21
22
// Update to AccountKeyFail
23
const tx = {
24
from: '0x7d0B0321FB82d70C3A2dDa1ab9112a6d58c94ADF',
25
accountKey: { keyType: 3 },
26
gas: 1000000,
27
submit: true
28
}
29
const result = await caver.kas.wallet.requestAccountUpdate(tx)
30
31
// Update to AccountKeyWeightedMultiSig
32
const tx = {
33
from: '0x443f01B81ECC1e83dC46edA711F3D707511ef257',
34
accountKey: {
35
keyType: 4,
36
key: {
37
threshold: 2,
38
weightedKeys: [
39
{
40
weight: 1,
41
publicKey: '0x04a4dad8e41de69fdbf7c2d3b76eeeed47d449fd680d7dda0ae6346ac9e2c8de1637d8cbc4adbfa7b0f02ffedf39d8edb7dae983ba24a33fcdde37feedbe2a5cd7'
42
},
43
{
44
weight: 1,
45
publicKey: '0x0424a43009be004a10cf6d2d7ddb3fa31aa8e73bf540d8ad2a7a870c697981f3743f3691a45fc1c5ff13a7f521c5488b5a7926063b307c0def3d5f8f1f3a7fde0b'
46
}
47
]
48
}
49
},
50
gas: 1000000,
51
submit: true
52
}
53
const result = await caver.kas.wallet.requestAccountUpdate(tx)
54
55
// Update to AccountKeyRoleBased
56
const tx = {
57
from: '0x7fe2434DA3B6Af4e23bB234a3972ab0bD9bad1bc',
58
accountKey: {
59
keyType: 5,
60
key: [
61
{ keyType: 3, key: {} },
62
{
63
keyType: 4,
64
key: {
65
threshold: 2,
66
weightedKeys: [
67
{
68
weight: 1,
69
publicKey: '0x04abad100b699ea183959102c17d7792ba86b324548888ab4affb19bf814ea821066792679df7f1d8ce9075b93e29072d5600684a41a4614c1be9b3714302d9c4a'
70
},
71
{
72
weight: 1,
73
publicKey: '0x04c32ba77e5741783945a1ad7e2f201961d11e8e8192b104a2402e6307e9d7d9a77412693846eedc33083279e7e78e5619400bf194d8230ecec1f57cd14b791c2d'
74
}
75
]
76
}
77
},
78
{
79
keyType: 2,
80
key: '0x045505870ac8b7024e2b9eee23b8317eb79b796e44ece3fbb1d637d7a657bdbf0b3274216df59b1edf35bc94e4859357b5051cfaa8b5f659aae78a4d9bd2d8d6be'
81
}
82
]
83
},
84
gas: 1000000,
85
submit: true
86
}
87
const result = await caver.kas.wallet.requestAccountUpdate(tx)
Copied!
1
// Update to AccountKeyLegay
2
AccountUpdateTransactionRequest requestLegacy = new AccountUpdateTransactionRequest();
3
requestLegacy.setFrom("0x3723dc535131bba5108b6bfe6ccf2d2e512bdc91");
4
requestLegacy.setAccountKey(new KeyTypeLegacy());
5
requestLegacy.setSubmit(true);
6
7
TransactionResult result = caver.kas.wallet.requestAccountUpdate(requestLegacy);
8
System.out.println(result);
9
10
11
// Update to AccountKeyPublic
12
AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
13
request.setFrom("0x50f7ec091d363f9180f95921cbb2ad98c09a0822");
14
request.setAccountKey(new KeyTypePublic(account.getPublicKey()));
15
request.setSubmit(true);
16
17
TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
18
System.out.println(result);
19
20
21
// Update to AccountKeyFail
22
AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
23
request.setFrom("0xFdd009222A79179CDe24F15Da6022A9cF302fcD3");
24
request.setAccountKey(new KeyTypeFail());
25
request.setSubmit(true);
26
27
TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
28
System.out.println(result);
29
30
31
// Update to AccountKeyWeightedMultiSig
32
String publicKey1 = "0x048ab2585966fd8756e7565b9a6619a10f2b0c073825b66aafb9e474a03abc025bc27d9dd2304c90737160a206af7c938261d9efa0327474c858526104470f236b";
33
String publicKey2 = "0x0400df261720508aaeb0cd1ce01095e4a3fa88beef7300ab4663fa4769f74e0f4871258f438f11674f8d32c769d11e89eb7bcf7df382ceea0bc10a6a1e57e678a0";
34
String publicKey3 = "0x04b79fd28c45c3ca2ad6da97f8ba575605de16d249925a2321b8776f338d500eb2ce2b0530922564cb555a16435fc036f1eb007fc22ba9b9903cb6af0cb22f9ec3";
35
36
MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
37
multisigUpdateKey.setThreshold((long)2);
38
multisigUpdateKey.setWeightedKeys(
39
Arrays.asList(createMultiSig(2, publicKey1),
40
createMultiSig(1, publicKey2),
41
createMultiSig(1, publicKey3))
42
);
43
44
KeyTypeMultiSig keyTypeMultiSig = new KeyTypeMultiSig(multisigUpdateKey);
45
46
AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
47
request.setFrom("0xba4C0E1f4f67EE60BD4c72933535BC3B5a4819a2");
48
request.setAccountKey(keyTypeMultiSig);
49
request.setSubmit(true);
50
51
TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
52
System.out.println(result);
53
54
55
// Update to AccountKeyRoleBased
56
KeyTypePublic txKey = new KeyTypePublic();
57
txKey.setKey("0x0439a181139c535990b24c10e7f5d7c6155b74098a674d6bbe92a8fa3ec8482557dba13d7381ddb9d66cbecc604d293f87f918ff341973cac2400c7e342bd244f2");
58
59
KeyTypePublic accountUpdateKey = new KeyTypePublic();
60
accountUpdateKey.setKey("0x0454e19cf077e460f251ccc9f3c23737dbf15ef9c593d1b132ce0d18f028a93df5cec8e06bde9fe5cd3a60c1a18728bd20998067f86ce602f968fcd0e24d9da1cf");
61
62
63
String publicKey1 = "0x048ab2585966fd8756e7565b9a6619a10f2b0c073825b66aafb9e474a03abc025bc27d9dd2304c90737160a206af7c938261d9efa0327474c858526104470f236b";
64
String publicKey2 = "0x0400df261720508aaeb0cd1ce01095e4a3fa88beef7300ab4663fa4769f74e0f4871258f438f11674f8d32c769d11e89eb7bcf7df382ceea0bc10a6a1e57e678a0";
65
String publicKey3 = "0x04b79fd28c45c3ca2ad6da97f8ba575605de16d249925a2321b8776f338d500eb2ce2b0530922564cb555a16435fc036f1eb007fc22ba9b9903cb6af0cb22f9ec3";
66
67
MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
68
multisigUpdateKey.setThreshold((long)2);
69
multisigUpdateKey.setWeightedKeys(
70
Arrays.asList(createMultiSig(2, publicKey1),
71
createMultiSig(1, publicKey2),
72
createMultiSig(1, publicKey3))
73
);
74
75
KeyTypeMultiSig fdKey = new KeyTypeMultiSig(multisigUpdateKey);
76
77
KeyTypeRoleBased roleBasedUpdateKeyType = new KeyTypeRoleBased(Arrays.asList(txKey, accountUpdateKey, fdKey));
78
79
AccountUpdateTransactionRequest request = new AccountUpdateTransactionRequest();
80
request.setFrom("0xcf8b7b2c58805280ee4bb4d3fab17af8c6d9decf");
81
request.setAccountKey(roleBasedUpdateKeyType);
82
request.setGas(250000l);
83
request.setSubmit(true);
84
85
TransactionResult result = caver.kas.wallet.requestAccountUpdate(request);
86
System.out.println(result);
Copied!
  • submit: false이면 트랜잭션이 전송되지 않고, 서명된 트랜잭션 RLP와 트랜잭션 정보를 반환합니다.

API 응답

계정 업데이트 트랜잭션 전송 API의 응답은 아래와 같습니다.
curl
javascript
java
1
{
2
"accountKey": "0x04f89303f890e301a1021c5c34cafdefddfd5d0c8baa9e9f75ff6aa6dc597776e5bf06e231c57926a2cbe301a1025552e73f34964eb04cad0d3c3dbd7cfeebbfb420ca83b1e7c640a9c76b42a4cae301a102ab9910325fd645a556fee3c6bbd8651be4fbff6688634d826474f3ef4baff7b1e301a103a1c4e3830f19d1fb2c78d00cd5b29f75cdcc706a8611cbf4192c2d20f4899cba",
3
"from": "0x325dbaf78b393dc2115138c86a58f897ed413aff",
4
"gasLimit": 1000000,
5
"gasPrice": "0x5d21dba00",
6
"nonce": 2,
7
"rlp": "0x20f90101028505d21dba00830f424094325dbaf78b393dc2115138c86a58f897ed413affb89604f89303f890e301a1021c5c34cafdefddfd5d0c8baa9e9f75ff6aa6dc597776e5bf06e231c57926a2cbe301a1025552e73f34964eb04cad0d3c3dbd7cfeebbfb420ca83b1e7c640a9c76b42a4cae301a102ab9910325fd645a556fee3c6bbd8651be4fbff6688634d826474f3ef4baff7b1e301a103a1c4e3830f19d1fb2c78d00cd5b29f75cdcc706a8611cbf4192c2d20f4899cbaf847f8458207f5a0c669b62293629316d18e12cd90d5c4dc24000e13d31200c53e40ac8f01bf249ea062be831829631503e20cccd160fe1ec450950e6f982df16d83d3f6f948924aa1",
8
"signatures": [
9
{
10
"R": "0xc669b62293629316d18e12cd90d5c4dc24000e13d31200c53e40ac8f01bf249e",
11
"S": "0x62be831829631503e20cccd160fe1ec450950e6f982df16d83d3f6f948924aa1",
12
"V": "0x7f5"
13
}
14
],
15
"status": "Submitted",
16
"transactionHash": "0xd596aad17c6cf9f0fd9f3710652e00ebedd4f91cadc6cd856563e856492bd41c",
17
"typeInt": 32
18
}
Copied!
1
TransactionResult {
2
from: '0x7fe2434da3b6af4e23bb234a3972ab0bd9bad1bc',
3
gas: 1000000,
4
gasPrice: '0x5d21dba00',
5
nonce: 0,
6
rlp: '0x20f8e5808505d21dba00830f4240947fe2434da3b6af4e23bb234a3972ab0bd9bad1bcb87a05f8778203c0b84e04f84b02f848e301a102abad100b699ea183959102c17d7792ba86b324548888ab4affb19bf814ea8210e301a103c32ba77e5741783945a1ad7e2f201961d11e8e8192b104a2402e6307e9d7d9a7a302a1025505870ac8b7024e2b9eee23b8317eb79b796e44ece3fbb1d637d7a657bdbf0bf847f8458207f6a0a7f12de6c2093f63d83f04d456446dfbd20c84473c68450ad874370fdde756c5a064bb0fabf09ef769a96bff45d1f74a108463409b3f4058a1f881d6ea9868e3aa',
7
typeInt: 32,
8
signatures: [
9
Signature {
10
R: '0xa7f12de6c2093f63d83f04d456446dfbd20c84473c68450ad874370fdde756c5',
11
S: '0x64bb0fabf09ef769a96bff45d1f74a108463409b3f4058a1f881d6ea9868e3aa',
12
V: '0x7f6'
13
}
14
],
15
status: 'Submitted',
16
transactionHash: '0x6043beed2284b8223edef80c0bc562af36be300fb83be0377859a4d2968823cb',
17
accountKey: '0x05f8778203c0b84e04f84b02f848e301a102abad100b699ea183959102c17d7792ba86b324548888ab4affb19bf814ea8210e301a103c32ba77e5741783945a1ad7e2f201961d11e8e8192b104a2402e6307e9d7d9a7a302a1025505870ac8b7024e2b9eee23b8317eb79b796e44ece3fbb1d637d7a657bdbf0b'
18
}
Copied!
1
class TransactionResult {
2
from: 0x50f7ec091d363f9180f95921cbb2ad98c09a0822
3
gas: 100000
4
gasPrice: 0x5d21dba00
5
input: null
6
nonce: 0
7
rlp: 0x20f88d808505d21dba00830186a09450f7ec091d363f9180f95921cbb2ad98c09a0822a302a103aa8fe5f10690ddbc02cc69f6777b6e8d5e0fe5a21a791b63899d7bb1395c6813f847f8458207f5a00154c1b29101d07513215222bbc113f4825c1bebe3f5a9c8c395c1cb9c5b16e3a053c32a15b14d753eed6bec46db48fa04ec31ae307d2a76445dea2ab268917eb0
8
signatures: [class Signature {
9
R: 0x154c1b29101d07513215222bbc113f4825c1bebe3f5a9c8c395c1cb9c5b16e3
10
S: 0x53c32a15b14d753eed6bec46db48fa04ec31ae307d2a76445dea2ab268917eb0
11
V: 0x7f5
12
}]
13
status: Submitted
14
to: null
15
transactionHash: 0x52eb902ed67ca67fea6f7de5de6a2999a217283667c92061123242a9436aefcd
16
typeInt: 32
17
value: null
18
code: null
19
message: null
20
transactionId: null
21
accountKey: 0x02a103aa8fe5f10690ddbc02cc69f6777b6e8d5e0fe5a21a791b63899d7bb1395c6813
22
}
Copied!
이 API에 관한 자세한 내용은 다음을 확인하십시오. 이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

계정 키를 역할 기반 키로 변경 1

여기서 소개하는 내용은 수수료 대납 계정이 트랜잭션 전송 수수료를 부담할 때 계정 키를 역할 기반 키로 변경하는 방법입니다. Klaytn 계정 키를 역할 기반 키로 바꾸는 트랜잭션을 보냅니다. 계정 키를 역할 기반 키 외에 다른 키로 바꿀 수 있으며 마찬가지로 수수료 대납 계정이 이 트랜잭션 수수료를 대납하게 할 수 있습니다. Klaytn 계정 키 종류는 다음을 확인하십시오.
여러분의 Klaytn 계정을 역할 기반 계정으로 업데이트하는 것은 여러분의 계정 키를 AccountKeyRoleBased로 업데이트 하는 것과 동일합니다.
KAS로 계정 업데이트 트랜잭션을 전송하려면 Klaytn Node에 트랜잭션을 보내야 하며, 트랜잭션을 보내려면 트랜잭션 수수료를 지불해야 합니다. API를 호출하려면 계정 저장소, 수수료 대납 계정 저장소에 각각 계정, 수수료 대납 계정을 생성하고 사용할 계정, 수수료 대납 계정을 선택해야 합니다.
이 예시를 따라 계정 업데이트 트랜잭션을 보내면, 보내는 계정(Account)이 아니라 다른 계정(여러분의 수수료 대납 계정)이 이 트랜잭션 수수료를 대신 부담합니다. KAS에서 제공하는 수수료 대납 방식에 관한 자세한 내용은 다음을 확인하십시오.
KAS SDK(caver-js/caver-java extension) 설치, 실행에 관한 자세한 내용은 KAS SDK를 확인하십시오. 계정 저장소 생성, 계정 생성, 계정 선택에 관한 자세한 내용은 Getting Started를 확인하십시오. 수수료 대납 계정 저장소 생성, FeePayerAccount 생성, FeePayerAccount 선택에 관한 자세한 내용은 Getting Started를 확인하십시오.

API 호출

수수료 대납 방식 계정 업데이트 트랜잭션 전송 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다. 아래 API 호출 예시는, Klaytn 계정을 역할 기반 키(AccountKeyRoleBased, KAS에서는 keyType:5)로 업데이트합니다. 어떤 Klaytn 계정이 역할 기반 키를 가지면 이 계정은 자신이 수행하는 역할(Role)에 따라 다른 키를 트랜잭션 서명에 사용합니다.
Klaytn 키 타입(keyType)에 관한 자세한 내용은 다음을 확인하십시오.
역할은 크게 일반 트랜잭션 전송(KLAY 전송, 컨트랙트 배포, 컨트랙트 실행 등), 계정 업데이트, 수수료 대납의 3가지가 있습니다. 아래 API 호출 예시는 일반 트랜잭션 전송용으로 AccountKeyPublic(keyType:2) 키, 계정 업데이트용으로 AccountKeyFail(keyType:3) 키, 수수료 대납용으로 AccountKeyWeightedMultiSig(keyType:4) 키를 가진 계정으로 업데이트 합니다. 여기서 수수료 대납용 키는 기준치가 2이고 트랜잭션 서명용 키가 2개이며 각 키는 가중치 1씩을 갖는 다중 서명용 키입니다. 이 계정은 계정 업데이트 역할에 AccountKeyFail을 입력했으므로 계정을 업데이트하는 역할을 수행하지 않습니다.
계정 키를 역할 기반 키로 바꿀 때 특정 역할을 배제하고 싶다면, 배제하려는 역할 키에는 keyType=3(AccountKeyFail)을 입력하십시오.
계정 키를 역할 기반 키로 바꿀 때 특정 역할만 업데이트하고 싶다면, 업데이트하고 싶지 않은 역할 키에는 keyType=128(AccountKeyNil)을 입력하십시오.
curl
javascript
java
1
curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/tx/fd-user/account" \
2
-u {access-key-id}:{secret-access-key} \
3
--header "x-chain-id: {chain-id}" \
4
--header "Content-Type: application/json" \
5
--data-raw "{
6
"from": "0x5bb85d4032354E88020595AFAFC081C24098202e",
7
"accountKey": {
8
"keyType": 5,
9
"key": [
10
{
11
"keyType": 3,
12
"key": {}
13
},
14
{
15
"keyType": 4,
16
"key": {
17
"threshold": 2,
18
"weightedKeys": [
19
{
20
"weight": 1,
21
"publicKey": "0xe4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512da5735a23ce1654b14680054a993441eae7c261983a56f8e0da61280758b5919"
22
},
23
{
24
"weight": 1,
25
"publicKey": "0x36f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c066fdf9fc87a16ac359e66d9761445d5ccbb417fb7757a3f5209d713824596a50d"
26
}
27
]
28
}
29
},
30
{
31
"keyType": 2,
32
"key": "0x698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f27cbef61d21ed45e6675e220b73912c76522bfae899ddde4eb25926617fb89d5d"
33
}
34
]
35
},
36
"nonce": 0,
37
"gasLimit": 1000000,
38
"submit": true,
39
"feePayer": "0x85B98485444c89880cD9C48807CEF727C296F2da",
40
"feeRatio": 10
41
}"
Copied!
1
// 각 AccountKey 타입 별 트랜잭션 포맷은 페이지 상단의 "계정 키를 다중 서명 키로 변경: 트랜잭션을 보내는 계정이 트랜잭션 전송 수수료를 부담하기" 챕터를 참고하십시오.
2
const tx = {
3
from: '0xA3E79115c78bbC8eFdDA2a17a4Bdb48Dca2b5333',
4
accountKey: {
5
keyType: 4,
6
key: {
7
threshold: 2,
8
weightedKeys: [
9
{
10
weight: 1,
11
publicKey: '0x04371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec6544bc9a04598ca5ba4c2e75e648c6d8e6a892b33662bfe680544daa53c75b06e35'
12
},
13
{
14
weight: 1,
15
publicKey: '0x041640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c52855ed8b4164db5db21d3c4e3baed2611d9d34932f36b6096086eee0c690417fb97'
16
}
17
]
18
}
19
},
20
gas: 1000000,
21
feePayer: '0x44Ee3906a7a2007762E9d706dF6E4eF63FA1edA8',
22
submit: true
23
}
24
const result = await caver.kas.wallet.requestFDAccountUpdatePaidByUser(tx)
Copied!
1
String publicKey1 = "0x0459b8b2f0297f8fc96326254c4b6dc706c53119626ab1a524b629af9e7bcbe153b81c6a4870e76ca6533a9ac10c879a19cbe415fcb481dcd13ddf42ecbc877c11";
2
String publicKey2 = "0x0471ed41581d6cd86499cfa0980db20b86c9a5028b5b2fbce6eef92a297f3ba96f3bfda8b42a45a43868dd4308f2fa8e068d25701ce6c53bbddc6c6e7bd1d7049c";
3
String publicKey3 = "0x04508fd5b298583115eb69b445d13c1dc5ccf96a73e1135bb52f4852b35206468c3b21dcbae4560ef34638632827539e8a770dbc922b9e7e1bd5f30c3dd84bb19b";
4
5
MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
6
multisigUpdateKey.setThreshold((long)2);
7
multisigUpdateKey.setWeightedKeys(
8
Arrays.asList(createMultiSig(2, publicKey1),
9
createMultiSig(1, publicKey2),
10
createMultiSig(1, publicKey3))
11
);
12
13
KeyTypeMultiSig keyTypeMultiSig = new KeyTypeMultiSig(multisigUpdateKey);
14
15
FDAccountUpdateTransactionRequest request = new FDAccountUpdateTransactionRequest();
16
request.setFrom("0x08Ba68AC55396e291adD39292E0280b08342FE2b");
17
request.setAccountKey(keyTypeMultiSig);
18
request.setFeePayer("0x31d845Ac80A0B2a38f6267CabcF34F8fA9DcD2B7");
19
request.setSubmit(true);
20
21
FDTransactionResult result = caver.kas.wallet.requestFDAccountUpdatePaidByUser(request);
22
System.out.println(result);
Copied!
  • submit: false이면 트랜잭션이 전송되지 않고, 서명된 트랜잭션 RLP와 트랜잭션 정보를 반환합니다.
  • feePayer: 사용자가 트랜잭션 수수료를 대납하는 계정을 별도로 사용할 때, 이 계정 주소를 여기에 입력합니다. KAS에서 먼저 수수료를 대납해주는 방식을 사용하려면 feePayer 파라미터 자체를 사용하지 않습니다.
  • feeRatio: 트랜잭션 수수료 전체에서 feePayer가 납부할 비율(1%~99%)입니다. 나머지 비율은 트랜잭션을 Klaytn에 보내는 from이 직접 납부합니다. 사용자 대납 계정으로 납부하거나 KAS에서 수수료를 대납하는 2가지 방식 모두, feeRatio를 사용할 수 있습니다.

API 응답

수수료 대납 계정 업데이트 트랜잭션 전송 API의 응답은 아래와 같습니다.
curl
javascript
java
1
{
2
"accountKey": "0x05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2",
3
"feePayer": "0xe8ab1729ab614551021cf5cc22c0e037f5a82930",
4
"from": "0x9c56b45b7443bc73f47234199982481c64807f78",
5
"gasLimit": 1000000,
6
"gasPrice": "0x5d21dba00",
7
"nonce": 6,
8
"rlp": "0x21f90143068505d21dba00830f4240949c56b45b7443bc73f47234199982481c64807f78b87a05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2f847f8458207f5a0417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6a024d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a3179994e8ab1729ab614551021cf5cc22c0e037f5a82930f847f8458207f5a0b2917ba146947e7898f3df954ffde028cf11c5f23338b3eccc5e1ce20e73ec9ca05251179f052c064813fecae03ec07b121622f8352c599c12f4671784d6b94a03",
9
"signatures": [
10
{
11
"R": "0x417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6",
12
"S": "0x24d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a31799",
13
"V": "0x7f5"
14
}
15
],
16
"status": "Submitted",
17
"transactionHash": "0x6bd7c53520171aa9dfb535b62ac35e97a16798de7060eb844cbad6afbd847b86",
18
"typeInt": 33
19
}
Copied!
1
FDTransactionResult {
2
feePayer: '0x44ee3906a7a2007762e9d706df6e4ef63fa1eda8',
3
from: '0xa3e79115c78bbc8efdda2a17a4bdb48dca2b5333',
4
gas: 1000000,
5
gasPrice: '0x5d21dba00',
6
nonce: 0,
7
rlp: '0x21f90117808505d21dba00830f424094a3e79115c78bbc8efdda2a17a4bdb48dca2b5333b84e04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285f847f8458207f5a072332d0c98a364702d5da44f75ea2945d030cd6d540221433248dacf7d7cc543a01c689fe90dbc086c88a7faf9d160a544de711c905633c252b4d825e7c7396a189444ee3906a7a2007762e9d706df6e4ef63fa1eda8f847f8458207f6a052ba46bc1616929027ba54df4a736bd021ba4603c3a3bb19d6b4e4150bc4bf3fa077fa110b70b964beb79e895a5f9476a8b594b0fce2912c51c22a97c1e482b950',
8
typeInt: 33,
9
signatures: [
10
Signature {
11
R: '0x72332d0c98a364702d5da44f75ea2945d030cd6d540221433248dacf7d7cc543',
12
S: '0x1c689fe90dbc086c88a7faf9d160a544de711c905633c252b4d825e7c7396a18',
13
V: '0x7f5'
14
}
15
],
16
status: 'Submitted',
17
transactionHash: '0x9d2fd76c3962f013a9f81f7a03f3237b09efd465a81b60ebbcd476b4472e9fe3',
18
accountKey: '0x04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285'
19
}
Copied!
1
class FDTransactionResult {
2
feePayer: 0x31d845ac80a0b2a38f6267cabcf34f8fa9dcd2b7
3
from: 0xdd9f780ef810138a9625071b45211b00a76c9c43
4
gas: 100000
5
gasPrice: 0x5d21dba00
6
input: null
7
nonce: 0
8
rlp: 0x21f9013b808505d21dba00830186a094dd9f780ef810138a9625071b45211b00a76c9c43b87204f86f02f86ce302a10359b8b2f0297f8fc96326254c4b6dc706c53119626ab1a524b629af9e7bcbe153e301a10271ed41581d6cd86499cfa0980db20b86c9a5028b5b2fbce6eef92a297f3ba96fe301a103508fd5b298583115eb69b445d13c1dc5ccf96a73e1135bb52f4852b35206468cf847f8458207f6a0942b8febf7814a978d50144a086fb8266d6946f2b00d7d94a162245f8606b52ca0129d39b1d9f957ba61f7d2ead87dbc8eeeedf758d4846385a0ad66e21e67f5419431d845ac80a0b2a38f6267cabcf34f8fa9dcd2b7f847f8458207f6a079da3d049da82db02191c3df171af460043f13cd480b029d35d77a36dede494fa009eb920ba1c809d5a06912f09b0888ac92abd32ed08dba987f85dedd91d80bcd
9
signatures: [class Signature {
10
R: 0x942b8febf7814a978d50144a086fb8266d6946f2b00d7d94a162245f8606b52c
11
S: 0x129d39b1d9f957ba61f7d2ead87dbc8eeeedf758d4846385a0ad66e21e67f541
12
V: 0x7f6
13
}]
14
status: Submitted
15
to: null
16
transactionHash: 0x3d0b8802d1c16655115803f23f4866c9e0fb5d18a02862fb4f979a1799b43bd8
17
typeInt: 33
18
value: null
19
feeRatio: null
20
transactionId: null
21
accountKey: 0x04f86f02f86ce302a10359b8b2f0297f8fc96326254c4b6dc706c53119626ab1a524b629af9e7bcbe153e301a10271ed41581d6cd86499cfa0980db20b86c9a5028b5b2fbce6eef92a297f3ba96fe301a103508fd5b298583115eb69b445d13c1dc5ccf96a73e1135bb52f4852b35206468c
22
}
Copied!
typeInt 변수는 트랜잭션 종류를 구별하는 값입니다. 트랜잭션의 종류에 관한 자세한 내용은 다음을 확인하십시오.
이 API에 관한 자세한 내용은 다음을 확인하십시오. 이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.

계정 키를 역할 기반 키로 변경 2

여기서 소개하는 내용은 KAS가 트랜잭션 전송 수수료를 부담할 때 계정 키를 역할 기반 키로 변경하는 방법입니다. Klaytn 계정 키를 역할 기반 키로 바꾸는 트랜잭션을 보냅니다. 계정 키를 역할 기반 키 외에 다른 키로 바꿀 수 있으며 마찬가지로 수수료 대납 계정이 이 트랜잭션 수수료를 대납하게 할 수 있습니다. Klaytn 계정 키 종류는 다음을 확인하십시오.
여러분의 Klaytn 계정을 역할 기반 계정으로 업데이트하는 것은 여러분의 계정 키를 AccountKeyRoleBased로 업데이트 하는 것과 동일합니다.
KAS로 계정 업데이트 트랜잭션을 전송하려면 Klaytn Node에 트랜잭션을 보내야 하며, 트랜잭션을 보내려면 트랜잭션 수수료를 지불해야 합니다. API를 호출하려면 계정 저장소에 계정을 생성하고 사용할 계정을 선택해야 합니다. 이 예시를 따라 Klay를 보내면, KLAY를 보내는 계정(Account)이 아니라 다른 계정(KAS의 글로벌 수수료 대납 계정)이 이 트랜잭션 수수료를 대신 부담합니다. KAS 글로벌 수수료 대납 계정(KAS GlobalFeePayer)이 트랜잭션을 전송하는 Klaytn 계정을 대신해 부담한 수수료는 추후 여러분의 KAS 계정에 청구됩니다. KAS에서 제공하는 수수료 대납 방식에 관한 자세한 내용은 다음을 확인하십시오.
KAS SDK(caver-js/caver-java extension) 설치, 실행에 관한 자세한 내용은 KAS SDK를 확인하십시오. 계정 저장소 생성, 계정 생성, 계정 선택에 관한 자세한 내용은 Getting Started를 확인하십시오.

API 호출

KAS GlobalFeePayer 수수료 대납 방식 계정 업데이트 트랜잭션 전송 API를 호출합니다. API 호출 시 REST API를 사용할 수 있습니다. 아래 API 호출 예시는, Klaytn 계정을 역할 기반 키(AccountKeyRoleBased, KAS에서는 keyType:5)로 업데이트합니다. 어떤 Klaytn 계정이 역할 기반 키를 가지면 이 계정은 자신이 수행하는 역할(Role)에 따라 다른 키를 트랜잭션 서명에 사용합니다.
Klaytn 키 타입(keyType)에 관한 자세한 내용은 다음을 확인하십시오.
역할은 크게 일반 트랜잭션 전송(KLAY 전송, 컨트랙트 배포, 컨트랙트 실행 등), 계정 업데이트, 수수료 대납의 3가지가 있습니다. 아래 API 호출 예시는 일반 트랜잭션 전송용으로 AccountKeyPublic(keyType:2) 키, 계정 업데이트용으로 AccountKeyFail(keyType:3) 키, 수수료 대납용으로 AccountKeyWeightedMultiSig(keyType:4) 키를 가진 계정으로 업데이트 합니다. 여기서 수수료 대납용 키는 기준치가 2이고 트랜잭션 서명용 키가 2개이며 각 키는 가중치 1씩을 갖는 다중 서명용 키입니다. 이 계정은 계정 업데이트 역할에 AccountKeyFail을 입력했으므로 계정을 업데이트하는 역할을 수행하지 않습니다.
계정 키를 역할 기반 키로 바꿀 때 특정 역할을 배제하고 싶다면, 배제하려는 역할 키에는 keyType=3(AccountKeyFail)을 입력하십시오.
계정 키를 역할 기반 키로 바꿀 때 특정 역할만 업데이트하고 싶다면, 업데이트하고 싶지 않은 역할 키에는 keyType=128(AccountKeyNil)을 입력하십시오.
curl
javascript
java
1
curl --location --request PUT "https://wallet-api.klaytnapi.com/v2/tx/fd/account" \
2
-u {access-key-id}:{secret-access-key} \
3
--header "x-chain-id: {chain-id}" \
4
--header "Content-Type: application/json" \
5
--data-raw "{
6
"from": "0x5bb85d4032354E88020595AFAFC081C24098202e",
7
"accountKey": {
8
"keyType": 5,
9
"key": [
10
{
11
"keyType": 3,
12
"key": {}
13
},
14
{
15
"keyType": 4,
16
"key": {
17
"threshold": 2,
18
"weightedKeys": [
19
{
20
"weight": 1,
21
"publicKey": "0xe4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512da5735a23ce1654b14680054a993441eae7c261983a56f8e0da61280758b5919"
22
},
23
{
24
"weight": 1,
25
"publicKey": "0x36f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c066fdf9fc87a16ac359e66d9761445d5ccbb417fb7757a3f5209d713824596a50d"
26
}
27
]
28
}
29
},
30
{
31
"keyType": 2,
32
"key": "0x698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f27cbef61d21ed45e6675e220b73912c76522bfae899ddde4eb25926617fb89d5d"
33
}
34
]
35
},
36
"nonce": 0,
37
"gasLimit": 1000000,
38
"submit": true,
39
"feeRatio": 10
40
}"
Copied!
1
// 각 AccountKey 타입 별 트랜잭션 포맷은 페이지 상단의 "계정 키를 다중 서명 키로 변경: 트랜잭션을 보내는 계정이 트랜잭션 전송 수수료를 부담하기" 챕터를 참고하십시오.
2
const tx = {
3
from: '0xd19CeD8B6CA1d5924ECaf4321c1C8Fae64C2ADf8',
4
accountKey: {
5
keyType: 4,
6
key: {
7
threshold: 2,
8
weightedKeys: [
9
{
10
weight: 1,
11
publicKey: '0x04371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec6544bc9a04598ca5ba4c2e75e648c6d8e6a892b33662bfe680544daa53c75b06e35'
12
},
13
{
14
weight: 1,
15
publicKey: '0x041640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c52855ed8b4164db5db21d3c4e3baed2611d9d34932f36b6096086eee0c690417fb97'
16
}
17
]
18
}
19
},
20
gas: 1000000,
21
submit: true
22
}
23
const result = await caver.kas.wallet.requestFDAccountUpdatePaidByGlobalFeePayer(tx)
Copied!
1
String publicKey1 = "0x04a9f0fbeab8c415e560c12266c51ecd90c71dd16ca97a99d3fd55f2eaf4698a1a68a942c0d25bd27f3d4e5604b394fb197b69091972d70d35927896633aae140c";
2
String publicKey2 = "0x0432ac2fa7aa17035999f9dc2b151d9b551a85e4acb6c61e2e4905bafcf64b5fb29f59f12d631a31a3fb32c9913945cfc623db4714471a7ceee4c2d39c99922691";
3
String publicKey3 = "0x040f381470965e1c939e792b583ae221fd5fb7524c25bc07221e2a80f71431ed2a2e859dfb641aa8c809d5e649d0b5fc3ba407369aa7e67f72d63d5a253f143048";
4
5
MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
6
multisigUpdateKey.setThreshold((long)2);
7
multisigUpdateKey.setWeightedKeys(
8
Arrays.asList(createMultiSig(2, publicKey1),
9
createMultiSig(1, publicKey2),
10
createMultiSig(1, publicKey3))
11
);
12
13
KeyTypeMultiSig keyTypeMultiSig = new KeyTypeMultiSig(multisigUpdateKey);
14
15
FDAccountUpdateTransactionRequest request = new FDAccountUpdateTransactionRequest();
16
request.setFrom("0xEFBB861E098641550e5b1732454b1dD7BA008259");
17
request.setAccountKey(keyTypeMultiSig);
18
request.setSubmit(true);
19
20
FDTransactionResult result = caver.kas.wallet.requestFDAccountUpdatePaidByGlobalFeePayer(request);
21
System.out.println(result);
Copied!
  • submit: false이면 트랜잭션이 전송되지 않고, 서명된 트랜잭션 RLP와 트랜잭션 정보를 반환합니다.
  • feeRatio: 트랜잭션 수수료 전체에서 feePayer가 납부할 비율(1%~99%)입니다. 나머지 비율은 트랜잭션을 Klaytn에 보내는 from이 직접 납부합니다.
    • 사용자 대납 계정으로 납부하거나 KAS에서 수수료를 대납하는 2가지 방식 모두, feeRatio를 사용할 수 있습니다.

API 응답

KAS GlobalFeePayer 수수료 대납 계정 업데이트 트랜잭션 전송 API의 응답은 아래와 같습니다.
curl
javascript
java
1
{
2
"accountKey": "0x05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2",
3
"feePayer": "0x85b98485444c89880cd9c48807cef727c296f2da",
4
"feeRatio": 10,
5
"from": "0x9c56b45b7443bc73f47234199982481c64807f78",
6
"gasLimit": 1000000,
7
"gasPrice": "0x5d21dba00",
8
"nonce": 6,
9
"rlp": "0x21f90143068505d21dba00830f4240949c56b45b7443bc73f47234199982481c64807f78b87a05f8778203c0b84e04f84b02f848e301a103e4a01407460c1c03ac0c82fd84f303a699b210c0b054f4aff72ff7dcdf01512de301a10336f6355f5b532c3c1606f18fa2be7a16ae200c5159c8031dd25bfa389a4c9c06a302a103698a5769e28d0a2cf138a4f6533b158e90f1000a6331fe56aea628cf061f74f2f847f8458207f5a0417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6a024d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a3179994e8ab1729ab614551021cf5cc22c0e037f5a82930f847f8458207f5a0b2917ba146947e7898f3df954ffde028cf11c5f23338b3eccc5e1ce20e73ec9ca05251179f052c064813fecae03ec07b121622f8352c599c12f4671784d6b94a03",
10
"signatures": [
11
{
12
"R": "0x417123ce3a739bda66493ccf83bbc2b0e6a8a5ef181c04a9cbf76169abb106b6",
13
"S": "0x24d596ce7e8f108012f26ec8853a1b9b65b4e670be8de7cbcbe73709f3a31799",
14
"V": "0x7f5"
15
}
16
],
17
"status": "Submitted",
18
"transactionHash": "0x6bd7c53520171aa9dfb535b62ac35e97a16798de7060eb844cbad6afbd847b86",
19
"typeInt": 33
20
}
Copied!
1
FDTransactionResult {
2
feePayer: '0x1b71a63903e35371e2fc41c6012effb99b9a2c0f',
3
from: '0xd19ced8b6ca1d5924ecaf4321c1c8fae64c2adf8',
4
gas: 1000000,
5
gasPrice: '0x5d21dba00',
6
nonce: 0,
7
rlp: '0x21f90117808505d21dba00830f424094d19ced8b6ca1d5924ecaf4321c1c8fae64c2adf8b84e04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285f847f8458207f5a0f70cfcc8c3354eec1b6ed248bd59f05501f18507fd00e546d17f3925d277fdaaa0295ee51197017cf9512c7d5ca93d5cf504a866533b55347002bed2c7960ab2e9941b71a63903e35371e2fc41c6012effb99b9a2c0ff847f8458207f5a0c4803710b2856e75aef99192911d386ffd25c23825835f5cc649abd63f664be0a020e65737788dc2006144891d1e97e60200b2163e6a8b890693a87716b0126e5a',
8
typeInt: 33,
9
signatures: [
10
Signature {
11
R: '0xf70cfcc8c3354eec1b6ed248bd59f05501f18507fd00e546d17f3925d277fdaa',
12
S: '0x295ee51197017cf9512c7d5ca93d5cf504a866533b55347002bed2c7960ab2e9',
13
V: '0x7f5'
14
}
15
],
16
status: 'Submitted',
17
transactionHash: '0x53fcc4efe8a7fb7b251233564043dd8c2fdedea7b7d42d750a1cc4aead208c11',
18
accountKey: '0x04f84b02f848e301a103371334d038d983f3b560b2534385138ffaf69cf1aef039b268ef69c1736ec654e301a1031640a55aed2c871f8896a263b378ce73e323254de9173fd071bb29aa8d4c5285'
19
}
Copied!
1
class FDTransactionResult {
2
feePayer: 0x1b71a63903e35371e2fc41c6012effb99b9a2c0f
3
from: 0xefbb861e098641550e5b1732454b1dd7ba008259
4
gas: 100000
5
gasPrice: 0x5d21dba00
6
input: null
7
nonce: 0
8
rlp: 0x21f9013b808505d21dba00830186a094efbb861e098641550e5b1732454b1dd7ba008259b87204f86f02f86ce302a102a9f0fbeab8c415e560c12266c51ecd90c71dd16ca97a99d3fd55f2eaf4698a1ae301a10332ac2fa7aa17035999f9dc2b151d9b551a85e4acb6c61e2e4905bafcf64b5fb2e301a1020f381470965e1c939e792b583ae221fd5fb7524c25bc07221e2a80f71431ed2af847f8458207f6a0d9272e8f511ffc30ebb77c968ca3fedc2a62e436fcdaba96c0d05cdbdeebda24a05cf0adb9b257a08ac2e3232b9943e60e5c3faf16c87f239258ed9ce199d64a36941b71a63903e35371e2fc41c6012effb99b9a2c0ff847f8458207f5a0ec3596ab6196a3fc5a027eea06758e9afa0a24b63c1aac06004afd377e878aaca00846ed9051ccf56b74317b855e225ff9ef89136557049fc6124f0f2f45459f74
9
signatures: [class Signature {
10
R: 0xd9272e8f511ffc30ebb77c968ca3fedc2a62e436fcdaba96c0d05cdbdeebda24
11
S: 0x5cf0adb9b257a08ac2e3232b9943e60e5c3faf16c87f239258ed9ce199d64a36
12
V: 0x7f6
13
}]
14
status: Submitted
15
to: null
16
transactionHash: 0x35cd6e962aacdde5b1188267f0fc81b31fdd42b9c9d9f7ee31f7b9ee82be6510
17
typeInt: 33
18
value: null
19
feeRatio: null
20
transactionId: null
21
accountKey: 0x04f86f02f86ce302a102a9f0fbeab8c415e560c12266c51ecd90c71dd16ca97a99d3fd55f2eaf4698a1ae301a10332ac2fa7aa17035999f9dc2b151d9b551a85e4acb6c61e2e4905bafcf64b5fb2e301a1020f381470965e1c939e792b583ae221fd5fb7524c25bc07221e2a80f71431ed2a
22
}
Copied!
typeInt 변수는 트랜잭션 종류를 구별하는 값입니다. 트랜잭션의 종류에 관한 자세한 내용은 다음을 확인하십시오.
이 API에 관한 자세한 내용은 다음을 확인하십시오. 이 문서 혹은 KAS에 관한 문의는 개발자 포럼을 방문해 도움 받으십시오.