基礎
TxTypeLegacyTransaction
TxTypeLegacyTransaction 代表 Kaia 以前存在的一種事務類型。 Since this transaction type exists to support compatibility, it only works with EOAs associated with AccountKeyLegacy. 與其他賬戶密鑰類型相關的 EOA 應使用其他交易類型,如 TxTypeValueTransfer、TxTypeSmartContractExecution 等。 這種類型的交易可以創建賬戶、轉移代幣、部署智能合約、執行智能合約,或執行上述交易的組合。 該交易類型將啟動以下更改。
- 匯款人的餘額會減少交易費的金額。
- 發送方的 nonce 增加一個。
- If
to
does not exist on Kaia, an EOA associated with AccountKeyLegacy is created. value
KAIA 由發送方傳送給接收方。- 如果
to
為空,則視為智能合約部署交易。 智能合約代碼必須作為 "輸入 "傳遞。 - 如果
to
是智能合約,則執行input
中指定的智能合約函數。
屬性
屬性 | 類型 | 說明 |
---|---|---|
value | *big.Int ( Go) | 以 kei 為單位的 KAIA 轉賬金額。 |
to | *common.Address(Go\) | 接收轉賬金額的賬戶地址。 |
input | []byte (Go) | 附屬於事務的數據,用於執行事務。 |
v, r, s | *big.Int ( Go) | 發送方為讓接收方獲取發送方地址而生成的加密簽名。 |
nonce | uint64 (Go) | 用於唯一標識發件人交易的值。 如果一個發送方生成了兩個具有相同 nonce 的交易,則只執行其中一個。 |
gas | uint64 (Go) | 交易允許使用的最高交易費金額。 |
gasPrice | *big.Int ( Go) | 一個乘數,用於計算發件人將支付多少代幣。 發送方將支付的代幣數量通過 gas * gasPrice 計算得出。 例如,如果 gas 為 10,gasPrice 為 10^18,發件人將支付 10 KAIA 的交易費。 See Unit of KAIA. |
簽名的 RLP 編碼
要製作這種事務類型的簽名,RLP 序列化工作應如下進行:
SigRLP = encode([nonce, gasPrice, gas, to, value, input, chainid, 0, 0])SigHash = keccak256(SigRLP)Signature = sign(SigHash, <private key>)
SenderTxHash 的 RLP 編碼
要製作 SenderTxHash,RLP 序列化過程如下:
SenderTxHashRLP = encode([nonce, gasPrice, gas, to, value, input, v, r, s])SenderTxHash = keccak256(SenderTxHashRLP)
交易哈希的 RLP 編碼
要製作事務哈希值,RLP 序列化的步驟如下:
TxHashRLP = encode([nonce, gasPrice, gas, to, value, input, v, r, s])TxHash = keccak256(TxHashRLP)
RLP 編碼 (示例)
下面顯示的是 RLP 序列化的結果和事務對象:
ChainID 0x1PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33dPublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3SigRLP 0xe68204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a8431323334018080SigHash 0x40e73366650cddb7affcf5af39efa864b2c68c42b5329044fc86a12b26c4edc7Signature f845f84325a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567TxHashRLP 0xf8668204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a843132333425a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567TxHash e434257753bf31a130c839fec0bd34fc6ea4aa256b825288ee82db31c2ed7524SenderTxHashRLP 0xf8668204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a843132333425a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567SenderTxHash e434257753bf31a130c839fec0bd34fc6ea4aa256b825288ee82db31c2ed7524 TX(e434257753bf31a130c839fec0bd34fc6ea4aa256b825288ee82db31c2ed7524) Contract: false From: a94f5374fce5edbc8e2a8697c15331677e6ebf0b To: 7b65b75d204abed71587c9e519a89277766ee1d0 Nonce: 1234 GasPrice: 0x19 GasLimit 0xf4240 Value: 0xa Data: 0x31323334 V: 0x25 R: 0xb2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9 S: 0x29da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567 Hex: f8668204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a843132333425a0b2a5a15550ec298dc7dddde3774429ed75f864c82caeb5ee24399649ad731be9a029da1014d16f2011b3307f7bbe1035b6e699a4204fc416c763def6cefd976567
RPC 輸出 (示例)
下面顯示的是通過 JSON RPC 返回的事務對象。
{ "blockHash": "0xeff95d8c57d668aa274a0eaeff942ecc2cfca4c71f71ae9fdaba92735cd79b9e", "blockNumber": "0x1", "contractAddress": null, "from": "0x33c97827c33d8c5e07eb263ed6ec5c229e8b4752", "gas": "0x174876e800", "gasPrice": "0x5d21dba00", "gasUsed": "0x5208", "input": "0x", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0", "senderTxHash": "0xff0e9a45aa8741d528baf84069cd3b52c43a51bf7cf69d896672c3c909507888", "signatures": [ { "V": "0x25", "R": "0xed8aa552324101a99792860d479cd488b7f67af0b9205968748bddcda52da6de", "S": "0x524dbf481ea1d77c20f4d4354cc208c3149ddfa06f7ab53a03ad82d2d7fed3" } ], "status": "0x1", "to": "0xd03227635c90c7986f0e3a4e551cefbca8c55316", "transactionHash": "0xff0e9a45aa8741d528baf84069cd3b52c43a51bf7cf69d896672c3c909507888", "transactionIndex": "0x0", "type": "TxTypeLegacyTransaction", "typeInt": 0, "value": "0x174876e800"}
TxTypeValueTransfer
TxTypeValueTransfer 用於用戶發送 KAIA。 由於 Kaia 提供了多種交易類型,使每種交易類型只服務於一個目的,因此 TxTypeValueTransfer 只限於將 KAIA 發送到外部擁有的賬戶。 因此,只有當 to
是外部擁有的賬戶時,才接受 TxTypeValueTransfer。 要將 KAIA 轉移到智能合約賬戶,請使用 TxTypeSmartContractExecution。 該交易類型將進行以下更改。
- 匯款人的餘額會減少交易費的金額。
- 發送方的 nonce 增加一個。
value
KAIA 由發送方傳送給接收方。
屬性
屬性 | 類型 | 說明 |
---|---|---|
type | uint8(Go) | TxTypeValueTransfer 的類型。 必須為 0x08。 |
nonce | uint64 (Go) | 用於唯一標識發件人交易的值。 如果一個發送方生成了兩個具有相同 nonce 的交易,則只執行其中一個。 |
gasPrice | *big.Int ( Go) | 以 kei 為單位的氣體單價,發件人將支付交易費。 交易費的計算公式為 gas * gasPrice 。 例如,如果交易消耗了 10 單位天然氣,而 gasPrice 為 10^18,則交易費為 10 KAIA。 See Unit of KAIA. |
gas | uint64 (Go) | 交易允許使用的最大燃氣量。 |
to | common.Address(Go) | 接收轉賬金額的賬戶地址。 |
value | *big.Int ( Go) | 以 kei 為單位的 KAIA 轉賬金額。 |
from | common.Address(Go) | 發件人地址。 For more details, see Signature Validation. |
txSignatures | []{*big.Int, *big.Int, *big.Int} (Go) | 發件人簽名。 For more details, see Signature Validation. |
簽名的 RLP 編碼
要製作事務簽名,RLP 序列化的步驟如下:
SigRLP = encode([encode([type, nonce, gasPrice, gas, to, value, from]), chainid, 0, 0])SigHash = keccak256(SigRLP)Signature = sign(SigHash, <private key>)
SenderTxHash 的 RLP 編碼
要製作 SenderTxHash,RLP 序列化過程如下:
txSignatures (a single signature) = [[v, r, s]]txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]SenderTxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, txSignatures])SenderTxHash = keccak256(SenderTxHashRLP)
交易哈希的 RLP 編碼
要製作事務哈希值,RLP 序列化的步驟如下:
txSignatures (a single signature) = [[v, r, s]]txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]TxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, txSignatures])TxHash = keccak256(TxHashRLP)
RLP 編碼 (示例)
下面顯示的是使用給定參數和事務對象信息進行 RLP 序列化的結果:
ChainID 0x1PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33dPublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3SigRLP 0xf839b5f4088204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b018080SigHash 0xaa7665566c9508140bb91e36a948fc8f61c4518400a69562432d17e064f3ce43Signature f845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbcTxHashRLP 0x08f87a8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbcTxHash 762f130342569e9669a4d8547f1248bd2554fbbf3062d63a97ce28bfa97aa9d7SenderTxHashRLP 0x08f87a8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbcSenderTxHash 762f130342569e9669a4d8547f1248bd2554fbbf3062d63a97ce28bfa97aa9d7 TX(762f130342569e9669a4d8547f1248bd2554fbbf3062d63a97ce28bfa97aa9d7) Type: TxTypeValueTransfer From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B To: 0x7b65B75d204aBed71587c9E519a89277766EE1d0 Nonce: 1234 GasPrice: 0x19 GasLimit: 0xf4240 Value: 0xa Signature: [{"V":"0x25","R":"0xf3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29a","S":"0x6748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc"}] Hex: 08f87a8204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0bf845f84325a0f3d0cd43661cabf53425535817c5058c27781f478cb5459874feaa462ed3a29aa06748abe186269ff10b8100a4b7d7fea274b53ea2905acbf498dc8b5ab1bf4fbc
RPC 輸出 (示例)
下面顯示的是通過 JSON RPC 返回的事務對象。
{ "blockHash": "0xeff95d8c57d668aa274a0eaeff942ecc2cfca4c71f71ae9fdaba92735cd79b9e", "blockNumber": "0x1", "contractAddress": null, "from": "0x33c97827c33d8c5e07eb263ed6ec5c229e8b4752", "gas": "0x174876e800", "gasPrice": "0x5d21dba00", "gasUsed": "0x5208", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x1", "senderTxHash": "0x8c18c9a609d2b22c921ce0b282e64924bf073e84f7c3850d99ec71da4054f79d", "signatures": [ { "V": "0x25", "R": "0x94e059980bce9f3ba5f09e5021ad4f32d7d9cfda938c2d38c989cd4a406e7ba", "S": "0x3ca52ee9d23954a278e6a30f3ec40951b26fb8b3f784c236c5bb1d5c9a8b2c82" } ], "status": "0x1", "to": "0x75c3098be5e4b63fbac05838daaee378dd48098d", "transactionHash": "0x8c18c9a609d2b22c921ce0b282e64924bf073e84f7c3850d99ec71da4054f79d", "transactionIndex": "0x1", "type": "TxTypeValueTransfer", "typeInt": 8, "value": "0x21e19e0c9bab2400000"}
TxTypeValueTransferMemo
TxTypeValueTransferMemo 用於用戶發送帶有特定信息的 KAIA。 TxTypeValueTransferMemo 僅在 to
為外部所有賬戶時才被接受。 要將 KAIA 轉移到智能合約賬戶,請使用 TxTypeSmartContractExecution。 該交易類型將進行以下更改。
- 匯款人的餘額會減少交易費的金額。
- 發送方的 nonce 增加一個。
value
KAIA 由發送方傳送給接收方。
屬性
屬性 | 類型 | 說明 |
---|---|---|
type | uint8(Go) | TxTypeValueTransferMemo 的類型。 必須為 0x10。 |
nonce | uint64 (Go) | 用於唯一標識發件人交易的值。 如果一個發送方生成了兩個具有相同 nonce 的交易,則只執行其中一個。 |
gasPrice | *big.Int ( Go) | 以 kei 為單位的氣體單價,發件人將支付交易費。 交易費的計算公式為 gas * gasPrice 。 例如,如果交易消耗了 10 單位天然氣,而 gasPrice 為 10^18,則交易費為 10 KAIA。 See Unit of KAIA. |
gas | uint64 (Go) | 交易允許使用的最大氣體量。 |
to | common.Address(Go) | 接收轉賬金額的賬戶地址。 |
value | *big.Int ( Go) | 以 kei 為單位的 KAIA 轉賬金額。 |
from | common.Address(Go) | 發件人地址。 For more details, see Signature Validation. |
input | []byte (Go) | 交易附帶的數據。 信息應傳遞給該屬性。 |
txSignatures | []{*big.Int, *big.Int, *big.Int} (Go) | 發件人簽名。 For more details, see Signature Validation. |
簽名的 RLP 編碼
要製作事務簽名,RLP 序列化的步驟如下:
SigRLP = encode([encode([type, nonce, gasPrice, gas, to, value, from, input]), chainid, 0, 0])SigHash = keccak256(SigRLP)Signature = sign(SigHash, <private key>)
SenderTxHash 的 RLP 編碼
要製作 SenderTxHash,RLP 序列化過程如下:
txSignatures (a single signature) = [[v, r, s]]txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]SenderTxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, txSignatures])SenderTxHash = keccak256(SenderTxHashRLP)
交易哈希的 RLP 編碼
要製作事務哈希值,RLP 序列化的步驟如下:
txSignatures (a single signature) = [[v, r, s]]txSignatures (two signatures) = [[v1, r1, s1], [v2, r2, s2]]TxHashRLP = type + encode([nonce, gasPrice, gas, to, value, from, input, txSignatures])TxHash = keccak256(TxHashRLP)
RLP 編碼 (示例)
下面顯示的是 RLP 序列化的結果和事務對象:
ChainID 0x1PrivateKey 0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8PublicKey.X 0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33dPublicKey.Y 0x8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3SigRLP 0xf841b83cf83a108204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6f018080SigHash 0x23dd6ca2c023a152cad636ac8ed0a1a7962d3eb4cb7f3c50e34c0cc42e37d48aSignature f845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3TxHashRLP 0x10f8808204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6ff845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3TxHash 6c7ee543c24e5b928b638a9f4502c1eca69103f5467ed4b6a2ed0ea5aede2e6bSenderTxHashRLP 0x10f8808204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6ff845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3SenderTxHash 6c7ee543c24e5b928b638a9f4502c1eca69103f5467ed4b6a2ed0ea5aede2e6b TX(6c7ee543c24e5b928b638a9f4502c1eca69103f5467ed4b6a2ed0ea5aede2e6b) Type: TxTypeValueTransferMemo From: 0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B To: 0x7b65B75d204aBed71587c9E519a89277766EE1d0 Nonce: 1234 GasPrice: 0x19 GasLimit: 0xf4240 Value: 0xa Signature: [{"V":"0x25","R":"0x7d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1c","S":"0x2b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3"}] Data: 36383635366336633666 Hex: 10f8808204d219830f4240947b65b75d204abed71587c9e519a89277766ee1d00a94a94f5374fce5edbc8e2a8697c15331677e6ebf0b8568656c6c6ff845f84325a07d2b0c89ee8afa502b3186413983bfe9a31c5776f4f820210cffe44a7d568d1ca02b1cbd587c73b0f54969f6b76ef2fd95cea0c1bb79256a75df9da696278509f3
RPC 輸出 (示例)
下面顯示的是通過 JSON RPC 返回的事務對象。
{ "blockHash": "0x7ad6ed1f9955be00db8fb5452125f0e9a3c0856abb5b4cc4aed91ffc134321da", "blockNumber": "0x1", "contractAddress": null, "from": "0x0fcda0f2efbe1b4e61b487701ce4f2f8abc3723d", "gas": "0x174876e800", "gasPrice": "0x5d21dba00", "gasUsed": "0x53fc", "input": "0x68656c6c6f", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x4", "senderTxHash": "0x7311ef305064f2a6997c16cc8b5fc3fdf301549e7b7d0baa3a995a8e79479e5e", "signatures": [ { "V": "0x25", "R": "0xd63673e1be7919e7ca42de64931c853fc568557b151e9b335df94b22de3a600f", "S": "0x57bc916a50856b4d197f6856f16370f72f3bb0ac411b1da793fdb5bb7066966f" } ], "status": "0x1", "to": "0x75c3098be5e4b63fbac05838daaee378dd48098d", "transactionHash": "0x7311ef305064f2a6997c16cc8b5fc3fdf301549e7b7d0baa3a995a8e79479e5e", "transactionIndex": "0x4", "type": "TxTypeValueTransferMemo", "typeInt": 16, "value": "0x989680"}
TxTypeSmartContractDeploy
TxTypeSmartContractDeploy 向給定地址部署智能合約。 該交易類型將進行以下更改。
- 匯款人的餘額會減少交易費的金額。
- 發送方的 nonce 增加一個。
- 智能合約與
input
中的代碼一起部署。 部署地址將通過收據中的contractAddress
返回。 value
KAIA 由發送方傳送給接收方。
屬性
屬性 | 類型 | 說明 |
---|---|---|
type | uint8(Go) | TxTypeSmartContractDeploy 的類型。 必須為 0x28。 |
nonce | uint64 (Go) | 用於唯一標識發件人交易的值。 如果一個發送方生成了兩個具有相同 nonce 的交易,則只執行其中一個。 |
gasPrice | *big.Int ( Go) | 以 kei 為單位的氣體單價,發件人將支付交易費。 交易費的計算公式為 gas * gasPrice 。 例如,如果交易消耗了 10 單位天然氣,而 gasPrice 為 10^18,則交易費為 10 KAIA。 See Unit of KAIA. |
gas | uint64 (Go) | 交易允許使用的最大燃氣量。 |
to | *common.Address ( Go\) | 接收轉賬金額的賬戶地址。 目前,該值必須為零。 今後將支持指定地址。 |
value | *big.Int ( Go) | 以 kei 為單位的 KAIA 轉賬金額。 |
from | common.Address(Go) | 發件人地址。 For more details, see Signature Validation. |
input | []byte (Go) | 附屬於事務的數據,用於執行事務。 |
humanReadable | bool (Go) | 必須為假,因為目前還不支持人類可讀地址。 如果為 "true",交易將被拒絕。 |
codeFormat | uint8(Go) | 智能合約代碼的代碼格式。 目前僅支持 EVM(0x00) 值。 |
txSignatures | []{*big.Int, *big.Int, *big.Int} (Go) | 發件人簽名。 For more details, see Signature Validation. |
簽名的 RLP 編碼
要製作這種事務類型的簽名,RLP 序列化工作應如下進行:
SigRLP = encode([encode([type, nonce, gasPrice, gas, to, value, from, input, humanReadable, codeFormat]), chainid, 0, 0])SigHash = keccak256(SigRLP)Signature = sign(SigHash, <private key>)