K
K
Klaytn Docs
Search…
Basic

TxTypeLegacyTransaction

TxTypeLegacyTransaction represents a type of transactions existed previously in Klaytn. Since this transaction type exists to support compatibility, it only works with EOAs associated with AccountKeyLegacy. EOAs associated with other account key types should use other transaction types such as TxTypeValueTransfer, TxTypeSmartContractExecution, and so on. This type of transaction can create an account, transfer tokens, deploy a smart contract, execute a smart contract, or perform a mix of aforementioned. This transaction type will initiate the following changes.
  1. 1.
    The sender's balance decreases by the amount of the transaction fee.
  2. 2.
    The sender's nonce increases by one.
  3. 3.
    If to does not exist on Klaytn, an EOA associated with AccountKeyLegacy is created.
  4. 4.
    value KLAY is transferred from the sender to the recipient.
  5. 5.
    If to is nil, it is regarded as a smart contract deployment transaction. The smart contract code must be passed as input.
  6. 6.
    If to is a smart contract, the smart contract function specified in input is executed.

Attributes

Attribute
Type
Description
value
*big.Int (Go)
The amount of KLAY in peb to be transferred.
to
*common.Address (Go)
The account address that will receive the transferred value.
input
[]byte (Go)
Data attached to the transaction, used for transaction execution.
v, r, s
*big.Int (Go)
The cryptographic signature generated by the sender to let the receiver obtain the sender's address.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed.
gas
uint64 (Go)
The maximum amount of transaction fee the transaction is allowed to use.
gasPrice
*big.Int (Go)
A multiplier to get how much the sender will pay in tokens. The amount of tokens the sender will pay is calculated via gas * gasPrice. For example, the sender will pay 10 KLAY for a transaction fee if gas is 10 and gasPrice is 10^18. See Unit of KLAY.

RLP Encoding for Signature

To make a signature of this transaction type, RLP serialization should be done like the following:
1
SigRLP = encode([nonce, gasPrice, gas, to, value, input, chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
SenderTxHashRLP = encode([nonce, gasPrice, gas, to, value, input, v, r, s])
2
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction hash, RLP serialization should be done like the following:
1
TxHashRLP = encode([nonce, gasPrice, gas, to, value, input, v, r, s])
2
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization and the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xe68204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a8431323334018080
6
SigHash 0x40e73366650cddb7affcf5af39efa864b2c68c42b5329044fc86a12b26c4edc7
7
Signature f845f84325a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567
8
TxHashRLP 0xf8668204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a843132333425a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567
9
TxHash e434257753bf31a130c839fec0bd34fc6ea4aa256b825288ee82db31c2ed7524
10
SenderTxHashRLP 0xf8668204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a843132333425a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567
11
SenderTxHash e434257753bf31a130c839fec0bd34fc6ea4aa256b825288ee82db31c2ed7524
12
13
TX(e434257753bf31a130c839fec0bd34fc6ea4aa256b825288ee82db31c2ed7524)
14
Contract: false
15
From: a94f5374fce5edbc8e2a8697c15331677e6ebf0b
16
To: 7b65b75d204abed71587c9e519a89277766ee1d0
17
Nonce: 1234
18
GasPrice: 0x19
19
GasLimit 0xf4240
20
Value: 0xa
21
Data: 0x31323334
22
V: 0x25
23
R: 0xb2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9
24
S: 0x29da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567
25
Hex: f8668204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a843132333425a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567
Copied!

RPC Output (Example)

The following shows a transaction object returned via JSON RPC.
1
{
2
"blockHash": "0xeff95d8c57d668aa274a0eaeff942ecc2cfca4c71f71ae9fdaba92735cd79b9e",
3
"blockNumber": "0x1",
4
"contractAddress": null,
5
"from": "0x33c97827c33d8c5e07eb263ed6ec5c229e8b4752",
6
"gas": "0x174876e800",
7
"gasPrice": "0x5d21dba00",
8
"gasUsed": "0x5208",
9
"input": "0x",
10
"logs": [],
11
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
12
"nonce": "0x0",
13
"senderTxHash": "0xff0e9a45aa8741d528baf84069cd3b52c43a51bf7cf69d896672c3c909507888",
14
"signatures": [
15
{
16
"V": "0x25",
17
"R": "0xed8aa552324101a99792860d479cd488b7f67af0b9205968748bddcda52da6de",
18
"S": "0x524dbf481ea1d77c20f4d4354cc208c3149ddfa06f7ab53a03ad82d2d7fed3"
19
}
20
],
21
"status": "0x1",
22
"to": "0xd03227635c90c7986f0e3a4e551cefbca8c55316",
23
"transactionHash": "0xff0e9a45aa8741d528baf84069cd3b52c43a51bf7cf69d896672c3c909507888",
24
"transactionIndex": "0x0",
25
"type": "TxTypeLegacyTransaction",
26
"typeInt": 0,
27
"value": "0x174876e800"
28
}
Copied!

TxTypeValueTransfer

TxTypeValueTransfer is used when a user wants to send KLAY. As Klaytn provides multiple transaction types to make each transaction type serve a single purpose, TxTypeValueTransfer is limited to send KLAY to an externally owned account. Therefore, TxTypeValueTransfer is accepted only if to is an externally owned account. To transfer KLAY to a smart contract account, use TxTypeSmartContractExecution instead. The following changes will be made by this transaction type.
  1. 1.
    The sender's balance decreases by the amount of the transaction fee.
  2. 2.
    The sender's nonce increases by one.
  3. 3.
    value KLAY is transferred from the sender to the recipient.

Attributes

Attribute
Type
Description
type
uint8 (Go)
The type of TxTypeValueTransfer. This must be 0x08.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed.
gasPrice
*big.Int (Go)
A unit price of gas in peb the sender will pay for a transaction fee. The amount of transaction fee is calculated as gas * gasPrice. For example, if the transaction consumes 10 units of gas and gasPrice is 10^18, the transaction fee will be 10 KLAY. See Unit of KLAY.
gas
uint64 (Go)
The maximum amount of gas the transaction is allowed to use.
to
common.Address (Go)
The account address that will receive the transferred value.
value
*big.Int (Go)
The amount of KLAY in peb to be transferred.
from
common.Address (Go)
The address of the sender. For more details, see Signature Validation of Transactions.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
The sender's signatures. For more details, see Signature Validation of Transactions.

RLP Encoding for Signature

To make a transaction signature, RLP serialization should be done like the following:
1
SigRLP = encode([encode([type, nonce, gasPrice, gas, to, value, from]), chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
SenderTxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, txSignatures])
4
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction hash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
TxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, txSignatures])
4
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization with the given parameters and the information of the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xf839b5f4088204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b018080
6
SigHash 0xaa7665566c9508140bb91e36a948fc8f61c4518400a69562432d17e064f3ce43
7
Signature f845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc
8
TxHashRLP 0x08f87a8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc
9
TxHash 762f130342569e9669a4d8547f1248bd2554fbbf3062d63a97ce28bfa97aa9d7
10
SenderTxHashRLP 0x08f87a8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc
11
SenderTxHash 762f130342569e9669a4d8547f1248bd2554fbbf3062d63a97ce28bfa97aa9d7
12
13
TX(762f130342569e9669a4d8547f1248bd2554fbbf3062d63a97ce28bfa97aa9d7)
14
Type: TxTypeValueTransfer
15
From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B
16
To: 0x7b65B75d204aBed71587c9E519a89277766EE1d0
17
Nonce: 1234
18
GasPrice: 0x19
19
GasLimit: 0xf4240
20
Value: 0xa
21
Signature: [{"V":"0x25","R":"0xf3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29a","S":"0x6748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc"}]
22
Hex: 08f87a8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc
Copied!

