Closed y0sher closed 4 months ago
As an consumer of diversity of ethereum execution clients, I'm using ethclient as way to have consistent API to all these clients.
ethclient
Apparently the ethclient does some checks when de-serializing the block received from the EL between those checks are -
v
yParity
1596869
code example:
ctx, cancel := context.Background() client, err = ethclient.DialContext(ctx, "ws://your_WS_Besu_node_addr"/) if err != nil { return err } b, err := client.BlockByNumber(ctx, big.NewInt(1596869)) if err != nil { // will error : 'v' and 'yParity' fields do not match }
I got the same block manually through raw WS JSON-RPC and the values are indeed not matching, for example one TX from that block:
{ accessList: [], blockHash: '0xd4cff61214d981b4ae81c539f7bb0403685d46484966940006b7828958683d73', blockNumber: '0x185dc5', chainId: '0x4268', from: '0x217391cd635f089bc8ab5e2647ff0bf6dcfcda60', gas: '0xf4240', gasPrice: '0x7e7c6ca0', maxPriorityFeePerGas: '0x989680', maxFeePerGas: '0x174876e800', hash: '0x795cd0f767c5b5aed5fb44bcabd10b453ad07fec87f69af0ad14f54dd9dee0d8', input: '0x1a1016280000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061465800000000000000000000000000000000000000000000000000000000000000021028cd6fce0c017e7fd3dd77e05b21dd34c2c9b9799549b8b0e93dcb2f7095945bc00000000000000000000000000000000000000000000000000000000000000', nonce: '0xea2a', to: '0xeb08c00f8a12e34951561da98f771248a6c2842e', transactionIndex: '0x62', type: '0x2', value: '0x0', yParity: '0x1', v: '0x84f4', r: '0x4b37a54bbac2df984f1c31a949b4ab2136df4c727b9f7249d2073a44c4029173', s: '0x18b9850eb99080eeb0286bfcede0b289872695c83821f43282b501c4f6c80457' }
The same block and tx got from Geth:
{ blockHash: '0xd4cff61214d981b4ae81c539f7bb0403685d46484966940006b7828958683d73', blockNumber: '0x185dc5', from: '0x217391cd635f089bc8ab5e2647ff0bf6dcfcda60', gas: '0xf4240', gasPrice: '0x7e7c6ca0', maxFeePerGas: '0x174876e800', maxPriorityFeePerGas: '0x989680', hash: '0x795cd0f767c5b5aed5fb44bcabd10b453ad07fec87f69af0ad14f54dd9dee0d8', input: '0x1a1016280000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061465800000000000000000000000000000000000000000000000000000000000000021028cd6fce0c017e7fd3dd77e05b21dd34c2c9b9799549b8b0e93dcb2f7095945bc00000000000000000000000000000000000000000000000000000000000000', nonce: '0xea2a', to: '0xeb08c00f8a12e34951561da98f771248a6c2842e', transactionIndex: '0x62', value: '0x0', type: '0x2', accessList: [], chainId: '0x4268', v: '0x1', r: '0x4b37a54bbac2df984f1c31a949b4ab2136df4c727b9f7249d2073a44c4029173', s: '0x18b9850eb99080eeb0286bfcede0b289872695c83821f43282b501c4f6c80457', yParity: '0x1' },
Notice the yParity and v
Expected behavior: Adherence to the checks done by ethclient, matching v and yParity values
Actual behavior: : not matching values
Frequency: most recent blocks.
'v' and 'yParity' fields do not match couldn't find any logs in Besu itself
'v' and 'yParity' fields do not match
java -version
cat /etc/*release
uname -a
vmware -v
docker version
solc --version
Description
As an consumer of diversity of ethereum execution clients, I'm using
ethclient
as way to have consistent API to all these clients.Apparently the
ethclient
does some checks when de-serializing the block received from the EL between those checks are -v
oryParity
fields exist in txSteps to Reproduce (Bug)
1596869
on holesky)code example:
I got the same block manually through raw WS JSON-RPC and the values are indeed not matching, for example one TX from that block:
The same block and tx got from Geth:
Notice the
yParity
andv
Expected behavior: Adherence to the checks done by
ethclient
, matchingv
andyParity
valuesActual behavior: : not matching values
Frequency: most recent blocks.
Logs (if a bug)
'v' and 'yParity' fields do not match
couldn't find any logs in Besu itselfVersions (Add all that apply)
java -version
]cat /etc/*release
]uname -a
]vmware -v
]docker version
]Smart contract information (If you're reporting an issue arising from deploying or calling a smart contract, please supply related information)
solc --version
]Additional Information (Add any of the following or anything else that may be relevant)