Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For prebedrock transactions, some txs have
r = 0, s = 0, v = 0
.When apis(
ots_getBlockTransactions
,eth_getTransactionByHash
etc) tries to recoverLegacyTx
's chainid by usingv = 0
, It callsDeriveChainId
. Below is the method implementation.So when
v = 0
, return value will be(v - 35) / 2 = (0 - 35) / 2 = -18
, so underflow occurs. When casted touint64
, it results in value0x7fffffffffffffee
.This bug is observed by inspecting; optimism's RPC endpoint:
https://goerli.optimism.io
, testinprod's RPC endpoint, and even at alchemy. Example payload:Response:
l2geth also has the identical bug, but its RPC handler implementation is different, and does not include buggy chainId to its RPC response.
This PR is a temp fix. When
v = 0
, do not includechainId
in response. Better to not include then returning wrong result.Also, this bug broke otterscan's frontend:
ots_getBlockTransactions
returned response containing chainId as0x7fffffffffffffee
. Frontend ethers.jsBigNumber
library overflowed, displaying incorrect results for/block/{block_number}/tx
endpoint of otterscan.