RPC Output (Example)

The following shows a transaction object returned via JSON RPC.
1
{
2
"blockHash": "0xeff95d8c57d668aa274a0eaeff942ecc2cfca4c71f71ae9fdaba92735cd79b9e",
3
"blockNumber": "0x1",
4
"contractAddress": null,
5
"from": "0x33c97827c33d8c5e07eb263ed6ec5c229e8b4752",
6
"gas": "0x174876e800",
7
"gasPrice": "0x5d21dba00",
8
"gasUsed": "0x5208",
9
"logs": [],
10
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
11
"nonce": "0x1",
12
"senderTxHash": "0x8c18c9a609d2b22c921ce0b282e64924bf073e84f7c3850d99ec71da4054f79d",
13
"signatures": [
14
{
15
"V": "0x25",
16
"R": "0x94e059980bce9f3ba5f09e5021ad4f32d7d9cfda938c2d38c989cd4a406e7ba",
17
"S": "0x3ca52ee9d23954a278e6a30f3ec40951b26fb8b3f784c236c5bb1d5c9a8b2c82"
18
}
19
],
20
"status": "0x1",
21
"to": "0x75c3098be5e4b63fbac05838daaee378dd48098d",
22
"transactionHash": "0x8c18c9a609d2b22c921ce0b282e64924bf073e84f7c3850d99ec71da4054f79d",
23
"transactionIndex": "0x1",
24
"type": "TxTypeValueTransfer",
25
"typeInt": 8,
26
"value": "0x21e19e0c9bab2400000"
27
}
Copied!

TxTypeValueTransferMemo

TxTypeValueTransferMemo is used when a user wants to send KLAY with a specific message. TxTypeValueTransferMemo is accepted only if to is an externally owned account. To transfer KLAY to a smart contract account, use TxTypeSmartContractExecution instead. The following changes will be made by this transaction type.
  1. 1.
    The sender's balance decreases by the amount of the transaction fee.
  2. 2.
    The sender's nonce increases by one.
  3. 3.
    value KLAY is transferred from the sender to the recipient.

Attributes

Attribute
Type
Description
type
uint8 (Go)
The type of TxTypeValueTransferMemo. This must be 0x10.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed.
gasPrice
*big.Int (Go)
A unit price of gas in peb the sender will pay for a transaction fee. The amount of transaction fee is calculated as gas * gasPrice. For example, if the transaction consumes 10 units of gas and gasPrice is 10^18, the transaction fee will be 10 KLAY. See Unit of KLAY.
gas
uint64 (Go)
The maximum amount of gas the transaction is allowed to use.
to
common.Address (Go)
The account address that will receive the transferred value.
value
*big.Int (Go)
The amount of KLAY in peb to be transferred.
from
common.Address (Go)
The address of the sender. For more details, see Signature Validation of Transactions.
input
[]byte (Go)
Data attached to the transaction. The message should be passed to this attribute.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
The sender's signatures. For more details, see Signature Validation of Transactions.

RLP Encoding for Signature

