Description
System information
Geth version: geth-v1.10.8
OS & Version: Linux - 32GiB Mem (~11 GiB used), Disk: 10TB (8.4TB used)
Expected behaviour
When fetching a block with full transaction payloads, we are noticing transactions with from
address coming from the Eth burn address (0x0000000000000000000000000000000000000000
) which should never be possible.
As an example, for block 0x24e19
(151065)
curl localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x24e19", true],"id":0}'
We'd expect the response:
{
"jsonrpc": "2.0",
"id": 0,
"result": {
"difficulty": "0x5686a15b4b6",
"extraData": "0xd783010100844765746887676f312e342e32856c696e7578",
"gasLimit": "0x2fefd8",
"gasUsed": "0x5208",
"hash": "0x8f87aa9f058871b41c869b4d34cdab7bcf55c9f9460aee29ac06cb9b375b14a0",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"miner": "0x1dcb8d1f0fcc8cbc8c2d76528e877f915e299fbe",
"mixHash": "0x0da6d0912a0197563eb988aeb8a50167cda45cf6a82330827f6bbd0024599c96",
"nonce": "0xae581272f072055f",
"number": "0x24e19",
"parentHash": "0x38db622002b4fa6da639cb65434a1b38cc2490ff1dac23e3c01bea6769884f52",
"receiptsRoot": "0xcdbded79fb91c04ed5a202acc7ebc7631c3b268f1c334165943054f8c3cca8f4",
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"size": "0x28f",
"stateRoot": "0xcf5d4bdc0e4c7fb1df45f16555fe170eb7e72b8c1b6720353217d7cd630e14ef",
"timestamp": "0x55df0ff5",
"totalDifficulty": "0x5c82ab7dc297110",
"transactions": [
{
"blockHash": "0x8f87aa9f058871b41c869b4d34cdab7bcf55c9f9460aee29ac06cb9b375b14a0",
"blockNumber": "0x24e19",
"from": "0x6d6d02e83c4ced98204e20126acf27e9d87b8af2",
"gas": "0x5267",
"gasPrice": "0xba43b7400",
"hash": "0x7c98efa6641aae7b19e321edf55d183400628597140ecae41c8e2e111d130769",
"input": "0x",
"nonce": "0x1",
"to": "0xca77ccf23a2d4ddf77121a4f66859f744cfe0257",
"transactionIndex": "0x0",
"value": "0x56bc75e2d63100000",
"type": "0x0",
"v": "0x1c",
"r": "0xe8dc8200b64abfbec22aeb61215ac9cbe9533bc1daeb7cdea6ac0db27e55919b",
"s": "0xd20b9383ab859d9d6ef5dbd9a39ed7c95ecaff17649c5bb6fbb6414b06716d93"
}
],
"transactionsRoot": "0xedb1babda89376288300c98ad70035a60853e66d307d253ce1a6a9155e789c28",
"uncles": []
}
}
but
Actual response
{
"jsonrpc": "2.0",
"id": 0,
"result": {
"difficulty": "0x5686a15b4b6",
"extraData": "0xd783010100844765746887676f312e342e32856c696e7578",
"gasLimit": "0x2fefd8",
"gasUsed": "0x5208",
"hash": "0x8f87aa9f058871b41c869b4d34cdab7bcf55c9f9460aee29ac06cb9b375b14a0",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"miner": "0x1dcb8d1f0fcc8cbc8c2d76528e877f915e299fbe",
"mixHash": "0x0da6d0912a0197563eb988aeb8a50167cda45cf6a82330827f6bbd0024599c96",
"nonce": "0xae581272f072055f",
"number": "0x24e19",
"parentHash": "0x38db622002b4fa6da639cb65434a1b38cc2490ff1dac23e3c01bea6769884f52",
"receiptsRoot": "0xcdbded79fb91c04ed5a202acc7ebc7631c3b268f1c334165943054f8c3cca8f4",
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"size": "0x28f",
"stateRoot": "0xcf5d4bdc0e4c7fb1df45f16555fe170eb7e72b8c1b6720353217d7cd630e14ef",
"timestamp": "0x55df0ff5",
"totalDifficulty": "0x5c82ab7dc297110",
"transactions": [
{
"blockHash": "0x8f87aa9f058871b41c869b4d34cdab7bcf55c9f9460aee29ac06cb9b375b14a0",
"blockNumber": "0x24e19",
"from": "0x0000000000000000000000000000000000000000",
"gas": "0x5267",
"gasPrice": "0xba43b7400",
"hash": "0x7c98efa6641aae7b19e321edf55d183400628597140ecae41c8e2e111d130769",
"input": "0x",
"nonce": "0x1",
"to": "0xca77ccf23a2d4ddf77121a4f66859f744cfe0257",
"transactionIndex": "0x0",
"value": "0x56bc75e2d63100000",
"type": "0x0",
"v": "0x1c",
"r": "0xe8dc8200b64abfbec22aeb61215ac9cbe9533bc1daeb7cdea6ac0db27e55919b",
"s": "0xd20b9383ab859d9d6ef5dbd9a39ed7c95ecaff17649c5bb6fbb6414b06716d93"
}
],
"transactionsRoot": "0xedb1babda89376288300c98ad70035a60853e66d307d253ce1a6a9155e789c28",
"uncles": []
}
}
Noticeable, the from
address of the only transaction is invalid.
Steps to reproduce the behaviour
Call getBlockByNumber
with concerning blocks with full transactions. Likewise, calling getTransactionByHash
with the appropriate transaction hash will also output same issue with the transaction where the from
field is 0x0000000000000000000000000000000000000000
.
We've noticed this on multiple blocks ranging from 81914
to 207680
and potentially more. Our hunch is that there is some issue with the RLP decoder that is defaulting the from
field to the 0x0
address after a Geth upgrade.
All transactions of issue that we've noticed are contained in blocks prior to the Homestead
fork so far.