Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qbft block type #8142

Merged
merged 28 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b155e7b
Use QbftBlock type instead of core Block type
jframe Jan 13, 2025
13a0825
make it compile
jframe Jan 16, 2025
33383f0
fix unit tests
jframe Jan 17, 2025
0d5944a
cleanup warnings
jframe Jan 17, 2025
d731783
fix integration tests
jframe Jan 20, 2025
3a3560d
use qbft context in qbft core. fixes runtime and ATs
jframe Jan 20, 2025
06b6e79
Merge branch 'main' into qbft_modulisation_block
jframe Jan 21, 2025
827e7f8
rename qbft.core.api to qbft.core.types
jframe Jan 21, 2025
0c2705b
add equals and hashcode to fix intg tests
jframe Jan 21, 2025
26125bc
clean up warnings
jframe Jan 21, 2025
393c4dd
add javadoc
jframe Jan 21, 2025
eff2035
split QbftBlockImporter impl into its own class
jframe Jan 21, 2025
0fa7e5a
qbft adaptor tests
jframe Jan 22, 2025
01ff583
cleanup warnings
jframe Jan 22, 2025
bd67548
cleanup warnings
jframe Jan 23, 2025
3be764d
cleanup warnings
jframe Jan 23, 2025
dc3d854
changes after local review
jframe Jan 23, 2025
3ee7243
Merge branch 'main' into qbft_modulisation_block
jframe Jan 23, 2025
6c5e515
Fix mined block logging
jframe Jan 23, 2025
66d719b
Merge branch 'qbft_modulisation_block' of github.com:jframe/besu into…
jframe Jan 23, 2025
5f2be21
rename qbft adaptor class to have adaptor suffix
jframe Jan 30, 2025
ccc4a36
Merge branch 'main' into qbft_modulisation_block
jframe Jan 31, 2025
7b3903c
inline isEmpty check and change isEmpty to check isEmpty on body tran…
jframe Feb 4, 2025
7b38380
Merge remote-tracking branch 'upstream/main' into qbft_modulisation_b…
jframe Feb 4, 2025
e010957
apply spotless
jframe Feb 4, 2025
ef1782e
fix compile issue after merge
jframe Feb 4, 2025
22cae98
fix compile issue after merge
jframe Feb 4, 2025
faee2d7
Merge branch 'main' into qbft_modulisation_block
jframe Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
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.BftBlockInterface;
import org.hyperledger.besu.consensus.common.bft.BftContext;
import org.hyperledger.besu.consensus.common.bft.BftEventQueue;
import org.hyperledger.besu.consensus.common.bft.BftExecutors;
import org.hyperledger.besu.consensus.common.bft.BftExtraDataCodec;
import org.hyperledger.besu.consensus.common.bft.BftProcessor;
import org.hyperledger.besu.consensus.common.bft.BftProtocolSchedule;
import org.hyperledger.besu.consensus.common.bft.BlockTimer;
Expand Down Expand Up @@ -79,35 +79,32 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Collectors;

import com.google.common.base.Suppliers;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/** The Ibft besu controller builder. */
public class IbftBesuControllerBuilder extends BftBesuControllerBuilder {
public class IbftBesuControllerBuilder extends BesuControllerBuilder {

private static final Logger LOG = LoggerFactory.getLogger(IbftBesuControllerBuilder.class);
private BftEventQueue bftEventQueue;
private BftConfigOptions bftConfig;
private ForksSchedule<BftConfigOptions> forksSchedule;
private ValidatorPeers peers;
private IbftExtraDataCodec bftExtraDataCodec;
private BftBlockInterface bftBlockInterface;

/** Default Constructor */
public IbftBesuControllerBuilder() {}

@Override
protected Supplier<BftExtraDataCodec> bftExtraDataCodec() {
return Suppliers.memoize(IbftExtraDataCodec::new);
}

@Override
protected void prepForBuild() {
bftConfig = genesisConfigOptions.getBftConfigOptions();
bftEventQueue = new BftEventQueue(bftConfig.getMessageQueueLimit());
forksSchedule = IbftForksSchedulesFactory.create(genesisConfigOptions);
bftExtraDataCodec = new IbftExtraDataCodec();
bftBlockInterface = new BftBlockInterface(bftExtraDataCodec);
}

@Override
Expand Down Expand Up @@ -158,14 +155,14 @@ protected MiningCoordinator createMiningCoordinator(
forksSchedule,
miningConfiguration,
localAddress,
bftExtraDataCodec().get(),
bftExtraDataCodec,
ethProtocolManager.ethContext().getScheduler());

final ValidatorProvider validatorProvider =
protocolContext.getConsensusContext(BftContext.class).getValidatorProvider();

final ProposerSelector proposerSelector =
new ProposerSelector(blockchain, bftBlockInterface().get(), true, validatorProvider);
new ProposerSelector(blockchain, bftBlockInterface, true, validatorProvider);

// NOTE: peers should not be used for accessing the network as it does not enforce the
// "only send once" filter applied by the UniqueMessageMulticaster.
Expand Down Expand Up @@ -193,7 +190,7 @@ protected MiningCoordinator createMiningCoordinator(

final MessageValidatorFactory messageValidatorFactory =
new MessageValidatorFactory(
proposerSelector, bftProtocolSchedule, protocolContext, bftExtraDataCodec().get());
proposerSelector, bftProtocolSchedule, protocolContext, bftExtraDataCodec);

final Subscribers<MinedBlockObserver> minedBlockObservers = Subscribers.create();
minedBlockObservers.subscribe(ethProtocolManager);
Expand Down Expand Up @@ -222,7 +219,7 @@ protected MiningCoordinator createMiningCoordinator(
minedBlockObservers,
messageValidatorFactory,
messageFactory,
bftExtraDataCodec().get()),
bftExtraDataCodec),
messageValidatorFactory,
messageFactory),
gossiper,
Expand Down Expand Up @@ -291,7 +288,7 @@ protected PluginServiceFactory createAdditionalPluginServices(
final ValidatorProvider validatorProvider =
protocolContext.getConsensusContext(BftContext.class).getValidatorProvider();
return new IbftQueryPluginServiceFactory(
blockchain, bftBlockInterface().get(), validatorProvider, nodeKey);
blockchain, bftBlockInterface, validatorProvider, nodeKey);
}

@Override
Expand All @@ -301,7 +298,7 @@ protected ProtocolSchedule createProtocolSchedule() {
forksSchedule,
privacyParameters,
isRevertReasonEnabled,
bftExtraDataCodec().get(),
bftExtraDataCodec,
evmConfiguration,
miningConfiguration,
badBlockManager,
Expand All @@ -313,7 +310,7 @@ protected ProtocolSchedule createProtocolSchedule() {
protected void validateContext(final ProtocolContext context) {
final BlockHeader genesisBlockHeader = context.getBlockchain().getGenesisBlock().getHeader();

if (bftBlockInterface().get().validatorsInBlock(genesisBlockHeader).isEmpty()) {
if (bftBlockInterface.validatorsInBlock(genesisBlockHeader).isEmpty()) {
LOG.warn("Genesis block contains no signers - chain will not progress.");
}
}
Expand All @@ -331,9 +328,9 @@ protected BftContext createConsensusContext(

return new BftContext(
BlockValidatorProvider.forkingValidatorProvider(
blockchain, epochManager, bftBlockInterface().get(), validatorOverrides),
blockchain, epochManager, bftBlockInterface, validatorOverrides),
epochManager,
bftBlockInterface().get());
bftBlockInterface);
}

private BftValidatorOverrides convertIbftForks(final List<BftFork> bftForks) {
Expand Down
Loading