To make a transaction signature, RLP serialization should be done like the following:
1
SigRLP = encode([encode([type, nonce, gasPrice, gas, to, value, from, input]), chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
SenderTxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, txSignatures])
4
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction hash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
TxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, txSignatures])
4
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization and the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xf841b83cf83a108204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6f018080
6
SigHash 0x23dd6ca2c023a152cad636ac8ed0a1a7962d3eb4cb7f3c50e34c0cc42e37d48a
7
Signature f845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3
8
TxHashRLP 0x10f8808204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6ff845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3
9
TxHash 6c7ee543c24e5b928b638a9f4502c1eca69103f5467ed4b6a2ed0ea5aede2e6b
10
SenderTxHashRLP 0x10f8808204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6ff845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3
11
SenderTxHash 6c7ee543c24e5b928b638a9f4502c1eca69103f5467ed4b6a2ed0ea5aede2e6b
12
13
TX(6c7ee543c24e5b928b638a9f4502c1eca69103f5467ed4b6a2ed0ea5aede2e6b)
14
Type: TxTypeValueTransferMemo
15
From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B
16
To: 0x7b65B75d204aBed71587c9E519a89277766EE1d0
17
Nonce: 1234
18
GasPrice: 0x19
19
GasLimit: 0xf4240
20
Value: 0xa
21
Signature: [{"V":"0x25","R":"0x7d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1c","S":"0x2b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3"}]
22
Data: 36383635366336633666
23
Hex: 10f8808204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6ff845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3
Copied!

RPC Output (Example)

The following shows a transaction object returned via JSON RPC.
1
{
2
"blockHash": "0x7ad6ed1f9955be00db8fb5452125f0e9a3c0856abb5b4cc4aed91ffc134321da",
3
"blockNumber": "0x1",
4
"contractAddress": null,
5
"from": "0x0fcda0f2efbe1b4e61b487701ce4f2f8abc3723d",
6
"gas": "0x174876e800",
7
"gasPrice": "0x5d21dba00",
8
"gasUsed": "0x53fc",
9
"input": "0x68656c6c6f",
10
"logs": [],
11
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
12
"nonce": "0x4",
13
"senderTxHash": "0x7311ef305064f2a6997c16cc8b5fc3fdf301549e7b7d0baa3a995a8e79479e5e",
14
"signatures": [
15
{
16
"V": "0x25",
17
"R": "0xd63673e1be7919e7ca42de64931c853fc568557b151e9b335df94b22de3a600f",
18
"S": "0x57bc916a50856b4d197f6856f16370f72f3bb0ac411b1da793fdb5bb7066966f"
19
}
20
],
21
"status": "0x1",
22
"to": "0x75c3098be5e4b63fbac05838daaee378dd48098d",
23
"transactionHash": "0x7311ef305064f2a6997c16cc8b5fc3fdf301549e7b7d0baa3a995a8e79479e5e",
24
"transactionIndex": "0x4",
25
"type": "TxTypeValueTransferMemo",
26
"typeInt": 16,
27
"value": "0x989680"
28
}
Copied!

TxTypeSmartContractDeploy

TxTypeSmartContractDeploy deploys a smart contract to the given address. The following changes will be made by this transaction type.
  1. 1.
    The sender's balance decreases by the amount of the transaction fee.
  2. 2.
    The sender's nonce increases by one.
  3. 3.
    A smart contract is deployed with the code in input. The deployed address will be returned via contractAddress in the receipt.
  4. 4.
    value KLAY is transferred from the sender to the recipient.

Attributes

Attribute
Type
Description
type
uint8 (Go)
The type of TxTypeSmartContractDeploy. This must be 0x28.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed.
gasPrice
*big.Int (Go)
A unit price of gas in peb the sender will pay for a transaction fee. The amount of transaction fee is calculated as gas * gasPrice. For example, if the transaction consumes 10 units of gas and gasPrice is 10^18, the transaction fee will be 10 KLAY. See Unit of KLAY.
gas
uint64 (Go)
The maximum amount of gas the transaction is allowed to use.
to
*common.Address (Go)
The account address that will receive the transferred value. Currently, this value must be nil. Specifying the address will be supported in the future.
value
*big.Int (Go)
The amount of KLAY in peb to be transferred.
from
common.Address (Go)
The address of the sender. For more details, see Signature Validation of Transactions.
input
[]byte (Go)
Data attached to the transaction, used for transaction execution.
humanReadable
bool (Go)
This must be false since human-readable address is not supported yet. If true, the transaction will be rejected.
codeFormat
uint8 (Go)
The code format of smart contract code. The supported value for now is EVM(0x00) only.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
The sender's signatures. For more details, see Signature Validation of Transactions.

RLP Encoding for Signature

To make a signature of this transaction type, RLP serialization should be done like the following:
1
SigRLP = encode([encode([type, nonce, gasPrice, gas, to, value, from, input, humanReadable, codeFormat]), chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
SenderTxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, humanReadable, codeFormat, txSignatures])
4
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction signature of the fee payer, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
TxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, humanReadable, codeFormat, txSignatures])
4
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization and the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xf90240b9023af90237288204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bb901fe608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f00290180018080
6
SigHash 0xa921fa892d5dec0837bd32c1fb77fc3b2df57ec0b0c4eea79192c79883ed543c
7
Signature f845f84325a0fcd107738fb47750ba727610aefd6d5f51ac8163d62ce500e7ab7e15defe7088a0383d68220d0266490ea4173c1d7847f22fcbe22f8c8125e1c0589189845c902a
8
TxHashRLP 0x28f9027d8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bb901fe608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f00290180f845f84325a0fcd107738fb47750ba727610aefd6d5f51ac8163d62ce500e7ab7e15defe7088a0383d68220d0266490ea4173c1d7847f22fcbe22f8c8125e1c0589189845c902a
9
TxHash e983f38b814891990f3ca57028c2230dc7e907eb313c827e7c99fadcc9b4c58b
10
SenderTxHashRLP 0x28f9027d8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bb901fe608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f00290180f845f84325a0fcd107738fb47750ba727610aefd6d5f51ac8163d62ce500e7ab7e15defe7088a0383d68220d0266490ea4173c1d7847f22fcbe22f8c8125e1c0589189845c902a
11
SenderTxHash e983f38b814891990f3ca57028c2230dc7e907eb313c827e7c99fadcc9b4c58b
12
13
TX(e983f38b814891990f3ca57028c2230dc7e907eb313c827e7c99fadcc9b4c58b)
14
Type: TxTypeSmartContractDeploy
15
From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B
16
To: 0x7b65B75d204aBed71587c9E519a89277766EE1d0
17
Nonce: 1234
18
GasPrice: 0x19
19
GasLimit: 0xf4240
20
Value: 0xa
21
Signature: [{"V":"0x25","R":"0xfcd107738fb47750ba727610aefd6d5f51ac8163d62ce500e7ab7e15defe7088","S":"0x383d68220d0266490ea4173c1d7847f22fcbe22f8c8125e1c0589189845c902a"}]
22
Data: 363038303630343035323334383031353631303031303537363030303830666435623530363130316465383036313030323036303030333936303030663330303630383036303430353236303034333631303631303036313537363366666666666666663763303130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303630303033353034313636333161333964386566383131343631303038303537383036333633353335383662313436313030613735373830363337306130383233313134363130306361353738303633666436623765663831343631303066383537356233333630303039303831353236303031363032303532363034303831323038303534333439303831303139303931353538313534303139303535303035623334383031353631303038633537363030303830666435623530363130303935363130313064353635623630343038303531393138323532353139303831393030333630323030313930663335623631303063383733666666666666666666666666666666666666666666666666666666666666666666666666666666663630303433353136363130313133353635623030356233343830313536313030643635373630303038306664356235303631303039353733666666666666666666666666666666666666666666666666666666666666666666666666666666663630303433353136363130313437353635623334383031353631303130343537363030303830666435623530363130306338363130313539353635623630303035343831353635623733666666666666666666666666666666666666666666666666666666666666666666666666666666663136363030303930383135323630303136303230353236303430383132303830353433343930383130313930393135353831353430313930353535363562363030313630323035323630303039303831353236303430393032303534383135363562333336303030393038313532363030313630323035323630343038313230383035343930383239303535393038313131313536313031616635373630343035313333393038323135363130386663303239303833393036303030383138313831383538383838663139333530353035303530313536313031396335373631303161663536356233333630303039303831353236303031363032303532363034303930323038313930353535623530353630306131363536323761376137323330353832303632376361343662623039343738613031353736323830366363303063343331323330353031313138633763323663333061633538633465303965353163346630303239
23
HumanReadable: true
24
CodeFormat: CodeFormatEVM
25
Hex: 28f9027d8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bb901fe608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f00290180f845f84325a0fcd107738fb47750ba727610aefd6d5f51ac8163d62ce500e7ab7e15defe7088a0383d68220d0266490ea4173c1d7847f22fcbe22f8c8125e1c0589189845c902a
Copied!

RPC Output (Example)

The following shows a transaction object returned via JSON RPC.
1
{
2
"blockHash": "0x82983fe294d286e76486760e6904369285554e1744af16786c2393a956fb4ec4",
3
"blockNumber": "0x2",
4
"codeFormat": "0x0",
5
"contractAddress": "0x636f6e74726163742e6b6c6179746e0000000000",
6
"from": "0x0fcda0f2efbe1b4e61b487701ce4f2f8abc3723d",
7
"gas": "0x174876e800",
8
"gasPrice": "0x0",
9
"gasUsed": "0xee6e343d",
10
"humanReadable": true,
11
"input": "0x608060405234801561001057600080fd5b506101de806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631a39d8ef81146100805780636353586b146100a757806370a08231146100ca578063fd6b7ef8146100f8575b3360009081526001602052604081208054349081019091558154019055005b34801561008c57600080fd5b5061009561010d565b60408051918252519081900360200190f35b6100c873ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100d657600080fd5b5061009573ffffffffffffffffffffffffffffffffffffffff60043516610147565b34801561010457600080fd5b506100c8610159565b60005481565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604081208054349081019091558154019055565b60016020526000908152604090205481565b336000908152600160205260408120805490829055908111156101af57604051339082156108fc029083906000818181858888f193505050501561019c576101af565b3360009081526001602052604090208190555b505600a165627a7a72305820627ca46bb09478a015762806cc00c431230501118c7c26c30ac58c4e09e51c4f0029",
12
"logs": [],
13
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
14
"nonce": "0xa",
15
"senderTxHash": "0x78a5633ee5b453ed2f00937e65945a3b76e96623634e1555e2f15d44930168af",
16
"signatures": [
17
{
18
"V": "0x25",
19
"R": "0x369d892dc24786111fd8f0308e8a6518708727257e95b3281865508faa0a768b",
20
"S": "0x12fc22c390a89484d1cb70e1f19c4fa8a203b1406044ee9c263264876f0dd724"
21
}
22
],
23
"status": "0x1",
24
"to": "0x636f6e74726163742e6b6c6179746e0000000000",
25
"transactionHash": "0x78a5633ee5b453ed2f00937e65945a3b76e96623634e1555e2f15d44930168af",
26
"transactionIndex": "0x3",
27
"type": "TxTypeSmartContractDeploy",
28
"typeInt": 40,
29
"value": "0x0"
30
}
Copied!

TxTypeSmartContractExecution

