mirror of
https://github.com/vacp2p/status-linea-besu.git
synced 2026-01-08 23:08:15 -05:00
Don't persist IBFT2 proposal blocks, just validate them (#7631)
* Don't persist IBFT2 proposal blocks, just validate them Signed-off-by: Matthew Whitehead <matthew1001@gmail.com> * Tidy up changelog Signed-off-by: Matthew Whitehead <matthew1001@gmail.com> --------- Signed-off-by: Matthew Whitehead <matthew1001@gmail.com> Signed-off-by: Matt Whitehead <matthew.whitehead@kaleido.io>
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
- Fix mounted data path directory permissions for besu user [#7575](https://github.com/hyperledger/besu/pull/7575)
|
||||
- Fix for `debug_traceCall` to handle transactions without specified gas price. [#7510](https://github.com/hyperledger/besu/pull/7510)
|
||||
- Corrects a regression where custom plugin services are not initialized correctly. [#7625](https://github.com/hyperledger/besu/pull/7625)
|
||||
|
||||
- Fix for IBFT2 chains using the BONSAI DB format [#7631](https://github.com/hyperledger/besu/pull/7631)
|
||||
|
||||
## 24.9.1
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ public class RoundTimer {
|
||||
// Once we are up to round 2 start logging round expiries
|
||||
if (round.getRoundNumber() >= 2) {
|
||||
LOG.info(
|
||||
"QBFT round {} expired. Moved to round {} which will expire in {} seconds",
|
||||
"BFT round {} expired. Moved to round {} which will expire in {} seconds",
|
||||
round.getRoundNumber() - 1,
|
||||
round.getRoundNumber(),
|
||||
(expiryTime / 1000));
|
||||
|
||||
@@ -78,7 +78,9 @@ public class MessageValidator {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!validateBlock(msg.getBlock())) {
|
||||
// We want to validate the block but not persist it yet as it's just a proposal. If it turns
|
||||
// out to be an accepted block it will be persisted at block import time
|
||||
if (!validateBlockWithoutPersisting(msg.getBlock())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -93,14 +95,14 @@ public class MessageValidator {
|
||||
msg.getSignedPayload(), msg.getBlock(), blockInterface);
|
||||
}
|
||||
|
||||
private boolean validateBlock(final Block block) {
|
||||
private boolean validateBlockWithoutPersisting(final Block block) {
|
||||
|
||||
final BlockValidator blockValidator =
|
||||
protocolSchedule.getByBlockHeader(block.getHeader()).getBlockValidator();
|
||||
|
||||
final var validationResult =
|
||||
blockValidator.validateAndProcessBlock(
|
||||
protocolContext, block, HeaderValidationMode.LIGHT, HeaderValidationMode.FULL);
|
||||
protocolContext, block, HeaderValidationMode.LIGHT, HeaderValidationMode.FULL, false);
|
||||
|
||||
if (validationResult.isFailed()) {
|
||||
LOG.info(
|
||||
|
||||
@@ -113,7 +113,7 @@ public class MessageValidatorTest {
|
||||
|
||||
when(protocolSpec.getBlockValidator()).thenReturn(blockValidator);
|
||||
when(protocolSchedule.getByBlockHeader(any())).thenReturn(protocolSpec);
|
||||
when(blockValidator.validateAndProcessBlock(any(), any(), any(), any()))
|
||||
when(blockValidator.validateAndProcessBlock(any(), any(), any(), any(), eq(false)))
|
||||
.thenReturn(new BlockProcessingResult(Optional.empty()));
|
||||
|
||||
when(roundChangeCertificateValidator.validateProposalMessageMatchesLatestPrepareCertificate(
|
||||
@@ -168,7 +168,7 @@ public class MessageValidatorTest {
|
||||
|
||||
@Test
|
||||
public void blockValidationFailureFailsValidation() {
|
||||
when(blockValidator.validateAndProcessBlock(any(), any(), any(), any()))
|
||||
when(blockValidator.validateAndProcessBlock(any(), any(), any(), any(), eq(false)))
|
||||
.thenReturn(new BlockProcessingResult("Failed"));
|
||||
|
||||
final Proposal proposalMsg =
|
||||
|
||||
Reference in New Issue
Block a user