레거시 트랜잭션 조회
이 페이지는 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에서 레거시 계정이란 공개키가 개인키로부터 파생되어 공개키와 개인키가 서로 의존관계로 묶여있는 계정입나다. 이 계정은 오직 "KLAY 전송, 스마트 컨트랜트 배포, 스마트 컨트랙트 실행"(레거시 트랜잭션)만 가능합니다. 자세한 내용은 레거시 트랜잭션을 확인하십시오.
KAS에서 처음 Klaytn 계정을 만들 때 기본적으로 레거시 계정으로 생성됩니다.
다중 서명, 데이터 앵커링 등 다양한 트랜잭션을 보내려면 레거시 계정을 다른 계정으로 업데이트해야 합니다.
트랜잭션을 보내려면 Klaytn Node에 트랜잭션을 보내야 하며, 트랜잭션 수수료를 지불해야 합니다. 이 예시를 따르면 이 트랜잭션을 보내는 계정이 트랜잭션 수수료를 직접 지불합니다. API를 호출하려면 계정 저장소와 계정을 생성하고 사용할 계정을 선택해야 합니다.
KAS SDK(caver-js/caver-java extension) 설치, 실행에 관한 자세한 내용은 KAS SDK를 확인하십시오.
계정 저장소 생성, 계정 생성, 계정 선택에 관한 자세한 내용은 Getting Started를 확인하십시오.
레거시 트랜잭션 전송 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다. 아래는 KLAY를 다른 계정으로 보내는 레거시 트랜잭션을 전송하는 예시입니다.
curl
javascript
java
curl --location --request POST "https://wallet-api.klaytnapi.com/v2/tx/legacy" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}"
--data-raw "{
"from": "",
"value": "0x121111111111111111",
"to": "0x5bb85d4032354E88020595AFAFC081C24098202e",
"nonce": 0,
"gas": 1000000,
"submit": true
}"
const tx = {
from: "0x602846DDC31F6Fc092edcF945565fBE9c48BdD7E",
to: "0x76c6b1f34562ed7a843786e1d7f57d0d7948a6f1",
value: 1,
gas: 25000,
submit: true,
};
const result = await caver.kas.wallet.requestLegacyTransaction(tx);
LegacyTransactionRequest request = new LegacyTransactionRequest();
request.setFrom("0x81bA6c299350719B18dFAEC38ba566fBd5Cd7202");
request.setTo("0x95E3Fd82eCd2b32Cae8618599971F5F47F4bC110");
request.setGas((long)25000);
request.setValue("0x1");
request.setSubmit(true);
TransactionResult result = caver.kas.wallet.requestLegacyTransaction(request);
System.out.println(result);
KLAY를 다른 Klaytn 계정으로 보내는 레거시 트랜잭션 전송 API의 응답은 아래와 같습니다.
curl
javascript
java
{
"from": "0x85b98485444c89880cd9c48807cef727c296f2da",
"gas": 1000000,
"gasPrice": "0x5d21dba00",
"input": "0x",
"nonce": 0,
"rlp": "0xf870808505d21dba00830f424094a311e7022a4db250689c89d99848f74ea5098f7d89121111111111111111808207f5a03e7173bf7a303b4e1bb6f8723b494bcaa196cf7b9d7af18a22ceda7f2e9c9226a057bf51a5f52d900d58470f5e28f25881eb6d3837502ba0bab13f022398ddbc26",
"signatures": [{}],
"status": "Submitted",
"to": "0xa311e7022a4db250689c89d99848f74ea5098f7d",
"transactionHash": "0x433d70e6bdbce725ac9472e9fe1242fa0e5bdcd1b60fa21b3dcadf858055b47b",
"typeInt": 0,
"value": "0x121111111111111111"
}
TransactionResult {
from: '0x602846ddc31f6fc092edcf945565fbe9c48bdd7e',
gas: 25000,
gasPrice: '0x5d21dba00',
nonce: 0,
rlp: '0xf866808505d21dba008261a89476c6b1f34562ed7a843786e1d7f57d0d7948a6f101808207f6a033f988dfbaa5492609f140aed291e304b76780b0dffe00b083eef9b8a2a03098a037e50158ac76693abd2d8a29b17a1ad4229d75bd9dfc1c5daf96d2aef598844d',
typeInt: 0,
input: '0x',
signatures: [
Signature {
R: '0x33f988dfbaa5492609f140aed291e304b76780b0dffe00b083eef9b8a2a03098',
S: '0x37e50158ac76693abd2d8a29b17a1ad4229d75bd9dfc1c5daf96d2aef598844d',
V: '0x7f6'
}
],
status: 'Submitted',
to: '0x76c6b1f34562ed7a843786e1d7f57d0d7948a6f1',
transactionHash: '0xa3c30517f7d00774ea52760a87bbb98d2f6754ce1a1e0041765dd9a8086a557c',
value: '0x1'
}
class TransactionResult {
from: 0x81ba6c299350719b18dfaec38ba566fbd5cd7202
gas: 25000
gasPrice: 0x5d21dba00
input: 0x
nonce: 949
rlp: 0xf8688203b58505d21dba008261a89495e3fd82ecd2b32cae8618599971f5f47f4bc11001808207f5a05434e573ae1dbf496806a8d5e8f090c15ee2de3b89e852577c835d04357b5ca3a0784296750de8130e75b7551f119f9650971932fb1efee1023e7858fbe7fe8ff0
signatures: [class Signature {
R: 0x5434e573ae1dbf496806a8d5e8f090c15ee2de3b89e852577c835d04357b5ca3
S: 0x784296750de8130e75b7551f119f9650971932fb1efee1023e7858fbe7fe8ff0
V: 0x7f5
}]
status: Submitted
to: 0x95e3fd82ecd2b32cae8618599971f5f47f4bc110
transactionHash: 0x7b78348d9c49d2a169e07efb8c39cde8bc06aa382017037ebe2de33debffd567
typeInt: 0
value: 0x1
code: null
message: null
transactionId: null
accountKey: null
}
트랜잭션 해시값을 입력하고 해당 트랜잭션 실행 결과를 조회합니다. 응답의
status
필드를 통해 트랜잭션 실행 성공 여부를 알 수 있습니다.API를 호출하려면 계정 저장소와 계정을 생성하고 사용할 계정을 선택해야 합니다.
KAS SDK(caver-js/caver-java extension) 설치, 실행에 관한 자세한 내용은 KAS SDK를 확인하십시오.
계정 저장소 생성, 계정 생성, 계정 선택에 관한 자세한 내용은 Getting Started를 확인하십시오.
트랜잭션 조회 API를 호출합니다. API 호출 시 REST API 또는 SDKs(caver-js, caver-java extensions)를 사용할 수 있습니다.
curl
javascript
java
curl --location --request GET "https://wallet-api.klaytnapi.com/v2/tx/0x62cbe2b959dd80b2dae88ccac3caba51c056989d2cb00bf7b4136c4945cc4644" \
-u {access-key-id}:{secret-access-key} \
--header "x-chain-id: {chain-id}" \
const transactionHash =
"0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6";
const result = await caver.kas.wallet.getTransaction(transactionHash);
String txHash = "0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6";
TransactionReceipt receipt = caver.kas.wallet.getTransaction(txHash);
System.out.println(receipt);
submit
: false이면 트랜잭션이 전송되지 않고, 서명된 트랜잭션 RLP와 트랜잭션 정보를 반환합니다.
트랜잭션 조회 API의 응답은 아래와 같습니다.
curl
javascript
java
{
"blockHash": "0x421648a9920d4f97e60dc1d93c62e2b0c2f3a8df5ddb79252ce693974ef7806c",
"blockNumber": "0xba",
"contractAddress": null,
"from": "0x325dbaf78b393dc2115138c86a58f897ed413aff",
"gas": "0xf4240",
"gasPrice": "0x5d21dba00",
"gasUsed": "0x5398",
"hash": "0x62cbe2b959dd80b2dae88ccac3caba51c056989d2cb00bf7b4136c4945cc4644",
"input": "0x6d656d6f",
"logs": [],
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"nonce": "0x1",
"senderTxHash": "0x62cbe2b959dd80b2dae88ccac3caba51c056989d2cb00bf7b4136c4945cc4644",
"signatures": [
{
"R": "0xf3d42d9f0d82f15a2acd18a5fbde0b1aff26936b89fec5151da59bdad4c4ddef",
"S": "0x69a8b9319769c5dacffad42232d4d053d11722832169d71bca3f28b211f5f23d",
"V": "0x7f6"
}
],
"status": "Committed",
"to": "0x2f87ba64de5526f7880f21481effbf950f70005c",
"transactionHash": "0x62cbe2b959dd80b2dae88ccac3caba51c056989d2cb00bf7b4136c4945cc4644",
"transactionIndex": "0x0",
"type": "TxTypeValueTransferMemo",
"typeInt": 16,
"value": "0x100"
}
TransactionReceipt {
contractAddress: null,
blockHash: '0xc344d42a58d4e78a1f845aac70beed0ee4c159efece62c8cbcd236690edc5439',
blockNumber: '0x158bfb8',
from: '0x7de4b173cd3ca86ff4ab4c669a7d8b36d82db3de',
gas: '0x61a8',
gasPrice: '0x5d21dba00',
gasUsed: '0x5208',
hash: '0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6',
input: '0x',
logs: [],
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
nonce: '0x0',
senderTxHash: '0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6',
signatures: [
Signature {
R: '0x564e4a608fe6f2b9e344f648de929e8f6e60d6bafcd9a614a9dd71abce80a8ce',
S: '0x4e787e2dbaec7dd0a60040af9350ce571fa452fb3756d2774ac89aade836ff4e',
V: '0x7f5'
}
],
status: 'Committed',
to: '0x76c6b1f34562ed7a843786e1d7f57d0d7948a6f1',
transactionHash: '0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6',
transactionIndex: '0x0',
type: 'TxTypeLegacyTransaction',
typeInt: 0,
value: '0x1'
}
class TransactionReceipt {
blockHash: 0xc344d42a58d4e78a1f845aac70beed0ee4c159efece62c8cbcd236690edc5439
blockNumber: 0x158bfb8
from: 0x7de4b173cd3ca86ff4ab4c669a7d8b36d82db3de
gas: 0x61a8
gasPrice: 0x5d21dba00
gasUsed: 0x5208
hash: 0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6
input: 0x
logs: []
logsBloom: 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
nonce: 0x0
senderTxHash: 0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6
signatures: [class Signature {
R: 0x564e4a608fe6f2b9e344f648de929e8f6e60d6bafcd9a614a9dd71abce80a8ce
S: 0x4e787e2dbaec7dd0a60040af9350ce571fa452fb3756d2774ac89aade836ff4e
V: 0x7f5
}]
status: Committed
to: 0x76c6b1f34562ed7a843786e1d7f57d0d7948a6f1
transactionHash: 0x00a2e38b03abe9aeb85d9baa82ca3b1d4d55a4c2b354dc67ab23b82420f470f6
transactionIndex: 0x0
type: TxTypeLegacyTransaction
typeInt: 0
value: 0x1
contractAddress: null
codeFormat: null
feePayer: null
feePayerSignatures: null
humanReadable: null
}
Last modified 5mo ago