TxTypeSmartContractExecution executes a smart contract with the given data in input. TxTypeSmartContractExecution is accepted only if to is a smart contract account. To transfer KLAY to an externally owned account, use TxTypeValueTransfer instead. The following changes will be made by this transaction type.
  1. 1.
    If to is a smart contract account, the code is executed based on input. Otherwise, this transaction will be rejected.
  2. 2.
    The sender's balance decreases by the amount of the transaction fee.
  3. 3.
    The sender's nonce increases by one.
  4. 4.
    If value was provided, value KLAY is transferred from the sender to the to smart contract. The contract should have a payable fallback function to receive KLAY.

Attributes

Attribute
Type
Description
type
uint8 (Go)
The type of TxTypeSmartContractExecution. This must be 0x30.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed.
gasPrice
*big.Int (Go)
A unit price of gas in peb the sender will pay for a transaction fee. The amount of transaction fee is calculated as gas * gasPrice. For example, if the transaction consumes 10 units of gas and gasPrice is 10^18, the transaction fee will be 10 KLAY. See Unit of KLAY.
gas
uint64 (Go)
The maximum amount of gas the transaction is allowed to use.
to
common.Address (Go)
The address of the smart contract account to be executed.
value
*big.Int (Go)
The amount of KLAY in peb to be transferred.
from
common.Address (Go)
The address of the sender. For more details, see Signature Validation of Transactions.
input
[]byte (Go)
Data attached to the transaction, used for transaction execution.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
The sender's signatures. For more details, see Signature Validation of Transactions.

RLP Encoding for Signature

To make a signature of this transaction type, RLP serialization should be done like the following:
1
SigRLP = encode([encode([type, nonce, gasPrice, gas, to, value, from, input]), chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
SenderTxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, txSignatures])
4
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction hash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
TxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, txSignatures])
4
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization and the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xf860b85bf859308204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0ba46353586b000000000000000000000000bc5951f055a85f41a3b62fd6f68ab7de76d299b2018080
6
SigHash 0x197ea7d262f74489934d6cbcf8baa3bec169c16ad672fef4a9f8148864c9cdce
7
Signature f845f84326a0e4276df1a779274fbb04bc18a0184809eec1ce9770527cebb3d64f926dc1810ba04103b828a0671a48d64fe1a3879eae229699f05a684d9c5fd939015dcdd9709b
8
TxHashRLP 0x30f89f8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0ba46353586b000000000000000000000000bc5951f055a85f41a3b62fd6f68ab7de76d299b2f845f84326a0e4276df1a779274fbb04bc18a0184809eec1ce9770527cebb3d64f926dc1810ba04103b828a0671a48d64fe1a3879eae229699f05a684d9c5fd939015dcdd9709b
9
TxHash 23bb192bd58d56527843eb63225c5213f3aded95e4c9776f1ff0bdd8ee0b6826
10
SenderTxHashRLP 0x30f89f8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0ba46353586b000000000000000000000000bc5951f055a85f41a3b62fd6f68ab7de76d299b2f845f84326a0e4276df1a779274fbb04bc18a0184809eec1ce9770527cebb3d64f926dc1810ba04103b828a0671a48d64fe1a3879eae229699f05a684d9c5fd939015dcdd9709b
11
SenderTxHash 23bb192bd58d56527843eb63225c5213f3aded95e4c9776f1ff0bdd8ee0b6826
12
13
TX(23bb192bd58d56527843eb63225c5213f3aded95e4c9776f1ff0bdd8ee0b6826)
14
Type: TxTypeSmartContractExecution
15
From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B
16
To: 0x7b65B75d204aBed71587c9E519a89277766EE1d0
17
Nonce: 1234
18
GasPrice: 0x19
19
GasLimit: 0xf4240
20
Value: 0xa
21
Signature: [{"V":"0x26","R":"0xe4276df1a779274fbb04bc18a0184809eec1ce9770527cebb3d64f926dc1810b","S":"0x4103b828a0671a48d64fe1a3879eae229699f05a684d9c5fd939015dcdd9709b"}]
22
Data: 363335333538366230303030303030303030303030303030303030303030303062633539353166303535613835663431613362363266643666363861623764653736643239396232
23
Hex: 30f89f8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0ba46353586b000000000000000000000000bc5951f055a85f41a3b62fd6f68ab7de76d299b2f845f84326a0e4276df1a779274fbb04bc18a0184809eec1ce9770527cebb3d64f926dc1810ba04103b828a0671a48d64fe1a3879eae229699f05a684d9c5fd939015dcdd9709b
Copied!

RPC Output (Example)

The following shows a transaction object returned via JSON RPC.
1
{
2
"blockHash": "0x82983fe294d286e76486760e6904369285554e1744af16786c2393a956fb4ec4",
3
"blockNumber": "0x2",
4
"contractAddress": null,
5
"from": "0x0fcda0f2efbe1b4e61b487701ce4f2f8abc3723d",
6
"gas": "0x174876e800",
7
"gasPrice": "0x5d21dba00",
8
"gasUsed": "0xfedc",
9
"input": "0x6353586b0000000000000000000000000fcda0f2efbe1b4e61b487701ce4f2f8abc3723d",
10
"logs": [],
11
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
12
"nonce": "0xd",
13
"senderTxHash": "0xe216873dedd72d8d67a9f5e51eb5a7ed2b5f34bca334adff7a3601d6d3e2e132",
14
"signatures": [
15
{
16
"V": "0x26",
17
"R": "0x68fe3dfd1ff3ea14427f157b5837cb6eb0b00fd0497e1c80897de1935200f0",
18
"S": "0x6b84fbedcb4ff785120890596fad3f797c178cda8908f3b02ee0a4442fbf4189"
19
}
20
],
21
"status": "0x1",
22
"to": "0x636f6e74726163742e6b6c6179746e0000000000",
23
"transactionHash": "0xe216873dedd72d8d67a9f5e51eb5a7ed2b5f34bca334adff7a3601d6d3e2e132",
24
"transactionIndex": "0x6",
25
"type": "TxTypeSmartContractExecution",
26
"typeInt": 48,
27
"value": "0xa"
28
}
Copied!

TxTypeAccountUpdate

TxTypeAccountUpdate updates the key of the given account. The following changes will apply by this transaction type.
  1. 1.
    The sender's balance decreases by the amount of the transaction fee.
  2. 2.
    The sender's nonce increases by one.
  3. 3.
    The account's key is updated with key.
  4. 4.
    Once this type of transaction is executed, transactions sent from the account afterward will be validated with the new key.

Attributes

Attribute
Type
Description
type
uint8 (Go)
The type of TxTypeAccountUpdate. This must be 0x20.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed.
gasPrice
*big.Int (Go)
A multiplier to get how much the sender will pay in tokens. The amount of tokens the sender will pay is calculated via gas * gasPrice. For example, the sender will pay 10 KLAY for a transaction fee if gas is 10 and gasPrice is 10^18. See Unit of KLAY.
gas
uint64 (Go)
The maximum amount of transaction fee the transaction is allowed to use.
from
common.Address (Go)
The address of the sender. For more details, see Signature Validation of Transactions.
key
AccountKey (Go)
AccountKey to be updated to the account.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
The sender's signatures. For more details, see Signature Validation of Transactions.

RLP Encoding for Signature

To make a signature of this transaction type, RLP serialization should be done like the following:
1
SigRLP = encode([encode([type, nonce, gasPrice, gas, from, rlpEncodedKey]), chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
SenderTxHashRLP = type + encode([nonce, gasPrice, gas, from, rlpEncodedKey, txSignatures])
4
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction hash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
TxHashRLP = type + encode([nonce, gasPrice, gas, from, rlpEncodedKey, txSignatures])
4
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization and the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xf849b844f842208204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0ba302a1033a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d018080
6
SigHash 0xa0d3f1d2b4f061c3a5d9c22c7bb621aa821162b42b4db6cf1888defc2473e0ab
7
Signature f845f84325a0f7d479628f05f51320f0842193e3f7ae55a5b49d3645bf55c35bee1e8fd2593aa04de8eab5338fdc86e96f8c49ed516550f793fc2c4007614ce3d2a6b33cf9e451
8
TxHashRLP 0x20f8888204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0ba302a1033a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33df845f84325a0f7d479628f05f51320f0842193e3f7ae55a5b49d3645bf55c35bee1e8fd2593aa04de8eab5338fdc86e96f8c49ed516550f793fc2c4007614ce3d2a6b33cf9e451
9
TxHash 8c70627d6b637c7d033ead083fc5e43e5cad10c704a86dd9bda7ac104a0e5ad0
10
SenderTxHashRLP 0x20f8888204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0ba302a1033a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33df845f84325a0f7d479628f05f51320f0842193e3f7ae55a5b49d3645bf55c35bee1e8fd2593aa04de8eab5338fdc86e96f8c49ed516550f793fc2c4007614ce3d2a6b33cf9e451
11
SenderTxHash 8c70627d6b637c7d033ead083fc5e43e5cad10c704a86dd9bda7ac104a0e5ad0
12
13
TX(8c70627d6b637c7d033ead083fc5e43e5cad10c704a86dd9bda7ac104a0e5ad0)
14
Type: TxTypeAccountUpdate
15
From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B
16
Nonce: 1234
17
GasPrice: 0x19
18
GasLimit: 0xf4240
19
Key: AccountKeyPublic: S256Pubkey:{"x":"0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d","y":"0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3"}
20
Signature: [{"V":"0x25","R":"0xf7d479628f05f51320f0842193e3f7ae55a5b49d3645bf55c35bee1e8fd2593a","S":"0x4de8eab5338fdc86e96f8c49ed516550f793fc2c4007614ce3d2a6b33cf9e451"}]
21
Hex: 20f8888204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0ba302a1033a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33df845f84325a0f7d479628f05f51320f0842193e3f7ae55a5b49d3645bf55c35bee1e8fd2593aa04de8eab5338fdc86e96f8c49ed516550f793fc2c4007614ce3d2a6b33cf9e451
Copied!

RPC Output (Example)

The following shows a transaction object returned via JSON RPC.
1
{
2
"blockHash": "0x82983fe294d286e76486760e6904369285554e1744af16786c2393a956fb4ec4",
3
"blockNumber": "0x2",
4
"contractAddress": null,
5
"from": "0x636f6c696e2e6b6c6179746e0000000000000000",
6
"gas": "0x174876e800",
7
"gasPrice": "0x5d21dba00",
8
"gasUsed": "0xa028",
9
"key": "0x02a1034ef27ba4b7d1ae09b166744c5b7ee4a7a0cc5c76b2e5d74523a0a4fb56db3191",
10
"logs": [],
11
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
12
"nonce": "0x0",
13
"senderTxHash": "0x3f154903f92a179007b45b807af2d971ada9a23657e80bf5c18a75ac6516fd0b",
14
"signatures": [
15
{
16
"V": "0x25",
17
"R": "0x757827ec43eafdc150ecb35423699ceaea41b13dd07f8620e2231a7b0e278149",
18
"S": "0x59d43ed3e0ed0f9d69d0c08ccca29913a8b138c000029f878f61337220a1ca1b"
19
}
20
],
21
"status": "0x1",
22
"transactionHash": "0x3f154903f92a179007b45b807af2d971ada9a23657e80bf5c18a75ac6516fd0b",
23
"transactionIndex": "0x0",
24
"type": "TxTypeAccountUpdate",
25
"typeInt": 32
26
}
Copied!

TxTypeCancel

TxTypeCancel cancels the execution of the transaction with the same nonce in the transaction pool. This transaction type is useful when a submitted transaction seems unprocessed for a certain amount of time. There are several cases that a transaction seems unprocessed: 1. The transaction was lost somewhere and did not reach any of the consensus nodes. 2. The transaction has not been processed yet in any of the consensus nodes. 3. The transaction was processed, but the block containing the transaction has not been received.
From the client side, it is very hard to figure out the exact reason because to figure out the reason, it is required to look inside all the consensus nodes. However, connecting to any of the consensus nodes from the public is prohibited. Under this situation, in typical blockchain platforms, the user often submits another transaction with a higher gas price to replace the old transaction. However, because the gas price is fixed in Klaytn, replacing the old transaction with a higher gas price is not applicable.
If the transaction remains unprocessed, the other transactions with higher nonce cannot be processed because the nonce determines the execution order of transactions.
To solve this problem, Klaytn provides a transaction type TxTypeCancel. If a user encountered such a situation, a transaction of TxTypeCancel can be submitted.
Each of the above situations is handled as follows: 1. If the old transaction was lost, this TxTypeCancel transaction is executed and included in a block. 2. If the old transaction has not been processed yet, this TxTypeCancel replaces the old transaction. Then, it is executed and included in a block. 3. if the old transaction was already executed, the nonce has been increased, therefore this TxTypeCancel transaction is discarded due to the lower nonce.
Note that the TxTypeCancel transaction is the only transaction that is capable of replacing a transaction with the same nonce. Other transaction types cannot replace the transactions with the same nonce.
The following changes can occur by this transaction type. 1. The sender's balance decreases by the amount of the transaction fee. 2. The sender's nonce increases by one.

Attributes

Attribute
Type
Description
type
uint8 (Go)
The type of TxTypeCancel. This must be 0x38.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed. For the TxTypeCancel transaction, this value must match the nonce that the target transaction to be canceled was using.
gasPrice
*big.Int (Go)
A unit price of gas in peb the sender will pay for a transaction fee. The amount of transaction fee is calculated as gas * gasPrice. For example, if the transaction consumes 10 units of gas and gasPrice is 10^18, the transaction fee will be 10 KLAY. See Unit of KLAY.
gas
uint64 (Go)
The maximum amount of transaction fee the transaction is allowed to use.
from
common.Address (Go)
The address of the sender. For more details, see Signature Validation of Transactions.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
The sender's signatures. For more details, see Signature Validation of Transactions.
Outcome:
  1. 1.
    If there is a transaction with the same nonce, it is replaced with this cancel transaction.
  2. 2.
    If no same nonce, this transaction is just inserted as a normal transaction.
  3. 3.
    The cancel transaction is not replaced with other transaction types.

RLP Encoding for Signature

To make a transaction signature, RLP serialization should be done like the following:
1
SigRLP = encode([encode([type, nonce, gasPrice, gas, from]), chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
SenderTxHashRLP = type + encode([nonce, gasPrice, gas, from, txSignatures])
4
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction hash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
TxHashRLP = type + encode([nonce, gasPrice, gas, from, txSignatures])
4
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization and the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xe39fde388204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0b018080
6
SigHash 0xaaac6d71ad921e8a12e92c47d0b0654a20d8d9a4ff70d83f78661ccdf062ce9a
7
Signature f845f84325a0fb2c3d53d2f6b7bb1deb5a09f80366a5a45429cc1e3956687b075a9dcad20434a05c6187822ee23b1001e9613d29a5d6002f990498d2902904f7f259ab3358216e
8
TxHashRLP 0x38f8648204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0fb2c3d53d2f6b7bb1deb5a09f80366a5a45429cc1e3956687b075a9dcad20434a05c6187822ee23b1001e9613d29a5d6002f990498d2902904f7f259ab3358216e
9
TxHash 10d135d590cb587cc45c1f94f4a0e3b8c24d24a6e4243f09ca395fb4e2450413
10
SenderTxHashRLP 0x38f8648204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0fb2c3d53d2f6b7bb1deb5a09f80366a5a45429cc1e3956687b075a9dcad20434a05c6187822ee23b1001e9613d29a5d6002f990498d2902904f7f259ab3358216e
11
SenderTxHash 10d135d590cb587cc45c1f94f4a0e3b8c24d24a6e4243f09ca395fb4e2450413
12
13
TX(10d135d590cb587cc45c1f94f4a0e3b8c24d24a6e4243f09ca395fb4e2450413)
14
Type: TxTypeCancel
15
From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B
16
Nonce: 1234
17
GasPrice: 0x19
18
GasLimit: 0xf4240
19
Signature: [{"V":"0x25","R":"0xfb2c3d53d2f6b7bb1deb5a09f80366a5a45429cc1e3956687b075a9dcad20434","S":"0x5c6187822ee23b1001e9613d29a5d6002f990498d2902904f7f259ab3358216e"}]
20
Hex: 38f8648204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0fb2c3d53d2f6b7bb1deb5a09f80366a5a45429cc1e3956687b075a9dcad20434a05c6187822ee23b1001e9613d29a5d6002f990498d2902904f7f259ab3358216e
Copied!

RPC Output (Example)

The following shows a transaction object returned via JSON RPC.
1
{
2
"blockHash": "0x82983fe294d286e76486760e6904369285554e1744af16786c2393a956fb4ec4",
3
"blockNumber": "0x2",
4
"contractAddress": null,
5
"from": "0x0fcda0f2efbe1b4e61b487701ce4f2f8abc3723d",
6
"gas": "0x174876e800",
7
"gasPrice": "0x5d21dba00",
8
"gasUsed": "0x5208",
9
"logs": [],
10
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
11
"nonce": "0x10",
12
"senderTxHash": "0x0370adf89b2463d3d1fd894d6328929c931ef0cc3a8f1481affedd2e9c88d9d6",
13
"signatures": [
14
{
15
"V": "0x26",
16
"R": "0xad73f30acfb80090cba8d3f4be4696e65f8eb7c36b85aac06a9bea350d10578f",
17
"S": "0x7ec2d6f052d8f916d12db2e0310381201888cb12d3a3696da80cab5195833706"
18
}
19
],
20
"status": "0x1",
21
"transactionHash": "0x0370adf89b2463d3d1fd894d6328929c931ef0cc3a8f1481affedd2e9c88d9d6",
22
"transactionIndex": "0x9",
23
"type": "TxTypeCancel",
24
"typeInt": 56
25
}
Copied!

TxTypeChainDataAnchoring

TxTypeChainDataAnchoringTransaction is a transaction that anchors service chain data to the Klaytn mainchain. Service chains periodically send this type of transaction to the Klaytn mainchain to ensure its security and credibility of data. For more details about the data anchoring, see Anchoring. Be mindful that it is not allowed to send this transaction via RPC. Currently, this transaction is executed through private p2p channels for security reasons. This transaction does not change the state of the Klaytn blockchain except the sender's nonce being increased by one.

Attributes

Attribute
Type
Description
type
uint8 (Go)
The type of TxTypeChainDataAnchoringTransaction. This must be 0x48.
nonce
uint64 (Go)
A value used to uniquely identify a sender’s transaction. If two transactions with the same nonce are generated by a sender, only one is executed.
gasPrice
*big.Int (Go)
A unit price of gas in peb the sender will pay for a transaction fee. The amount of transaction fee is calculated as gas * gasPrice. For example, if the transaction consumes 10 units of gas and gasPrice is 10^18, the transaction fee will be 10 KLAY. See Unit of KLAY.
gas
uint64 (Go)
The maximum amount of transaction fee the transaction is allowed to use.
from
common.Address (Go)
The address of the sender. For more details, see Signature Validation of Transactions.
input
[]byte (Go)
Data of the service chain.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
The sender's signatures. For more details, see Signature Validation of Transactions.

RLP Encoding for Signature

To make a signature of this transaction type, RLP serialization should be done like the following:
1
SigRLP = encode([encode([type, nonce, gasPrice, gas, from, anchoredData]), chainid, 0, 0])
2
SigHash = keccak256(SigRLP)
3
Signature = sign(SigHash, <private key>)
Copied!

RLP Encoding for SenderTxHash

To make a SenderTxHash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
SenderTxHashRLP = type + encode([nonce, gasPrice, gas, from, anchoredData, txSignatures])
4
SenderTxHash = keccak256(SenderTxHashRLP)
Copied!

RLP Encoding for Transaction Hash

To make a transaction hash, RLP serialization should be done like the following:
1
txSignatures (a single signature) = [[v, r, s]]
2
txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]
3
TxHashRLP = type + encode([nonce, gasPrice, gas, from, anchoredData, txSignatures])
4
TxHash = keccak256(TxHashRLP)
Copied!

RLP Encoding (Example)

The following shows the result of RLP serialization and the transaction object:
1
ChainID 0x1
2
PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8
3
PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d
4
PublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3
5
SigRLP 0xf8cfb8caf8c8488204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0bb8a8f8a6a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000405018080
6
SigHash 0x07e07c69a12e384c16d94157c99d0a6fbae1d99f5d54501bfdc5937bbee7c792
7
Signature f845f84325a0e58b9abf9f33a066b998fccaca711553fb4df425c9234bbb3577f9d9775bb124a02c409a6c5d92277c0a812dd0cc553d7fe1d652a807274c3786df3292cd473e09
8
TxHashRLP 0x48f9010e8204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0bb8a8f8a6a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000405f845f84325a0e58b9abf9f33a066b998fccaca711553fb4df425c9234bbb3577f9d9775bb124a02c409a6c5d92277c0a812dd0cc553d7fe1d652a807274c3786df3292cd473e09
9
TxHash 4aad85735e777795d24aa3eab51be959d8ebdf9683083d85b66f70b7170f2ea3
10
SenderTxHashRLP 0x48f9010e8204d219830f424094a94f5374fce5edbc8e2a8697c15331677e6ebf0bb8a8f8a6a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000000405f845f84325a0e58b9abf9f33a066b998fccaca711553fb4df425c9234bbb3577f9d9775bb124a02c409a6c5d92277c0a812dd0cc553d7fe1d652a807274c3786df3292cd473e09
11
SenderTxHash 4aad85735e777795d24aa3eab51be959d8ebdf9683083d85b66f70b7170f2ea3
12
13
TX(4aad85735e777795d24aa3eab51be959d8ebdf9683083d85b66f70b7170f2ea3)
14
Type: TxTypeChainDataAnchoring
15
From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B
16
Nonce: 1234
17
GasPrice: 0x19
18
GasLimit: 0xf4240