QBFT/Shanghai blocks failing withdrawal validation on import #6760
Labels
bug
Something isn't working
non mainnet (private networks)
not related to mainnet features - covers privacy, permissioning, IBFT2, QBFT
Description
Running 4 QBFT validators with
shanghaiTime: 0
the nodes mine blocks correctly and accept transactions correctly.However, when a new validator joins and syncs with the chain it fails to validate the imported blocks because the block body
withdrawals
element isnull
(represented asOptional.empty()
in the code)In the QBFT/Shanghai PR (#6353) I disabled
withdrawal
validation for all BFT protocol schedules (see https://github.com/matthew1001/besu/blob/97c50417787f21bca8acf0a8b7d4e74d65f9f19e/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilder.java#L120) since withdrawals aren't a thing for BFT chains.In hindsight I think the correct way to treat them would have been to always include an empty withdrawals list, rather than no list at all. This would pass
withdrawal
validation byshanghai
and onwards protocol schedule validators.Removing the BFT protocol schedule override:
means that BFT nodes will use whichever withdrawal validator is used by the given protocol schedule.
Versions (Add all that apply)
24.3.0
The text was updated successfully, but these errors were encountered: