Skip to content

Commit

Permalink
Remove QbftBlockHashing as this is provided by the block hash (#8311)
Browse files Browse the repository at this point in the history
Signed-off-by: Jason Frame <[email protected]>
  • Loading branch information
jframe authored Feb 17, 2025
1 parent 873971a commit efcefad
Show file tree
Hide file tree
Showing 11 changed files with 5 additions and 195 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.hyperledger.besu.consensus.common.BftValidatorOverrides;
import org.hyperledger.besu.consensus.common.EpochManager;
import org.hyperledger.besu.consensus.common.ForksSchedule;
import org.hyperledger.besu.consensus.common.bft.BftBlockHashing;
import org.hyperledger.besu.consensus.common.bft.BftBlockInterface;
import org.hyperledger.besu.consensus.common.bft.BftContext;
import org.hyperledger.besu.consensus.common.bft.BftEventQueue;
Expand Down Expand Up @@ -51,7 +50,6 @@
import org.hyperledger.besu.consensus.qbft.adaptor.BlockUtil;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockCodecAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockCreatorFactoryAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockHashingAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockInterfaceAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockchainAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftExtraDataProviderAdaptor;
Expand Down Expand Up @@ -286,8 +284,7 @@ protected MiningCoordinator createMiningCoordinator(
messageValidatorFactory,
messageFactory,
qbftExtraDataCodec,
new QbftExtraDataProviderAdaptor(qbftExtraDataCodec),
new QbftBlockHashingAdaptor(new BftBlockHashing(qbftExtraDataCodec)));
new QbftExtraDataProviderAdaptor(qbftExtraDataCodec));
QbftBlockHeightManagerFactory qbftBlockHeightManagerFactory =
new QbftBlockHeightManagerFactory(
finalState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,17 @@
*/
package org.hyperledger.besu.consensus.qbft.core.support;

import org.hyperledger.besu.consensus.common.bft.BftBlockHashing;
import org.hyperledger.besu.consensus.common.bft.BftBlockInterface;
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
import org.hyperledger.besu.consensus.qbft.QbftExtraDataCodec;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockHashingAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockInterfaceAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftExtraDataProviderAdaptor;
import org.hyperledger.besu.consensus.qbft.core.payload.CommitPayload;
import org.hyperledger.besu.consensus.qbft.core.payload.MessageFactory;
import org.hyperledger.besu.consensus.qbft.core.statemachine.PreparedCertificate;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlock;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCodec;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHashing;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockInterface;
import org.hyperledger.besu.consensus.qbft.core.types.QbftExtraDataProvider;
import org.hyperledger.besu.consensus.qbft.core.types.QbftHashMode;
import org.hyperledger.besu.crypto.SECPSignature;
import org.hyperledger.besu.cryptoservices.NodeKey;
Expand All @@ -42,18 +37,9 @@ public static SignedData<CommitPayload> createSignedCommitPayload(
final NodeKey nodeKey,
final QbftBlockCodec blockEncoder) {

final QbftExtraDataCodec qbftExtraDataEncoder = new QbftExtraDataCodec();

final QbftBlock commitBlock =
createCommitBlockFromProposalBlock(block, roundId.getRoundNumber());
final QbftBlockHashing blockHashing =
new QbftBlockHashingAdaptor(new BftBlockHashing(qbftExtraDataEncoder));
final QbftExtraDataProvider extraDataProvider =
new QbftExtraDataProviderAdaptor(qbftExtraDataEncoder);
final SECPSignature commitSeal =
nodeKey.sign(
blockHashing.calculateDataHashForCommittedSeal(
commitBlock.getHeader(), extraDataProvider.getExtraData(commitBlock.getHeader())));
final SECPSignature commitSeal = nodeKey.sign(commitBlock.getHash());

final MessageFactory messageFactory = new MessageFactory(nodeKey, blockEncoder);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
import org.hyperledger.besu.consensus.common.BftValidatorOverrides;
import org.hyperledger.besu.consensus.common.EpochManager;
import org.hyperledger.besu.consensus.common.ForksSchedule;
import org.hyperledger.besu.consensus.common.bft.BftBlockHashing;
import org.hyperledger.besu.consensus.common.bft.BftBlockHeaderFunctions;
import org.hyperledger.besu.consensus.common.bft.BftBlockInterface;
import org.hyperledger.besu.consensus.common.bft.BftContext;
Expand Down Expand Up @@ -65,7 +64,6 @@
import org.hyperledger.besu.consensus.qbft.adaptor.BftEventHandlerAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockCodecAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockCreatorFactoryAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockHashingAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockInterfaceAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftBlockchainAdaptor;
import org.hyperledger.besu.consensus.qbft.adaptor.QbftExtraDataProviderAdaptor;
Expand All @@ -80,7 +78,6 @@
import org.hyperledger.besu.consensus.qbft.core.statemachine.QbftController;
import org.hyperledger.besu.consensus.qbft.core.statemachine.QbftRoundFactory;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCodec;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHashing;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockInterface;
import org.hyperledger.besu.consensus.qbft.core.types.QbftContext;
import org.hyperledger.besu.consensus.qbft.core.types.QbftEventHandler;
Expand Down Expand Up @@ -565,8 +562,6 @@ private static ControllerAndState createControllerAndFinalState(
blockChain.getChainHeadBlockNumber());
final QbftExtraDataProvider qbftExtraDataProvider =
new QbftExtraDataProviderAdaptor(BFT_EXTRA_DATA_ENCODER);
final QbftBlockHashing blockHashing =
new QbftBlockHashingAdaptor(new BftBlockHashing(BFT_EXTRA_DATA_ENCODER));
final QbftValidatorModeTransitionLoggerAdaptor validatorModeTransitionLogger =
new QbftValidatorModeTransitionLoggerAdaptor(
new ValidatorModeTransitionLogger(forksSchedule));
Expand All @@ -585,8 +580,7 @@ private static ControllerAndState createControllerAndFinalState(
messageValidatorFactory,
messageFactory,
BFT_EXTRA_DATA_ENCODER,
qbftExtraDataProvider,
blockHashing),
qbftExtraDataProvider),
messageValidatorFactory,
messageFactory,
validatorModeTransitionLogger),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlock;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCodec;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCreator;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHashing;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHeader;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockImporter;
import org.hyperledger.besu.consensus.qbft.core.types.QbftContext;
Expand Down Expand Up @@ -103,7 +102,6 @@ public class QbftRoundIntegrationTest {
@Mock private QbftBlockHeader parentHeader;
@Mock private QbftBlockCodec blockEncoder;
@Mock private QbftExtraDataProvider qbftExtraDataProvider;
@Mock private QbftBlockHashing blockHashing;

private QbftBlock proposedBlock;

Expand Down Expand Up @@ -168,7 +166,6 @@ public void signingFailsOnReceiptOfProposalUpdatesRoundButTransmitsNothing() {
roundTimer,
bftExtraDataCodec,
qbftExtraDataProvider,
blockHashing,
parentHeader);

round.handleProposalMessage(
Expand Down Expand Up @@ -209,7 +206,6 @@ public void failuresToSignStillAllowBlockToBeImported() {
roundTimer,
bftExtraDataCodec,
qbftExtraDataProvider,
blockHashing,
parentHeader);

// inject a block first, then a prepare on it.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import org.hyperledger.besu.consensus.qbft.core.payload.RoundChangePayload;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlock;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCreator;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHashing;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHeader;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockImporter;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockInterface;
Expand Down Expand Up @@ -81,7 +80,6 @@ public class QbftRound {
/** The Bft extra data provider */
protected final QbftExtraDataProvider qbftExtraDataProvider;

private final QbftBlockHashing blockHashing;
private final QbftBlockHeader parentHeader;

/**
Expand All @@ -98,7 +96,6 @@ public class QbftRound {
* @param roundTimer the round timer
* @param bftExtraDataCodec the bft extra data codec
* @param qbftExtraDataProvider the qbft extra data provider
* @param blockHashing the block hashing
* @param parentHeader the parent header
*/
public QbftRound(
Expand All @@ -113,7 +110,6 @@ public QbftRound(
final RoundTimer roundTimer,
final BftExtraDataCodec bftExtraDataCodec,
final QbftExtraDataProvider qbftExtraDataProvider,
final QbftBlockHashing blockHashing,
final QbftBlockHeader parentHeader) {
this.roundState = roundState;
this.blockCreator = blockCreator;
Expand All @@ -125,7 +121,6 @@ public QbftRound(
this.transmitter = transmitter;
this.bftExtraDataCodec = bftExtraDataCodec;
this.qbftExtraDataProvider = qbftExtraDataProvider;
this.blockHashing = blockHashing;
this.parentHeader = parentHeader;
roundTimer.startTimer(getRoundIdentifier());
}
Expand Down Expand Up @@ -395,10 +390,7 @@ private void importBlockToChain() {

private SECPSignature createCommitSeal(final QbftBlock block) {
final QbftBlock commitBlock = createCommitBlock(block);
final QbftBlockHeader proposedHeader = commitBlock.getHeader();
final BftExtraData extraData = qbftExtraDataProvider.getExtraData(proposedHeader);
final Hash commitHash =
blockHashing.calculateDataHashForCommittedSeal(proposedHeader, extraData);
final Hash commitHash = commitBlock.getHash();
return nodeKey.sign(commitHash);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import org.hyperledger.besu.consensus.qbft.core.payload.MessageFactory;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCreator;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCreatorFactory;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHashing;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHeader;
import org.hyperledger.besu.consensus.qbft.core.types.QbftExtraDataProvider;
import org.hyperledger.besu.consensus.qbft.core.types.QbftFinalState;
Expand All @@ -42,7 +41,6 @@ public class QbftRoundFactory {
private final MessageFactory messageFactory;
private final BftExtraDataCodec bftExtraDataCodec;
private final QbftExtraDataProvider qbftExtraDataProvider;
private final QbftBlockHashing blockHashing;

/**
* Instantiates a new Qbft round factory.
Expand All @@ -55,7 +53,6 @@ public class QbftRoundFactory {
* @param messageFactory the message factory
* @param bftExtraDataCodec the bft extra data codec
* @param qbftExtraDataProvider the bft extra data codec
* @param blockHashing the block hashing
*/
public QbftRoundFactory(
final QbftFinalState finalState,
Expand All @@ -65,8 +62,7 @@ public QbftRoundFactory(
final MessageValidatorFactory messageValidatorFactory,
final MessageFactory messageFactory,
final BftExtraDataCodec bftExtraDataCodec,
final QbftExtraDataProvider qbftExtraDataProvider,
final QbftBlockHashing blockHashing) {
final QbftExtraDataProvider qbftExtraDataProvider) {
this.finalState = finalState;
this.blockCreatorFactory = finalState.getBlockCreatorFactory();
this.protocolContext = protocolContext;
Expand All @@ -76,7 +72,6 @@ public QbftRoundFactory(
this.messageFactory = messageFactory;
this.bftExtraDataCodec = bftExtraDataCodec;
this.qbftExtraDataProvider = qbftExtraDataProvider;
this.blockHashing = blockHashing;
}

/**
Expand Down Expand Up @@ -128,7 +123,6 @@ public QbftRound createNewRoundWithState(
finalState.getRoundTimer(),
bftExtraDataCodec,
qbftExtraDataProvider,
blockHashing,
parentHeader);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlock;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCodec;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockCreator;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHashing;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockHeader;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockImporter;
import org.hyperledger.besu.consensus.qbft.core.types.QbftBlockInterface;
Expand Down Expand Up @@ -120,7 +119,6 @@ public class QbftBlockHeightManagerTest {
@Mock private QbftValidatorProvider validatorProvider;
@Mock private QbftProtocolSpec protocolSpec;
@Mock private QbftBlockImporter blockImporter;
@Mock private QbftBlockHashing blockHashing;

@Captor private ArgumentCaptor<MessageData> sentMessageArgCaptor;

Expand Down Expand Up @@ -178,7 +176,6 @@ public void setup() {
roundTimer,
bftExtraDataCodec,
qbftExtraDataProvider,
blockHashing,
parentHeader);
});

Expand All @@ -198,7 +195,6 @@ public void setup() {
roundTimer,
bftExtraDataCodec,
qbftExtraDataProvider,
blockHashing,
parentHeader);
});

Expand Down Expand Up @@ -410,7 +406,6 @@ public void messagesForFutureRoundsAreBufferedAndUsedToPreloadNewRoundWhenItIsSt
when(finalState.getQuorum()).thenReturn(1);
when(blockInterface.replaceRoundInBlock(eq(createdBlock), eq(2), any()))
.thenReturn(createdBlock);
when(blockHashing.calculateDataHashForCommittedSeal(any(), any())).thenReturn(Hash.ZERO);
when(blockCreator.createSealedBlock(any(), any(), anyInt(), any())).thenReturn(createdBlock);
when(protocolSchedule.getByBlockHeader(any())).thenReturn(protocolSpec);
when(protocolSpec.getBlockImporter()).thenReturn(blockImporter);
Expand Down Expand Up @@ -461,7 +456,6 @@ public void messagesForCurrentRoundAreBufferedAndUsedToPreloadRoundWhenItIsStart
when(blockTimer.checkEmptyBlockExpired(any(), eq(0L))).thenReturn(true);
when(blockInterface.replaceRoundInBlock(eq(createdBlock), eq(0), any()))
.thenReturn(createdBlock);
when(blockHashing.calculateDataHashForCommittedSeal(any(), any())).thenReturn(Hash.ZERO);
when(blockCreator.createSealedBlock(any(), any(), anyInt(), any())).thenReturn(createdBlock);
when(protocolSchedule.getByBlockHeader(any())).thenReturn(protocolSpec);
when(protocolSpec.getBlockImporter()).thenReturn(blockImporter);
Expand Down
Loading

0 comments on commit efcefad

Please sign in to comment.