|
|
|
@ -1,6 +1,6 @@
|
|
|
|
From 46c30d127f389d1c02778e546733e33db56c2dde Mon Sep 17 00:00:00 2001
|
|
|
|
From 050489f7245fd9e1fa982e844b6984a3eba45d29 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Aere Network <node@aere.network>
|
|
|
|
From: Aere Network <node@aere.network>
|
|
|
|
Date: Wed, 12 Aug 2026 02:02:19 +0300
|
|
|
|
Date: Wed, 12 Aug 2026 02:25:12 +0300
|
|
|
|
Subject: [PATCH] Aere Network: post-quantum certificate anchor for QBFT
|
|
|
|
Subject: [PATCH] Aere Network: post-quantum certificate anchor for QBFT
|
|
|
|
|
|
|
|
|
|
|
|
Puts a 32-byte digest of the validator certificate into vanityData, which is
|
|
|
|
Puts a 32-byte digest of the validator certificate into vanityData, which is
|
|
|
|
@ -16,14 +16,14 @@ Consensus on chain 2800 remains classical secp256k1 ECDSA. This binds a
|
|
|
|
post-quantum certificate to the block hash; it does not make consensus
|
|
|
|
post-quantum certificate to the block hash; it does not make consensus
|
|
|
|
post-quantum.
|
|
|
|
post-quantum.
|
|
|
|
---
|
|
|
|
---
|
|
|
|
.../org/hyperledger/besu/cli/BesuCommand.java | 18 +
|
|
|
|
.../org/hyperledger/besu/cli/BesuCommand.java | 24 +
|
|
|
|
.../cli/options/AerePqEmergencyOptions.java | 245 ++
|
|
|
|
.../cli/options/AerePqEmergencyOptions.java | 245 ++
|
|
|
|
.../controller/QbftBesuControllerBuilder.java | 267 ++
|
|
|
|
.../controller/QbftBesuControllerBuilder.java | 273 ++
|
|
|
|
.../options/AerePqEmergencyOptionsTest.java | 136 +
|
|
|
|
.../options/AerePqEmergencyOptionsTest.java | 136 +
|
|
|
|
.../besu/config/JsonGenesisConfigOptions.java | 17 +
|
|
|
|
.../besu/config/JsonGenesisConfigOptions.java | 23 +
|
|
|
|
consensus/common/build.gradle | 1 +
|
|
|
|
consensus/common/build.gradle | 7 +
|
|
|
|
.../common/bft/BftBlockInterface.java | 16 +-
|
|
|
|
.../common/bft/BftBlockInterface.java | 22 +-
|
|
|
|
.../consensus/common/bft/BftExtraData.java | 44 +-
|
|
|
|
.../consensus/common/bft/BftExtraData.java | 50 +-
|
|
|
|
.../besu/consensus/common/bft/FalconSeal.java | 88 +
|
|
|
|
.../besu/consensus/common/bft/FalconSeal.java | 88 +
|
|
|
|
.../common/bft/FalconSealSupport.java | 3709 +++++++++++++++++
|
|
|
|
.../common/bft/FalconSealSupport.java | 3709 +++++++++++++++++
|
|
|
|
.../besu/consensus/common/bft/PqAnchor.java | 335 ++
|
|
|
|
.../besu/consensus/common/bft/PqAnchor.java | 335 ++
|
|
|
|
@ -37,7 +37,7 @@ post-quantum.
|
|
|
|
.../consensus/common/bft/PqSealCache.java | 351 ++
|
|
|
|
.../consensus/common/bft/PqSealCache.java | 351 ++
|
|
|
|
.../consensus/common/bft/PqSealStore.java | 384 ++
|
|
|
|
.../consensus/common/bft/PqSealStore.java | 384 ++
|
|
|
|
.../common/bft/PqSignerRegistry.java | 172 +
|
|
|
|
.../common/bft/PqSignerRegistry.java | 172 +
|
|
|
|
.../blockcreation/BftBlockCreatorFactory.java | 19 +-
|
|
|
|
.../blockcreation/BftBlockCreatorFactory.java | 25 +-
|
|
|
|
.../bft/blockcreation/PqAnchorProducer.java | 347 ++
|
|
|
|
.../bft/blockcreation/PqAnchorProducer.java | 347 ++
|
|
|
|
.../common/bft/tools/PqRegistryHashTool.java | 231 +
|
|
|
|
.../common/bft/tools/PqRegistryHashTool.java | 231 +
|
|
|
|
.../common/bft/FalconAttachIntervalTest.java | 232 ++
|
|
|
|
.../common/bft/FalconAttachIntervalTest.java | 232 ++
|
|
|
|
@ -63,18 +63,18 @@ post-quantum.
|
|
|
|
.../common/bft/PqSignedHeightTest.java | 403 ++
|
|
|
|
.../common/bft/PqSignedHeightTest.java | 403 ++
|
|
|
|
.../common/bft/PqStartupHistoryTest.java | 325 ++
|
|
|
|
.../common/bft/PqStartupHistoryTest.java | 325 ++
|
|
|
|
.../consensus/common/bft/PqV2Fixture.java | 233 ++
|
|
|
|
.../consensus/common/bft/PqV2Fixture.java | 233 ++
|
|
|
|
.../qbft/core/messagewrappers/Commit.java | 12 +
|
|
|
|
.../qbft/core/messagewrappers/Commit.java | 18 +
|
|
|
|
.../core/network/QbftMessageTransmitter.java | 19 +-
|
|
|
|
.../core/network/QbftMessageTransmitter.java | 25 +-
|
|
|
|
.../qbft/core/payload/CommitPayload.java | 141 +-
|
|
|
|
.../qbft/core/payload/CommitPayload.java | 147 +-
|
|
|
|
.../qbft/core/payload/MessageFactory.java | 22 +-
|
|
|
|
.../qbft/core/payload/MessageFactory.java | 28 +-
|
|
|
|
.../statemachine/QbftBlockHeightManager.java | 23 +-
|
|
|
|
.../statemachine/QbftBlockHeightManager.java | 29 +-
|
|
|
|
.../qbft/core/statemachine/QbftRound.java | 185 +-
|
|
|
|
.../qbft/core/statemachine/QbftRound.java | 191 +-
|
|
|
|
.../qbft/core/statemachine/RoundState.java | 19 +
|
|
|
|
.../qbft/core/statemachine/RoundState.java | 25 +
|
|
|
|
.../qbft/core/types/QbftBlockCreator.java | 31 +
|
|
|
|
.../qbft/core/types/QbftBlockCreator.java | 37 +
|
|
|
|
...ftBlockHeaderValidationRulesetFactory.java | 104 +-
|
|
|
|
...ftBlockHeaderValidationRulesetFactory.java | 110 +-
|
|
|
|
.../consensus/qbft/QbftExtraDataCodec.java | 86 +-
|
|
|
|
.../consensus/qbft/QbftExtraDataCodec.java | 92 +-
|
|
|
|
.../qbft/adaptor/QbftBlockCreatorAdaptor.java | 208 +-
|
|
|
|
.../qbft/adaptor/QbftBlockCreatorAdaptor.java | 214 +-
|
|
|
|
.../QbftBlockCreatorFactory.java | 29 +-
|
|
|
|
.../QbftBlockCreatorFactory.java | 35 +-
|
|
|
|
.../FalconSealValidationRule.java | 501 +++
|
|
|
|
.../FalconSealValidationRule.java | 501 +++
|
|
|
|
.../PqAnchorDigestAttachedRule.java | 115 +
|
|
|
|
.../PqAnchorDigestAttachedRule.java | 115 +
|
|
|
|
.../PqAnchorDigestRule.java | 207 +
|
|
|
|
.../PqAnchorDigestRule.java | 207 +
|
|
|
|
@ -90,8 +90,8 @@ post-quantum.
|
|
|
|
.../PqArmedWithoutRegistryTest.java | 185 +
|
|
|
|
.../PqArmedWithoutRegistryTest.java | 185 +
|
|
|
|
.../PqEmergencyShoutRuleTest.java | 78 +
|
|
|
|
.../PqEmergencyShoutRuleTest.java | 78 +
|
|
|
|
.../PqForkGateFeedTest.java | 189 +
|
|
|
|
.../PqForkGateFeedTest.java | 189 +
|
|
|
|
.../eth/sync/DownloadHeadersStep.java | 97 +-
|
|
|
|
.../eth/sync/DownloadHeadersStep.java | 103 +-
|
|
|
|
75 files changed, 24017 insertions(+), 45 deletions(-)
|
|
|
|
75 files changed, 24137 insertions(+), 45 deletions(-)
|
|
|
|
create mode 100755 app/src/main/java/org/hyperledger/besu/cli/options/AerePqEmergencyOptions.java
|
|
|
|
create mode 100755 app/src/main/java/org/hyperledger/besu/cli/options/AerePqEmergencyOptions.java
|
|
|
|
create mode 100755 app/src/test/java/org/hyperledger/besu/cli/options/AerePqEmergencyOptionsTest.java
|
|
|
|
create mode 100755 app/src/test/java/org/hyperledger/besu/cli/options/AerePqEmergencyOptionsTest.java
|
|
|
|
create mode 100755 consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/FalconSeal.java
|
|
|
|
create mode 100755 consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/FalconSeal.java
|
|
|
|
@ -149,10 +149,23 @@ post-quantum.
|
|
|
|
create mode 100755 consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/headervalidationrules/PqForkGateFeedTest.java
|
|
|
|
create mode 100755 consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/headervalidationrules/PqForkGateFeedTest.java
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java b/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java
|
|
|
|
diff --git a/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java b/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java
|
|
|
|
index 2767db2eb..8441bb64f 100644
|
|
|
|
index 2767db2eb..df19c1dd2 100644
|
|
|
|
--- a/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java
|
|
|
|
--- a/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java
|
|
|
|
+++ b/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java
|
|
|
|
+++ b/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java
|
|
|
|
@@ -41,6 +41,7 @@ import org.hyperledger.besu.cli.config.ProfilesCompletionCandidates;
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.cli;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -41,6 +47,7 @@ import org.hyperledger.besu.cli.config.ProfilesCompletionCandidates;
|
|
|
|
import org.hyperledger.besu.cli.custom.JsonRPCAllowlistHostsProperty;
|
|
|
|
import org.hyperledger.besu.cli.custom.JsonRPCAllowlistHostsProperty;
|
|
|
|
import org.hyperledger.besu.cli.error.BesuExecutionExceptionHandler;
|
|
|
|
import org.hyperledger.besu.cli.error.BesuExecutionExceptionHandler;
|
|
|
|
import org.hyperledger.besu.cli.error.BesuParameterExceptionHandler;
|
|
|
|
import org.hyperledger.besu.cli.error.BesuParameterExceptionHandler;
|
|
|
|
@ -160,7 +173,7 @@ index 2767db2eb..8441bb64f 100644
|
|
|
|
import org.hyperledger.besu.cli.options.ApiConfigurationOptions;
|
|
|
|
import org.hyperledger.besu.cli.options.ApiConfigurationOptions;
|
|
|
|
import org.hyperledger.besu.cli.options.BalConfigurationOptions;
|
|
|
|
import org.hyperledger.besu.cli.options.BalConfigurationOptions;
|
|
|
|
import org.hyperledger.besu.cli.options.ChainPruningOptions;
|
|
|
|
import org.hyperledger.besu.cli.options.ChainPruningOptions;
|
|
|
|
@@ -299,6 +300,13 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
|
|
|
@@ -299,6 +306,13 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
|
|
|
private final ChainPruningOptions unstableChainPruningOptions = ChainPruningOptions.create();
|
|
|
|
private final ChainPruningOptions unstableChainPruningOptions = ChainPruningOptions.create();
|
|
|
|
private final QBFTOptions unstableQbftOptions = QBFTOptions.create();
|
|
|
|
private final QBFTOptions unstableQbftOptions = QBFTOptions.create();
|
|
|
|
|
|
|
|
|
|
|
|
@ -174,7 +187,7 @@ index 2767db2eb..8441bb64f 100644
|
|
|
|
// stable CLI options
|
|
|
|
// stable CLI options
|
|
|
|
final DataStorageOptions dataStorageOptions = DataStorageOptions.create();
|
|
|
|
final DataStorageOptions dataStorageOptions = DataStorageOptions.create();
|
|
|
|
private final EthstatsOptions ethstatsOptions = EthstatsOptions.create();
|
|
|
|
private final EthstatsOptions ethstatsOptions = EthstatsOptions.create();
|
|
|
|
@@ -950,6 +958,13 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
|
|
|
@@ -950,6 +964,13 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
|
|
|
|
|
|
|
|
|
|
|
logger.info("Starting Besu");
|
|
|
|
logger.info("Starting Besu");
|
|
|
|
|
|
|
|
|
|
|
|
@ -188,7 +201,7 @@ index 2767db2eb..8441bb64f 100644
|
|
|
|
// set merge config on the basis of genesis config
|
|
|
|
// set merge config on the basis of genesis config
|
|
|
|
setMergeConfigOptions();
|
|
|
|
setMergeConfigOptions();
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1243,6 +1258,9 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
|
|
|
@@ -1243,6 +1264,9 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
|
|
|
|
.put("IPC Options", unstableIpcOptions)
|
|
|
|
.put("IPC Options", unstableIpcOptions)
|
|
|
|
.put("Chain Data Pruning Options", unstableChainPruningOptions)
|
|
|
|
.put("Chain Data Pruning Options", unstableChainPruningOptions)
|
|
|
|
.put("QBFT Options", unstableQbftOptions)
|
|
|
|
.put("QBFT Options", unstableQbftOptions)
|
|
|
|
@ -450,10 +463,23 @@ index 000000000..0d685347a
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
diff --git a/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java
|
|
|
|
diff --git a/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java
|
|
|
|
index 7fbf58d0b..f6dcb1e56 100644
|
|
|
|
index 7fbf58d0b..c245c06d2 100644
|
|
|
|
--- a/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java
|
|
|
|
--- a/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java
|
|
|
|
+++ b/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java
|
|
|
|
+++ b/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java
|
|
|
|
@@ -18,6 +18,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -18,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.config.BftConfigOptions;
|
|
|
|
import org.hyperledger.besu.config.BftConfigOptions;
|
|
|
|
import org.hyperledger.besu.config.BftFork;
|
|
|
|
import org.hyperledger.besu.config.BftFork;
|
|
|
|
@ -461,7 +487,7 @@ index 7fbf58d0b..f6dcb1e56 100644
|
|
|
|
import org.hyperledger.besu.config.QbftConfigOptions;
|
|
|
|
import org.hyperledger.besu.config.QbftConfigOptions;
|
|
|
|
import org.hyperledger.besu.config.QbftFork;
|
|
|
|
import org.hyperledger.besu.config.QbftFork;
|
|
|
|
import org.hyperledger.besu.consensus.common.BftValidatorOverrides;
|
|
|
|
import org.hyperledger.besu.consensus.common.BftValidatorOverrides;
|
|
|
|
@@ -33,7 +34,14 @@ import org.hyperledger.besu.consensus.common.bft.BftRoundExpiryTimeCalculator;
|
|
|
|
@@ -33,7 +40,14 @@ import org.hyperledger.besu.consensus.common.bft.BftRoundExpiryTimeCalculator;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BlockTimer;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BlockTimer;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.EthSynchronizerUpdater;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.EthSynchronizerUpdater;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.EventMultiplexer;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.EventMultiplexer;
|
|
|
|
@ -476,7 +502,7 @@ index 7fbf58d0b..f6dcb1e56 100644
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.RoundTimer;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.RoundTimer;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.UniqueMessageMulticaster;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.UniqueMessageMulticaster;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.blockcreation.BftMiningCoordinator;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.blockcreation.BftMiningCoordinator;
|
|
|
|
@@ -197,6 +205,212 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder {
|
|
|
|
@@ -197,6 +211,212 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder {
|
|
|
|
final SyncState syncState,
|
|
|
|
final SyncState syncState,
|
|
|
|
final EthProtocolManager ethProtocolManager) {
|
|
|
|
final EthProtocolManager ethProtocolManager) {
|
|
|
|
final MutableBlockchain blockchain = protocolContext.getBlockchain();
|
|
|
|
final MutableBlockchain blockchain = protocolContext.getBlockchain();
|
|
|
|
@ -689,7 +715,7 @@ index 7fbf58d0b..f6dcb1e56 100644
|
|
|
|
final BftExecutors bftExecutors =
|
|
|
|
final BftExecutors bftExecutors =
|
|
|
|
BftExecutors.create(metricsSystem, BftExecutors.ConsensusType.QBFT);
|
|
|
|
BftExecutors.create(metricsSystem, BftExecutors.ConsensusType.QBFT);
|
|
|
|
final QbftBlockCodec blockEncoder = new QbftBlockCodecAdaptor(qbftExtraDataCodec);
|
|
|
|
final QbftBlockCodec blockEncoder = new QbftBlockCodecAdaptor(qbftExtraDataCodec);
|
|
|
|
@@ -226,6 +440,22 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder {
|
|
|
|
@@ -226,6 +446,22 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder {
|
|
|
|
validatorProvider =
|
|
|
|
validatorProvider =
|
|
|
|
protocolContext.getConsensusContext(BftContext.class).getValidatorProvider();
|
|
|
|
protocolContext.getConsensusContext(BftContext.class).getValidatorProvider();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -712,7 +738,7 @@ index 7fbf58d0b..f6dcb1e56 100644
|
|
|
|
final QbftValidatorProvider qbftValidatorProvider =
|
|
|
|
final QbftValidatorProvider qbftValidatorProvider =
|
|
|
|
new QbftValidatorProviderAdaptor(validatorProvider);
|
|
|
|
new QbftValidatorProviderAdaptor(validatorProvider);
|
|
|
|
|
|
|
|
|
|
|
|
@@ -447,6 +677,43 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder {
|
|
|
|
@@ -447,6 +683,43 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder {
|
|
|
|
return new BftValidatorOverrides(result);
|
|
|
|
return new BftValidatorOverrides(result);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -899,10 +925,23 @@ index 000000000..e74459f24
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
diff --git a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java
|
|
|
|
diff --git a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java
|
|
|
|
index eeaa4ac3e..fb0b9edb6 100644
|
|
|
|
index eeaa4ac3e..e0d6a6025 100644
|
|
|
|
--- a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java
|
|
|
|
--- a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java
|
|
|
|
+++ b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java
|
|
|
|
+++ b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java
|
|
|
|
@@ -639,4 +639,21 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions {
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.config;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -639,4 +645,21 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions {
|
|
|
|
public int hashCode() {
|
|
|
|
public int hashCode() {
|
|
|
|
return Objects.hash(configRoot, configOverrides);
|
|
|
|
return Objects.hash(configRoot, configOverrides);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -925,10 +964,23 @@ index eeaa4ac3e..fb0b9edb6 100644
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/consensus/common/build.gradle b/consensus/common/build.gradle
|
|
|
|
diff --git a/consensus/common/build.gradle b/consensus/common/build.gradle
|
|
|
|
index 499c974f1..c603ca03c 100644
|
|
|
|
index 499c974f1..a6f5276f2 100644
|
|
|
|
--- a/consensus/common/build.gradle
|
|
|
|
--- a/consensus/common/build.gradle
|
|
|
|
+++ b/consensus/common/build.gradle
|
|
|
|
+++ b/consensus/common/build.gradle
|
|
|
|
@@ -47,6 +47,7 @@ dependencies {
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
apply plugin: 'java-library'
|
|
|
|
|
|
|
|
@@ -47,6 +53,7 @@ dependencies {
|
|
|
|
|
|
|
|
|
|
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind'
|
|
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind'
|
|
|
|
implementation 'com.google.guava:guava'
|
|
|
|
implementation 'com.google.guava:guava'
|
|
|
|
@ -937,10 +989,23 @@ index 499c974f1..c603ca03c 100644
|
|
|
|
|
|
|
|
|
|
|
|
testImplementation project(':config')
|
|
|
|
testImplementation project(':config')
|
|
|
|
diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java
|
|
|
|
diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java
|
|
|
|
index b7a886c29..2e565eceb 100644
|
|
|
|
index b7a886c29..da9a3e3ae 100644
|
|
|
|
--- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java
|
|
|
|
--- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java
|
|
|
|
+++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java
|
|
|
|
+++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftBlockInterface.java
|
|
|
|
@@ -79,6 +79,19 @@ public class BftBlockInterface implements BlockInterface {
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.common.bft;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -79,6 +85,19 @@ public class BftBlockInterface implements BlockInterface {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Replace round in block.
|
|
|
|
* Replace round in block.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
@ -960,7 +1025,7 @@ index b7a886c29..2e565eceb 100644
|
|
|
|
* @param block the block
|
|
|
|
* @param block the block
|
|
|
|
* @param round the round
|
|
|
|
* @param round the round
|
|
|
|
* @param blockHeaderFunctions the block header functions
|
|
|
|
* @param blockHeaderFunctions the block header functions
|
|
|
|
@@ -93,7 +106,8 @@ public class BftBlockInterface implements BlockInterface {
|
|
|
|
@@ -93,7 +112,8 @@ public class BftBlockInterface implements BlockInterface {
|
|
|
|
prevExtraData.getSeals(),
|
|
|
|
prevExtraData.getSeals(),
|
|
|
|
prevExtraData.getVote(),
|
|
|
|
prevExtraData.getVote(),
|
|
|
|
round,
|
|
|
|
round,
|
|
|
|
@ -971,10 +1036,23 @@ index b7a886c29..2e565eceb 100644
|
|
|
|
final BlockHeaderBuilder headerBuilder = BlockHeaderBuilder.fromHeader(block.getHeader());
|
|
|
|
final BlockHeaderBuilder headerBuilder = BlockHeaderBuilder.fromHeader(block.getHeader());
|
|
|
|
headerBuilder
|
|
|
|
headerBuilder
|
|
|
|
diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java
|
|
|
|
diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java
|
|
|
|
index a24c33a93..e911ca44d 100644
|
|
|
|
index a24c33a93..913f68f0a 100644
|
|
|
|
--- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java
|
|
|
|
--- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java
|
|
|
|
+++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java
|
|
|
|
+++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BftExtraData.java
|
|
|
|
@@ -21,6 +21,7 @@ import org.hyperledger.besu.datatypes.Address;
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.common.bft;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -21,6 +27,7 @@ import org.hyperledger.besu.datatypes.Address;
|
|
|
|
import org.hyperledger.besu.ethereum.core.ParsedExtraData;
|
|
|
|
import org.hyperledger.besu.ethereum.core.ParsedExtraData;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
import java.util.Collection;
|
|
|
|
@ -982,7 +1060,7 @@ index a24c33a93..e911ca44d 100644
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.Optional;
|
|
|
|
|
|
|
|
|
|
|
|
import org.apache.tuweni.bytes.Bytes;
|
|
|
|
import org.apache.tuweni.bytes.Bytes;
|
|
|
|
@@ -34,7 +35,15 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
@@ -34,7 +41,15 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
private final int round;
|
|
|
|
private final int round;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@ -999,7 +1077,7 @@ index a24c33a93..e911ca44d 100644
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param vanityData the vanity data
|
|
|
|
* @param vanityData the vanity data
|
|
|
|
* @param seals the seals
|
|
|
|
* @param seals the seals
|
|
|
|
@@ -48,14 +57,36 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
@@ -48,14 +63,36 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
final Optional<Vote> vote,
|
|
|
|
final Optional<Vote> vote,
|
|
|
|
final int round,
|
|
|
|
final int round,
|
|
|
|
final Collection<Address> validators) {
|
|
|
|
final Collection<Address> validators) {
|
|
|
|
@ -1036,7 +1114,7 @@ index a24c33a93..e911ca44d 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@@ -103,6 +134,15 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
@@ -103,6 +140,15 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
return round;
|
|
|
|
return round;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1052,7 +1130,7 @@ index a24c33a93..e911ca44d 100644
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
public String toString() {
|
|
|
|
return "BftExtraData{"
|
|
|
|
return "BftExtraData{"
|
|
|
|
@@ -116,6 +156,8 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
@@ -116,6 +162,8 @@ public class BftExtraData implements ParsedExtraData {
|
|
|
|
+ vote
|
|
|
|
+ vote
|
|
|
|
+ ", round="
|
|
|
|
+ ", round="
|
|
|
|
+ round
|
|
|
|
+ round
|
|
|
|
@ -11333,10 +11411,23 @@ index 000000000..3646b9a22
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java
|
|
|
|
diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java
|
|
|
|
index 20c072202..c5a78af24 100644
|
|
|
|
index 20c072202..1ecdcbf34 100644
|
|
|
|
--- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java
|
|
|
|
--- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java
|
|
|
|
+++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java
|
|
|
|
+++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftBlockCreatorFactory.java
|
|
|
|
@@ -157,6 +157,23 @@ public class BftBlockCreatorFactory<T extends BftConfigOptions> {
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.common.bft.blockcreation;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -157,6 +163,23 @@ public class BftBlockCreatorFactory<T extends BftConfigOptions> {
|
|
|
|
* @return the bytes
|
|
|
|
* @return the bytes
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public Bytes createExtraData(final int round, final BlockHeader parentHeader) {
|
|
|
|
public Bytes createExtraData(final int round, final BlockHeader parentHeader) {
|
|
|
|
@ -11360,7 +11451,7 @@ index 20c072202..c5a78af24 100644
|
|
|
|
final BftContext bftContext = protocolContext.getConsensusContext(BftContext.class);
|
|
|
|
final BftContext bftContext = protocolContext.getConsensusContext(BftContext.class);
|
|
|
|
final ValidatorProvider validatorProvider = bftContext.getValidatorProvider();
|
|
|
|
final ValidatorProvider validatorProvider = bftContext.getValidatorProvider();
|
|
|
|
Optional<VoteProvider> voteProviderAfterBlock =
|
|
|
|
Optional<VoteProvider> voteProviderAfterBlock =
|
|
|
|
@@ -177,7 +194,7 @@ public class BftBlockCreatorFactory<T extends BftConfigOptions> {
|
|
|
|
@@ -177,7 +200,7 @@ public class BftBlockCreatorFactory<T extends BftConfigOptions> {
|
|
|
|
round,
|
|
|
|
round,
|
|
|
|
validators);
|
|
|
|
validators);
|
|
|
|
|
|
|
|
|
|
|
|
@ -20167,10 +20258,19 @@ index 000000000..2c7108f4d
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java
|
|
|
|
index 142069ec7..7e89e5b8c 100644
|
|
|
|
index 142069ec7..b3ba74635 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/messagewrappers/Commit.java
|
|
|
|
@@ -14,6 +14,7 @@
|
|
|
|
@@ -11,9 +11,16 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.messagewrappers;
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.messagewrappers;
|
|
|
|
|
|
|
|
|
|
|
|
@ -20178,7 +20278,7 @@ index 142069ec7..7e89e5b8c 100644
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.messagewrappers.BftMessage;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.messagewrappers.BftMessage;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.payload.CommitPayload;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.payload.CommitPayload;
|
|
|
|
@@ -22,6 +23,8 @@ import org.hyperledger.besu.datatypes.Hash;
|
|
|
|
@@ -22,6 +29,8 @@ import org.hyperledger.besu.datatypes.Hash;
|
|
|
|
import org.hyperledger.besu.ethereum.rlp.RLP;
|
|
|
|
import org.hyperledger.besu.ethereum.rlp.RLP;
|
|
|
|
import org.hyperledger.besu.ethereum.rlp.RLPInput;
|
|
|
|
import org.hyperledger.besu.ethereum.rlp.RLPInput;
|
|
|
|
|
|
|
|
|
|
|
|
@ -20187,7 +20287,7 @@ index 142069ec7..7e89e5b8c 100644
|
|
|
|
import org.apache.tuweni.bytes.Bytes;
|
|
|
|
import org.apache.tuweni.bytes.Bytes;
|
|
|
|
|
|
|
|
|
|
|
|
/** The Commit payload message. */
|
|
|
|
/** The Commit payload message. */
|
|
|
|
@@ -45,6 +48,15 @@ public class Commit extends BftMessage<CommitPayload> {
|
|
|
|
@@ -45,6 +54,15 @@ public class Commit extends BftMessage<CommitPayload> {
|
|
|
|
return getPayload().getCommitSeal();
|
|
|
|
return getPayload().getCommitSeal();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -20204,10 +20304,20 @@ index 142069ec7..7e89e5b8c 100644
|
|
|
|
* Gets digest.
|
|
|
|
* Gets digest.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java
|
|
|
|
index 30156ed6d..ebd07717a 100644
|
|
|
|
index 30156ed6d..b0ba9ea09 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/network/QbftMessageTransmitter.java
|
|
|
|
@@ -15,6 +15,7 @@
|
|
|
|
@@ -11,10 +11,17 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.network;
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.network;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
@ -20215,7 +20325,7 @@ index 30156ed6d..ebd07717a 100644
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.network.ValidatorMulticaster;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.network.ValidatorMulticaster;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagedata.CommitMessageData;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagedata.CommitMessageData;
|
|
|
|
@@ -118,8 +119,24 @@ public class QbftMessageTransmitter {
|
|
|
|
@@ -118,8 +125,24 @@ public class QbftMessageTransmitter {
|
|
|
|
final ConsensusRoundIdentifier roundIdentifier,
|
|
|
|
final ConsensusRoundIdentifier roundIdentifier,
|
|
|
|
final Hash digest,
|
|
|
|
final Hash digest,
|
|
|
|
final SECPSignature commitSeal) {
|
|
|
|
final SECPSignature commitSeal) {
|
|
|
|
@ -20242,10 +20352,20 @@ index 30156ed6d..ebd07717a 100644
|
|
|
|
final CommitMessageData message = CommitMessageData.create(data);
|
|
|
|
final CommitMessageData message = CommitMessageData.create(data);
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java
|
|
|
|
index db481acd0..4aefac65f 100644
|
|
|
|
index db481acd0..e55efb55c 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/CommitPayload.java
|
|
|
|
@@ -15,26 +15,44 @@
|
|
|
|
@@ -11,30 +11,54 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.payload;
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.payload;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
@ -20292,7 +20412,7 @@ index db481acd0..4aefac65f 100644
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param roundIdentifier the round identifier
|
|
|
|
* @param roundIdentifier the round identifier
|
|
|
|
* @param digest the digest
|
|
|
|
* @param digest the digest
|
|
|
|
@@ -44,26 +62,107 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
@@ -44,26 +68,107 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
final ConsensusRoundIdentifier roundIdentifier,
|
|
|
|
final ConsensusRoundIdentifier roundIdentifier,
|
|
|
|
final Hash digest,
|
|
|
|
final Hash digest,
|
|
|
|
final SECPSignature commitSeal) {
|
|
|
|
final SECPSignature commitSeal) {
|
|
|
|
@ -20371,8 +20491,7 @@ index db481acd0..4aefac65f 100644
|
|
|
|
- rlpInput.readBytes(SignatureAlgorithmFactory.getInstance()::decodeSignature);
|
|
|
|
- rlpInput.readBytes(SignatureAlgorithmFactory.getInstance()::decodeSignature);
|
|
|
|
- rlpInput.leaveList();
|
|
|
|
- rlpInput.leaveList();
|
|
|
|
+ payloadRlp.readBytes(SignatureAlgorithmFactory.getInstance()::decodeSignature);
|
|
|
|
+ payloadRlp.readBytes(SignatureAlgorithmFactory.getInstance()::decodeSignature);
|
|
|
|
|
|
|
|
+
|
|
|
|
- return new CommitPayload(roundIdentifier, digest, commitSeal);
|
|
|
|
|
|
|
|
+ // AERE hybrid PQC: an OPTIONAL parallel Falcon-512 seal [index, sig] may follow the ECDSA seal.
|
|
|
|
+ // AERE hybrid PQC: an OPTIONAL parallel Falcon-512 seal [index, sig] may follow the ECDSA seal.
|
|
|
|
+ // A Falcon-less commit ends the list here and decodes to Optional.empty().
|
|
|
|
+ // A Falcon-less commit ends the list here and decodes to Optional.empty().
|
|
|
|
+ Optional<FalconSeal> falconSeal = Optional.empty();
|
|
|
|
+ Optional<FalconSeal> falconSeal = Optional.empty();
|
|
|
|
@ -20386,7 +20505,8 @@ index db481acd0..4aefac65f 100644
|
|
|
|
+ payloadRlp.leaveList();
|
|
|
|
+ payloadRlp.leaveList();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ final CommitPayload payload = new CommitPayload(roundIdentifier, digest, commitSeal, falconSeal);
|
|
|
|
+ final CommitPayload payload = new CommitPayload(roundIdentifier, digest, commitSeal, falconSeal);
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
- return new CommitPayload(roundIdentifier, digest, commitSeal);
|
|
|
|
+ // AERE FIX-MALEABILITATE: exactly one encoding is accepted for a given payload value. This
|
|
|
|
+ // AERE FIX-MALEABILITATE: exactly one encoding is accepted for a given payload value. This
|
|
|
|
+ // catches everything the RLP reader itself would tolerate, including any element the decode
|
|
|
|
+ // catches everything the RLP reader itself would tolerate, including any element the decode
|
|
|
|
+ // path above does not consume, and any encoding difference the reader does not consider an
|
|
|
|
+ // path above does not consume, and any encoding difference the reader does not consider an
|
|
|
|
@ -20406,7 +20526,7 @@ index db481acd0..4aefac65f 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@@ -72,6 +171,17 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
@@ -72,6 +177,17 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
writeConsensusRound(rlpOutput);
|
|
|
|
writeConsensusRound(rlpOutput);
|
|
|
|
rlpOutput.writeBytes(digest.getBytes());
|
|
|
|
rlpOutput.writeBytes(digest.getBytes());
|
|
|
|
rlpOutput.writeBytes(commitSeal.encodedBytes());
|
|
|
|
rlpOutput.writeBytes(commitSeal.encodedBytes());
|
|
|
|
@ -20424,7 +20544,7 @@ index db481acd0..4aefac65f 100644
|
|
|
|
rlpOutput.endList();
|
|
|
|
rlpOutput.endList();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -98,6 +208,15 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
@@ -98,6 +214,15 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
return commitSeal;
|
|
|
|
return commitSeal;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -20440,7 +20560,7 @@ index db481acd0..4aefac65f 100644
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public ConsensusRoundIdentifier getRoundIdentifier() {
|
|
|
|
public ConsensusRoundIdentifier getRoundIdentifier() {
|
|
|
|
return roundIdentifier;
|
|
|
|
return roundIdentifier;
|
|
|
|
@@ -114,12 +233,13 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
@@ -114,12 +239,13 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
final CommitPayload that = (CommitPayload) o;
|
|
|
|
final CommitPayload that = (CommitPayload) o;
|
|
|
|
return Objects.equals(roundIdentifier, that.roundIdentifier)
|
|
|
|
return Objects.equals(roundIdentifier, that.roundIdentifier)
|
|
|
|
&& Objects.equals(digest, that.digest)
|
|
|
|
&& Objects.equals(digest, that.digest)
|
|
|
|
@ -20456,7 +20576,7 @@ index db481acd0..4aefac65f 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@@ -128,6 +248,7 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
@@ -128,6 +254,7 @@ public class CommitPayload extends QbftPayload {
|
|
|
|
.add("roundIdentifier=" + roundIdentifier)
|
|
|
|
.add("roundIdentifier=" + roundIdentifier)
|
|
|
|
.add("digest=" + digest)
|
|
|
|
.add("digest=" + digest)
|
|
|
|
.add("commitSeal=" + commitSeal)
|
|
|
|
.add("commitSeal=" + commitSeal)
|
|
|
|
@ -20465,10 +20585,20 @@ index db481acd0..4aefac65f 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java
|
|
|
|
index 1bcd73ae9..da18fd36d 100644
|
|
|
|
index 1bcd73ae9..7d0e37134 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/payload/MessageFactory.java
|
|
|
|
@@ -15,6 +15,7 @@
|
|
|
|
@@ -11,10 +11,17 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.payload;
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.payload;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
@ -20476,7 +20606,7 @@ index 1bcd73ae9..da18fd36d 100644
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.Payload;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.Payload;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
@@ -116,7 +117,26 @@ public class MessageFactory {
|
|
|
|
@@ -116,7 +123,26 @@ public class MessageFactory {
|
|
|
|
final ConsensusRoundIdentifier roundIdentifier,
|
|
|
|
final ConsensusRoundIdentifier roundIdentifier,
|
|
|
|
final Hash digest,
|
|
|
|
final Hash digest,
|
|
|
|
final SECPSignature commitSeal) {
|
|
|
|
final SECPSignature commitSeal) {
|
|
|
|
@ -20505,10 +20635,22 @@ index 1bcd73ae9..da18fd36d 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java
|
|
|
|
index 49099c2c1..4a20d6b63 100644
|
|
|
|
index 49099c2c1..f8cd07112 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java
|
|
|
|
@@ -17,6 +17,7 @@ package org.hyperledger.besu.consensus.qbft.core.statemachine;
|
|
|
|
@@ -11,12 +11,19 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.statemachine;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.events.RoundExpiry;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.events.RoundExpiry;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.messagewrappers.BftMessage;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.messagewrappers.BftMessage;
|
|
|
|
@ -20516,7 +20658,7 @@ index 49099c2c1..4a20d6b63 100644
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.Payload;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.Payload;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Prepare;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Prepare;
|
|
|
|
@@ -200,8 +201,26 @@ public class QbftBlockHeightManager implements BaseQbftBlockHeightManager {
|
|
|
|
@@ -200,8 +207,26 @@ public class QbftBlockHeightManager implements BaseQbftBlockHeightManager {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
final long headerTimeStampSeconds = Math.round(clock.millis() / 1000D);
|
|
|
|
final long headerTimeStampSeconds = Math.round(clock.millis() / 1000D);
|
|
|
|
@ -20546,10 +20688,22 @@ index 49099c2c1..4a20d6b63 100644
|
|
|
|
final Optional<BlockAccessList> blockAccessList = blockCreationResult.blockAccessList();
|
|
|
|
final Optional<BlockAccessList> blockAccessList = blockCreationResult.blockAccessList();
|
|
|
|
if (!block.isEmpty()) {
|
|
|
|
if (!block.isEmpty()) {
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java
|
|
|
|
index 832149e2f..2b2dd48c9 100644
|
|
|
|
index 832149e2f..054b9c36c 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftRound.java
|
|
|
|
@@ -17,7 +17,13 @@ package org.hyperledger.besu.consensus.qbft.core.statemachine;
|
|
|
|
@@ -11,13 +11,25 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.statemachine;
|
|
|
|
|
|
|
|
|
|
|
|
import static java.util.Collections.emptyList;
|
|
|
|
import static java.util.Collections.emptyList;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
@ -20563,7 +20717,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.payload.SignedData;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Prepare;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Prepare;
|
|
|
|
@@ -42,6 +48,7 @@ import org.hyperledger.besu.ethereum.mainnet.block.access.list.BlockAccessList;
|
|
|
|
@@ -42,6 +54,7 @@ import org.hyperledger.besu.ethereum.mainnet.block.access.list.BlockAccessList;
|
|
|
|
import org.hyperledger.besu.plugin.services.securitymodule.SecurityModuleException;
|
|
|
|
import org.hyperledger.besu.plugin.services.securitymodule.SecurityModuleException;
|
|
|
|
import org.hyperledger.besu.util.Subscribers;
|
|
|
|
import org.hyperledger.besu.util.Subscribers;
|
|
|
|
|
|
|
|
|
|
|
|
@ -20571,7 +20725,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.Optional;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -75,6 +82,22 @@ public class QbftRound {
|
|
|
|
@@ -75,6 +88,22 @@ public class QbftRound {
|
|
|
|
|
|
|
|
|
|
|
|
private final QbftBlockHeader parentHeader;
|
|
|
|
private final QbftBlockHeader parentHeader;
|
|
|
|
|
|
|
|
|
|
|
|
@ -20594,7 +20748,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Instantiates a new Qbft round.
|
|
|
|
* Instantiates a new Qbft round.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
@@ -159,8 +182,26 @@ public class QbftRound {
|
|
|
|
@@ -159,8 +188,26 @@ public class QbftRound {
|
|
|
|
final Optional<BlockAccessList> blockAccessList;
|
|
|
|
final Optional<BlockAccessList> blockAccessList;
|
|
|
|
if (bestPreparedCertificate.isEmpty()) {
|
|
|
|
if (bestPreparedCertificate.isEmpty()) {
|
|
|
|
LOG.debug("Sending proposal with new block. round={}", roundState.getRoundIdentifier());
|
|
|
|
LOG.debug("Sending proposal with new block. round={}", roundState.getRoundIdentifier());
|
|
|
|
@ -20623,7 +20777,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
blockToPublish = blockCreationResult.block();
|
|
|
|
blockToPublish = blockCreationResult.block();
|
|
|
|
blockAccessList = blockCreationResult.blockAccessList();
|
|
|
|
blockAccessList = blockCreationResult.blockAccessList();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
@@ -282,23 +323,33 @@ public class QbftRound {
|
|
|
|
@@ -282,23 +329,33 @@ public class QbftRound {
|
|
|
|
|
|
|
|
|
|
|
|
private boolean updateStateWithProposedBlock(final Proposal msg) {
|
|
|
|
private boolean updateStateWithProposedBlock(final Proposal msg) {
|
|
|
|
final boolean wasPrepared = roundState.isPrepared();
|
|
|
|
final boolean wasPrepared = roundState.isPrepared();
|
|
|
|
@ -20660,7 +20814,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// can automatically add _our_ commit message to the roundState
|
|
|
|
// can automatically add _our_ commit message to the roundState
|
|
|
|
@@ -306,18 +357,26 @@ public class QbftRound {
|
|
|
|
@@ -306,18 +363,26 @@ public class QbftRound {
|
|
|
|
// prepare
|
|
|
|
// prepare
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
final Commit localCommitMessage =
|
|
|
|
final Commit localCommitMessage =
|
|
|
|
@ -20692,7 +20846,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return blockAccepted;
|
|
|
|
return blockAccepted;
|
|
|
|
@@ -330,7 +389,14 @@ public class QbftRound {
|
|
|
|
@@ -330,7 +395,14 @@ public class QbftRound {
|
|
|
|
LOG.debug("Sending commit message. round={}", roundState.getRoundIdentifier());
|
|
|
|
LOG.debug("Sending commit message. round={}", roundState.getRoundIdentifier());
|
|
|
|
final QbftBlock block = roundState.getProposedBlock().get();
|
|
|
|
final QbftBlock block = roundState.getProposedBlock().get();
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
@ -20708,7 +20862,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
// Note: the local-node's commit message was added to RoundState on block acceptance
|
|
|
|
// Note: the local-node's commit message was added to RoundState on block acceptance
|
|
|
|
// and thus does not need to be done again here.
|
|
|
|
// and thus does not need to be done again here.
|
|
|
|
} catch (final SecurityModuleException e) {
|
|
|
|
} catch (final SecurityModuleException e) {
|
|
|
|
@@ -340,20 +406,41 @@ public class QbftRound {
|
|
|
|
@@ -340,20 +412,41 @@ public class QbftRound {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void peerIsCommitted(final Commit msg) {
|
|
|
|
private void peerIsCommitted(final Commit msg) {
|
|
|
|
@ -20756,7 +20910,7 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
|
|
|
|
|
|
|
|
final long blockNumber = blockToImport.getHeader().getNumber();
|
|
|
|
final long blockNumber = blockToImport.getHeader().getNumber();
|
|
|
|
if (getRoundIdentifier().getRoundNumber() > 0) {
|
|
|
|
if (getRoundIdentifier().getRoundNumber() > 0) {
|
|
|
|
@@ -373,19 +460,77 @@ public class QbftRound {
|
|
|
|
@@ -373,19 +466,77 @@ public class QbftRound {
|
|
|
|
final boolean result =
|
|
|
|
final boolean result =
|
|
|
|
blockImporter.importBlock(blockToImport, roundState.getProposedBlockAccessList());
|
|
|
|
blockImporter.importBlock(blockToImport, roundState.getProposedBlockAccessList());
|
|
|
|
if (!result) {
|
|
|
|
if (!result) {
|
|
|
|
@ -20838,10 +20992,20 @@ index 832149e2f..2b2dd48c9 100644
|
|
|
|
|
|
|
|
|
|
|
|
private QbftBlock createCommitBlock(final QbftBlock block) {
|
|
|
|
private QbftBlock createCommitBlock(final QbftBlock block) {
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java
|
|
|
|
index 1c3078602..9a647fb2d 100644
|
|
|
|
index 1c3078602..e7a7aad94 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/RoundState.java
|
|
|
|
@@ -15,6 +15,7 @@
|
|
|
|
@@ -11,10 +11,17 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.statemachine;
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.statemachine;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.ConsensusRoundIdentifier;
|
|
|
|
@ -20849,7 +21013,7 @@ index 1c3078602..9a647fb2d 100644
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Commit;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Prepare;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Prepare;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Proposal;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.core.messagewrappers.Proposal;
|
|
|
|
@@ -27,6 +28,7 @@ import org.hyperledger.besu.ethereum.mainnet.block.access.list.BlockAccessList;
|
|
|
|
@@ -27,6 +34,7 @@ import org.hyperledger.besu.ethereum.mainnet.block.access.list.BlockAccessList;
|
|
|
|
import java.util.Collection;
|
|
|
|
import java.util.Collection;
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
@ -20857,7 +21021,7 @@ index 1c3078602..9a647fb2d 100644
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -196,6 +198,23 @@ public class RoundState {
|
|
|
|
@@ -196,6 +204,23 @@ public class RoundState {
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -20882,10 +21046,19 @@ index 1c3078602..9a647fb2d 100644
|
|
|
|
* Construct prepared certificate.
|
|
|
|
* Construct prepared certificate.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java
|
|
|
|
diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java
|
|
|
|
index afe4fb00e..acc3cc82a 100644
|
|
|
|
index afe4fb00e..c397cab98 100644
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java
|
|
|
|
--- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java
|
|
|
|
+++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftBlockCreator.java
|
|
|
|
@@ -14,10 +14,12 @@
|
|
|
|
@@ -11,13 +11,21 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.types;
|
|
|
|
package org.hyperledger.besu.consensus.qbft.core.types;
|
|
|
|
|
|
|
|
|
|
|
|
@ -20898,7 +21071,7 @@ index afe4fb00e..acc3cc82a 100644
|
|
|
|
import java.util.Optional;
|
|
|
|
import java.util.Optional;
|
|
|
|
|
|
|
|
|
|
|
|
/** Responsible for creating a block. */
|
|
|
|
/** Responsible for creating a block. */
|
|
|
|
@@ -50,4 +52,33 @@ public interface QbftBlockCreator {
|
|
|
|
@@ -50,4 +58,33 @@ public interface QbftBlockCreator {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
QbftBlock createSealedBlock(
|
|
|
|
QbftBlock createSealedBlock(
|
|
|
|
final QbftBlock block, final int roundNumber, final Collection<SECPSignature> commitSeals);
|
|
|
|
final QbftBlock block, final int roundNumber, final Collection<SECPSignature> commitSeals);
|
|
|
|
@ -20933,10 +21106,23 @@ index afe4fb00e..acc3cc82a 100644
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java
|
|
|
|
index f54d7bfcd..d355ed2c0 100644
|
|
|
|
index f54d7bfcd..6c3fba591 100644
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactory.java
|
|
|
|
@@ -18,8 +18,16 @@ import static org.hyperledger.besu.ethereum.mainnet.AbstractGasLimitSpecificatio
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.qbft;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -18,8 +24,16 @@ import static org.hyperledger.besu.ethereum.mainnet.AbstractGasLimitSpecificatio
|
|
|
|
import static org.hyperledger.besu.ethereum.mainnet.AbstractGasLimitSpecification.DEFAULT_MIN_GAS_LIMIT;
|
|
|
|
import static org.hyperledger.besu.ethereum.mainnet.AbstractGasLimitSpecification.DEFAULT_MIN_GAS_LIMIT;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftHelpers;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftHelpers;
|
|
|
|
@ -20953,7 +21139,7 @@ index f54d7bfcd..d355ed2c0 100644
|
|
|
|
import org.hyperledger.besu.consensus.qbft.headervalidationrules.QbftValidatorsValidationRule;
|
|
|
|
import org.hyperledger.besu.consensus.qbft.headervalidationrules.QbftValidatorsValidationRule;
|
|
|
|
import org.hyperledger.besu.ethereum.core.BlockHeader;
|
|
|
|
import org.hyperledger.besu.ethereum.core.BlockHeader;
|
|
|
|
import org.hyperledger.besu.ethereum.mainnet.BlockHeaderValidator;
|
|
|
|
import org.hyperledger.besu.ethereum.mainnet.BlockHeaderValidator;
|
|
|
|
@@ -54,8 +62,75 @@ public class QbftBlockHeaderValidationRulesetFactory {
|
|
|
|
@@ -54,8 +68,75 @@ public class QbftBlockHeaderValidationRulesetFactory {
|
|
|
|
final Duration minimumTimeBetweenBlocks,
|
|
|
|
final Duration minimumTimeBetweenBlocks,
|
|
|
|
final boolean useValidatorContract,
|
|
|
|
final boolean useValidatorContract,
|
|
|
|
final Optional<BaseFeeMarket> baseFeeMarket) {
|
|
|
|
final Optional<BaseFeeMarket> baseFeeMarket) {
|
|
|
|
@ -21029,7 +21215,7 @@ index f54d7bfcd..d355ed2c0 100644
|
|
|
|
.addRule(new AncestryValidationRule())
|
|
|
|
.addRule(new AncestryValidationRule())
|
|
|
|
.addRule(new GasUsageValidationRule())
|
|
|
|
.addRule(new GasUsageValidationRule())
|
|
|
|
.addRule(
|
|
|
|
.addRule(
|
|
|
|
@@ -70,7 +145,34 @@ public class QbftBlockHeaderValidationRulesetFactory {
|
|
|
|
@@ -70,7 +151,34 @@ public class QbftBlockHeaderValidationRulesetFactory {
|
|
|
|
"Difficulty", BlockHeader::getDifficulty, UInt256.ONE))
|
|
|
|
"Difficulty", BlockHeader::getDifficulty, UInt256.ONE))
|
|
|
|
.addRule(new QbftValidatorsValidationRule(useValidatorContract))
|
|
|
|
.addRule(new QbftValidatorsValidationRule(useValidatorContract))
|
|
|
|
.addRule(new BftCoinbaseValidationRule())
|
|
|
|
.addRule(new BftCoinbaseValidationRule())
|
|
|
|
@ -21066,10 +21252,23 @@ index f54d7bfcd..d355ed2c0 100644
|
|
|
|
// Currently the minimum acceptable time between blocks is 1 second. The timestamp of an
|
|
|
|
// Currently the minimum acceptable time between blocks is 1 second. The timestamp of an
|
|
|
|
// Ethereum header is stored as seconds since Unix epoch so blocks being produced more
|
|
|
|
// Ethereum header is stored as seconds since Unix epoch so blocks being produced more
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java
|
|
|
|
index 39c7aa300..55630913c 100644
|
|
|
|
index 39c7aa300..59ef0edd8 100644
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftExtraDataCodec.java
|
|
|
|
@@ -19,6 +19,7 @@ import static org.hyperledger.besu.consensus.common.bft.Vote.DROP_BYTE_VALUE;
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.qbft;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -19,6 +25,7 @@ import static org.hyperledger.besu.consensus.common.bft.Vote.DROP_BYTE_VALUE;
|
|
|
|
|
|
|
|
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraDataCodec;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraDataCodec;
|
|
|
|
@ -21077,7 +21276,7 @@ index 39c7aa300..55630913c 100644
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.Vote;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.Vote;
|
|
|
|
import org.hyperledger.besu.consensus.common.validator.VoteType;
|
|
|
|
import org.hyperledger.besu.consensus.common.validator.VoteType;
|
|
|
|
import org.hyperledger.besu.crypto.SECPSignature;
|
|
|
|
import org.hyperledger.besu.crypto.SECPSignature;
|
|
|
|
@@ -41,6 +42,15 @@ import org.apache.tuweni.bytes.Bytes;
|
|
|
|
@@ -41,6 +48,15 @@ import org.apache.tuweni.bytes.Bytes;
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Represents the data structure stored in the extraData field of the BlockHeader used when
|
|
|
|
* Represents the data structure stored in the extraData field of the BlockHeader used when
|
|
|
|
* operating under an BFT consensus mechanism.
|
|
|
|
* operating under an BFT consensus mechanism.
|
|
|
|
@ -21093,7 +21292,7 @@ index 39c7aa300..55630913c 100644
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class QbftExtraDataCodec extends BftExtraDataCodec {
|
|
|
|
public class QbftExtraDataCodec extends BftExtraDataCodec {
|
|
|
|
private static final ImmutableBiMap<VoteType, Byte> voteToValue =
|
|
|
|
private static final ImmutableBiMap<VoteType, Byte> voteToValue =
|
|
|
|
@@ -102,9 +112,66 @@ public class QbftExtraDataCodec extends BftExtraDataCodec {
|
|
|
|
@@ -102,9 +118,66 @@ public class QbftExtraDataCodec extends BftExtraDataCodec {
|
|
|
|
final List<SECPSignature> seals =
|
|
|
|
final List<SECPSignature> seals =
|
|
|
|
rlpInput.readList(
|
|
|
|
rlpInput.readList(
|
|
|
|
rlp -> SignatureAlgorithmFactory.getInstance().decodeSignature(rlp.readBytes()));
|
|
|
|
rlp -> SignatureAlgorithmFactory.getInstance().decodeSignature(rlp.readBytes()));
|
|
|
|
@ -21162,7 +21361,7 @@ index 39c7aa300..55630913c 100644
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@@ -126,6 +193,21 @@ public class QbftExtraDataCodec extends BftExtraDataCodec {
|
|
|
|
@@ -126,6 +199,21 @@ public class QbftExtraDataCodec extends BftExtraDataCodec {
|
|
|
|
if (encodingType != EncodingType.EXCLUDE_COMMIT_SEALS) {
|
|
|
|
if (encodingType != EncodingType.EXCLUDE_COMMIT_SEALS) {
|
|
|
|
encoder.writeList(
|
|
|
|
encoder.writeList(
|
|
|
|
bftExtraData.getSeals(), (committer, rlp) -> rlp.writeBytes(committer.encodedBytes()));
|
|
|
|
bftExtraData.getSeals(), (committer, rlp) -> rlp.writeBytes(committer.encodedBytes()));
|
|
|
|
@ -21185,10 +21384,19 @@ index 39c7aa300..55630913c 100644
|
|
|
|
encoder.writeEmptyList();
|
|
|
|
encoder.writeEmptyList();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java
|
|
|
|
index 594fe83e4..267d79e00 100644
|
|
|
|
index 594fe83e4..2151f5760 100644
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/adaptor/QbftBlockCreatorAdaptor.java
|
|
|
|
@@ -14,23 +14,42 @@
|
|
|
|
@@ -11,26 +11,51 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
package org.hyperledger.besu.consensus.qbft.adaptor;
|
|
|
|
package org.hyperledger.besu.consensus.qbft.adaptor;
|
|
|
|
|
|
|
|
|
|
|
|
@ -21231,7 +21439,7 @@ index 594fe83e4..267d79e00 100644
|
|
|
|
private final BlockCreator besuBlockCreator;
|
|
|
|
private final BlockCreator besuBlockCreator;
|
|
|
|
private final BftExtraDataCodec bftExtraDataCodec;
|
|
|
|
private final BftExtraDataCodec bftExtraDataCodec;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -59,11 +78,57 @@ public class QbftBlockCreatorAdaptor implements QbftBlockCreator {
|
|
|
|
@@ -59,11 +84,57 @@ public class QbftBlockCreatorAdaptor implements QbftBlockCreator {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public QbftBlock createSealedBlock(
|
|
|
|
public QbftBlock createSealedBlock(
|
|
|
|
final QbftBlock block, final int roundNumber, final Collection<SECPSignature> commitSeals) {
|
|
|
|
final QbftBlock block, final int roundNumber, final Collection<SECPSignature> commitSeals) {
|
|
|
|
@ -21289,7 +21497,7 @@ index 594fe83e4..267d79e00 100644
|
|
|
|
final BftExtraData sealedExtraData =
|
|
|
|
final BftExtraData sealedExtraData =
|
|
|
|
new BftExtraData(
|
|
|
|
new BftExtraData(
|
|
|
|
initialExtraData.getVanityData(),
|
|
|
|
initialExtraData.getVanityData(),
|
|
|
|
@@ -72,12 +137,153 @@ public class QbftBlockCreatorAdaptor implements QbftBlockCreator {
|
|
|
|
@@ -72,12 +143,153 @@ public class QbftBlockCreatorAdaptor implements QbftBlockCreator {
|
|
|
|
roundNumber,
|
|
|
|
roundNumber,
|
|
|
|
initialExtraData.getValidators());
|
|
|
|
initialExtraData.getValidators());
|
|
|
|
|
|
|
|
|
|
|
|
@ -21445,10 +21653,23 @@ index 594fe83e4..267d79e00 100644
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java
|
|
|
|
diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java
|
|
|
|
index 5e6de291b..242efbec5 100644
|
|
|
|
index 5e6de291b..cabeba99c 100644
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java
|
|
|
|
--- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java
|
|
|
|
+++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/blockcreation/QbftBlockCreatorFactory.java
|
|
|
|
@@ -20,6 +20,7 @@ import org.hyperledger.besu.consensus.common.ForksSchedule;
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.consensus.qbft.blockcreation;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -20,6 +26,7 @@ import org.hyperledger.besu.consensus.common.ForksSchedule;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraData;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraDataCodec;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.BftExtraDataCodec;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.blockcreation.BftBlockCreatorFactory;
|
|
|
|
import org.hyperledger.besu.consensus.common.bft.blockcreation.BftBlockCreatorFactory;
|
|
|
|
@ -21456,7 +21677,7 @@ index 5e6de291b..242efbec5 100644
|
|
|
|
import org.hyperledger.besu.datatypes.Address;
|
|
|
|
import org.hyperledger.besu.datatypes.Address;
|
|
|
|
import org.hyperledger.besu.ethereum.ProtocolContext;
|
|
|
|
import org.hyperledger.besu.ethereum.ProtocolContext;
|
|
|
|
import org.hyperledger.besu.ethereum.core.BlockHeader;
|
|
|
|
import org.hyperledger.besu.ethereum.core.BlockHeader;
|
|
|
|
@@ -67,14 +68,34 @@ public class QbftBlockCreatorFactory extends BftBlockCreatorFactory<QbftConfigOp
|
|
|
|
@@ -67,14 +74,34 @@ public class QbftBlockCreatorFactory extends BftBlockCreatorFactory<QbftConfigOp
|
|
|
|
ethScheduler);
|
|
|
|
ethScheduler);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -21492,7 +21713,7 @@ index 5e6de291b..242efbec5 100644
|
|
|
|
new BftExtraData(
|
|
|
|
new BftExtraData(
|
|
|
|
ConsensusHelpers.zeroLeftPad(
|
|
|
|
ConsensusHelpers.zeroLeftPad(
|
|
|
|
miningConfiguration.getExtraData(), BftExtraDataCodec.EXTRA_VANITY_LENGTH),
|
|
|
|
miningConfiguration.getExtraData(), BftExtraDataCodec.EXTRA_VANITY_LENGTH),
|
|
|
|
@@ -82,9 +103,11 @@ public class QbftBlockCreatorFactory extends BftBlockCreatorFactory<QbftConfigOp
|
|
|
|
@@ -82,9 +109,11 @@ public class QbftBlockCreatorFactory extends BftBlockCreatorFactory<QbftConfigOp
|
|
|
|
Optional.empty(),
|
|
|
|
Optional.empty(),
|
|
|
|
round,
|
|
|
|
round,
|
|
|
|
Collections.emptyList());
|
|
|
|
Collections.emptyList());
|
|
|
|
@ -25080,10 +25301,23 @@ index 000000000..d730c7ccc
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+}
|
|
|
|
diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java
|
|
|
|
diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java
|
|
|
|
index c8eb53639..f8a4bed16 100644
|
|
|
|
index c8eb53639..76c435677 100644
|
|
|
|
--- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java
|
|
|
|
--- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java
|
|
|
|
+++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java
|
|
|
|
+++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java
|
|
|
|
@@ -26,7 +26,10 @@ import org.hyperledger.besu.ethereum.eth.manager.peertask.task.GetHeadersFromPee
|
|
|
|
@@ -11,6 +11,12 @@
|
|
|
|
|
|
|
|
* specific language governing permissions and limitations under the License.
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * Modifications Copyright contributors to the Aere Network.
|
|
|
|
|
|
|
|
+ *
|
|
|
|
|
|
|
|
+ * This file was modified by contributors to the Aere Network, as required by section 4(b) of the
|
|
|
|
|
|
|
|
+ * Apache License 2.0. The copyright header above is the upstream one and is left exactly as it was
|
|
|
|
|
|
|
|
+ * found, as section 4(c) requires. The change itself is in patches/0003-aere-pq-anchor.patch.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
package org.hyperledger.besu.ethereum.eth.sync;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -26,7 +32,10 @@ import org.hyperledger.besu.ethereum.eth.manager.peertask.task.GetHeadersFromPee
|
|
|
|
import org.hyperledger.besu.ethereum.eth.sync.range.RangeHeaders;
|
|
|
|
import org.hyperledger.besu.ethereum.eth.sync.range.RangeHeaders;
|
|
|
|
import org.hyperledger.besu.ethereum.eth.sync.range.SyncTargetRange;
|
|
|
|
import org.hyperledger.besu.ethereum.eth.sync.range.SyncTargetRange;
|
|
|
|
import org.hyperledger.besu.ethereum.eth.sync.tasks.DownloadHeaderSequenceTask;
|
|
|
|
import org.hyperledger.besu.ethereum.eth.sync.tasks.DownloadHeaderSequenceTask;
|
|
|
|
@ -25094,7 +25328,7 @@ index c8eb53639..f8a4bed16 100644
|
|
|
|
import org.hyperledger.besu.plugin.services.MetricsSystem;
|
|
|
|
import org.hyperledger.besu.plugin.services.MetricsSystem;
|
|
|
|
import org.hyperledger.besu.util.FutureUtils;
|
|
|
|
import org.hyperledger.besu.util.FutureUtils;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -112,11 +115,103 @@ public class DownloadHeadersStep
|
|
|
|
@@ -112,11 +121,103 @@ public class DownloadHeadersStep
|
|
|
|
return CompletableFuture.failedFuture(
|
|
|
|
return CompletableFuture.failedFuture(
|
|
|
|
new RuntimeException("Unable to download headers for range " + range));
|
|
|
|
new RuntimeException("Unable to download headers for range " + range));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|