Ich würde gerne die Details der Transaktionsdatenstruktur von Ethereum wissen. Welche Daten werden bei Transaktionen gespeichert?
Eine Ethereum-Transaktion – wie in dem, was Sie übergeben sendRawTransaction()
– besteht aus den folgenden Feldern, der Reihe nach und RLP-codiert (beachten Sie, dass die Feldnamen nicht Teil der codierten Daten sind):
Jede Nutzlast, ob Rohdaten oder eine Vertragsfunktionssignatur und Parameter, wird in das Datenfeld codiert .
Einige Referenzen:
Sie können eine Transaktion anhand ihres Hashs überprüfen, zum Beispiel in eth :
> web3.eth.getTransaction('0xc5eee3ae9cf10fbee05325e3a25c3b19489783612e36cb55b054c2cb4f82fc28')
{
blockHash: '0xdb85c62ef50103f08e9220b59d6c08cbfb52e61d84926dedb3fe9b6940e6bbea',
blockNumber: 290081,
from: '0x1dcb8d1f0fcc8cbc8c2d76528e877f915e299fbe',
gas: 90000,
gasPrice: 50000000000',
hash: '0xc5eee3ae9cf10fbee05325e3a25c3b19489783612e36cb55b054c2cb4f82fc28',
input: '0x',
nonce: 34344,
to: '0x702bd0d370bbf0b97b66fe95578c62697c583393',
transactionIndex: 0,
value: 5000111390000000000'
}
die Sie hier in einem Blockchain-Scanner sehen können
Ab London Fork wird eine neue EIP-2718-Transaktion mit TransactionType
2 eingeführt, wie in ethereum/EIPs/eip-1559 beschrieben .
Die neue Nutzlaststruktur -
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s])
Die Blockgültigkeit wird in der Referenzimplementierung unten definiert. Der GASPRICE
( 0x3a
) Opcode MUSS zurückgeben, effective_gas_price
wie in der Referenzimplementierung unten definiert.
Die intrinsischen Kosten der neuen Transaktion werden von EIP-2930 geerbt, insbesondere 21000 + 16 * non-zero calldata bytes + 4 * zero calldata bytes + 1900 * access list storage key count + 2400 * access list address count
.
Der EIP-2718 TransactionPayload
für diese Transaktion ist rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list, signature_y_parity, signature_r, signature_s])
.
Die signature_y_parity, signature_r, signature_s
Elemente dieser Transaktion repräsentieren eine secp256k1-Signatur über keccak256(0x02 || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, amount, data, access_list]))
.
Der EIP-2718 ReceiptPayload
für diese Transaktion ist rlp([status, cumulative_transaction_gas_used, logs_bloom, logs])
.
Die Transaktion besteht aus dem folgenden Feld, während es in den Block validiert wird:
Status
Block
TimeStamp
From
To
Value
Transaction fees
Gas Price
Gas Limit & Usage by Txn
Gas Fees
Burnt & Txn Savings Fees
Input Data
Others (Tx type, Nonce, Position)
Sie können all dies nachverfolgen, wenn Sie den Vertrag auf etherscan.io erstellen und bereitstellen
Satoshi Nakanishi
Himbeere
geth
Gradeth
die Programmiersprachepyethapp
) . Datenstruktur zur Darstellung einer Transaktion.Abhishek Deb
achso