Correction 2026-08-19: the per-block Falcon quorum armed at 14,050,000 is retired in the shipped code; what is enforced is the anchor certificate (>=3 of 9 seals every 32nd block). Patches 0003/0004/0005 regenerated with Apache 4(b) notices and upstream headers visible; 0004 message now states the floor fork is active since 10,141,734

This commit is contained in:
Aere Network 2026-08-19 14:14:57 +03:00
parent d0cb9ca298
commit b7669355eb
6 changed files with 148 additions and 27 deletions

View File

@ -11,15 +11,24 @@ live chain without asking you to trust anything here.
## Scope boundary, stated first and not in a footnote
**These precompiles verify post-quantum signatures inside the EVM. Consensus on chain 2800 is
classical secp256k1 ECDSA QBFT.**
**These precompiles verify post-quantum signatures inside the EVM. They are not what makes
consensus post-quantum, and nothing in the precompile patches touches consensus.**
Aere Network does not have post-quantum consensus. Block sealing, validator identity and the QBFT
vote messages are all classical elliptic-curve cryptography today, and a cryptographically relevant
quantum computer would break them exactly as it would break any other ECDSA chain. What is live and
post-quantum is the *verification* capability exposed to the EVM: a contract or an account
abstraction wallet on chain 2800 can verify a Falcon, ML-DSA or SLH-DSA signature natively, at
precompile cost, today.
Consensus on chain 2800 is **hybrid post-quantum in a precise and limited sense**, by a separate
mechanism: the QBFT header anchor in `anchor/` and `patches/0003`. Since block 13,034,000 every
32nd block (an anchor block) must carry, under its block hash, a certificate of at least three
valid Falcon-512 validator seals (f+1 of nine; eight or nine are carried in practice), and a node
does not finalize an anchor block without it. Classical secp256k1 ECDSA QBFT still finalizes every
block; validator identity and QBFT message transport are classical. Correction 2026-08-19: the
per-block Falcon quorum rule armed at block 14,050,000 (`aere.falcon.forkBlock`) is, in the shipped
code, retired in favour of the anchor rules from block 13,014,000 and changed no enforcement, so
the earlier statement that from that height every block required a 2f+1 Falcon quorum to finalize
is withdrawn. None of this has been audited by a third party; the scope is stated in
`anchor/README.md` and the proofs are stated as measured, not promised.
What this repository's precompiles add is the *verification* capability exposed to the EVM: a
contract or an account abstraction wallet on chain 2800 can verify a Falcon, ML-DSA or SLH-DSA
signature natively, at precompile cost, since block 9,189,161.
Two further boundaries in the same spirit:

View File

@ -61,8 +61,11 @@ running a configuration the chain does not.
Since block 13,014,000 every 32nd header of chain 2800 carries a sixth element in its QBFT
`extraData`: a certificate of validator Falcon-512 seals, universal since block 13,889,296 and
enforced at a minimum of three seals per anchor block since 2026-08-14. From block 14,050,000 the
network refuses to finalize blocks without that post-quantum quorum.
enforced at a minimum of three seals per anchor block (f+1 of nine) since block 13,034,000. A node
rejects an anchor block whose certificate holds fewer than three valid seals. (Correction 2026-08-19:
an earlier version of this paragraph said that from block 14,050,000 the network refuses to finalize
any block without a post-quantum quorum; the per-block rule armed at that height is retired in the
shipped code in favour of the anchor rules and changed no enforcement, so that sentence is withdrawn.)
The anchor ships in this repository both as source, under `anchor/`, and as
`patches/0003-aere-pq-anchor.patch`. A node built without it has not been shown to import
@ -86,7 +89,7 @@ the real chain found it in one afternoon.
**Measured 2026-08-16: the from-genesis sync reached the live tip.** A node built only from these
packages imported chain 2800 from block 0 to height **14,088,211** and then followed the head,
crossing the full-quantum activation at 14,050,000 with zero anchor rejections. Two more things
crossing the 14,050,000 activation height (which, see above, changed no enforcement) with zero anchor rejections. Two more things
had to be true for that, both now carried by the patches and both described with their measured
boundaries in `IMPORT-PROOF-STARE-2026-08-15.md`: a historical window (anchor heights
13,267,824 to 13,268,944) in which anchoring was deliberately disarmed fleet-wide, and a recovery

View File

@ -10,13 +10,33 @@ demonstrable from these files is marked as not demonstrable from these files.
## Scope boundary, stated first and not in a footnote
**Consensus on Aere Network chain 2800 is classical secp256k1 ECDSA QBFT.** Block proposal, validator
identity and the QBFT vote messages are all classical elliptic-curve cryptography. A cryptographically
relevant quantum computer would break them exactly as it would break any other ECDSA chain.
**Consensus on Aere Network chain 2800 is classical secp256k1 ECDSA QBFT with a post-quantum
checkpoint enforced every 32 blocks.** This code is what adds the checkpoint, in two steps that
should not be confused:
What this code adds is narrower and is the whole point: **the block hash commits to a Falcon
certificate signed by the validators.** That is a binding, not a replacement. It does not make
consensus post-quantum and is never described as such.
1. **The binding.** From block 13,014,000 the block hash of every anchored header (every 32nd
block) commits to a Falcon-512 certificate signed by the validators. That is a binding, not a
replacement: a rewrite of anchored history must also forge the post-quantum signatures.
2. **The enforced minimum.** From block 13,034,000 a node does not finalize an anchor block unless
its certificate holds at least three valid Falcon-512 seals (f+1 of nine, the guarantee that at
least one honest validator signed; eight or nine are carried in practice). Blocks between
anchors carry no Falcon seals and are finalized by ECDSA alone, so the post-quantum guarantee
is a checkpoint about every 16 seconds, not a per-block quorum.
Correction 2026-08-19: the fleet was also configured on 2026-08-15 with `aere.falcon.forkBlock`
at 14,050,000, intended as a per-block blocking Falcon quorum. In the shipped code that rule
(`FalconSealValidationRule`) is retired at `aere.pq.anchorBlock` (13,014,000) in favour of the
anchor rules (`PqAnchorConfig.legacyFalconRuleRetirementBlock`), so at 14,050,000 it was already
inert, and the chain itself confirms it: blocks between anchors carry no Falcon seals, which a
per-block quorum rule would have rejected. The earlier statement in this repository that from
14,050,000 every block required a 2f+1 Falcon quorum to finalize is withdrawn.
"Hybrid" is the honest word only in the checkpoint sense above, and "post-quantum consensus"
without that qualification overstates: block proposal, validator identity and message transport
are classical elliptic-curve cryptography, and a cryptographically relevant quantum computer would
break those exactly as on any other ECDSA chain. What it cannot do is rewrite history past the
last anchor without also forging Falcon-512 signatures. None of this has been audited by a third
party.
The threat it addresses is not "harvest now, decrypt later". A signature is public; there is nothing
to harvest. The threat is **retroactive rewriting**: validator keys recovered later can be used to

View File

@ -1020,7 +1020,17 @@ diff --git a/consensus/common/build.gradle b/consensus/common/build.gradle
index 499c974f1..a6f5276f2 100644
--- a/consensus/common/build.gradle
+++ b/consensus/common/build.gradle
@@ -11,6 +11,12 @@
@@ -1,16 +1,22 @@
/*
* Copyright ConsenSys AG.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0

View File

@ -16,8 +16,11 @@ floored block.
Default forkBlock is Long.MAX_VALUE, so with no configuration the behaviour is
identical to the unmodified file and pre-fork blocks validate unchanged.
NOT ACTIVE ON AERE NETWORK CHAIN 2800. No fork block has been set on mainnet.
Arming it is a governance decision that has not been taken.
ACTIVE ON AERE NETWORK CHAIN 2800 since block 10,141,734, with a floor of
1,000,000,000 wei, delivered to every node as system properties
(-Daere.basefee.floor.forkBlock=10141734 -Daere.basefee.floor.value=1000000000,
see RUN-A-NODE.md). A node without this patch, or with the properties unset,
computes a lower base fee from that height on and rejects every block.
Upstream-Status: Inappropriate [Aere Network specific consensus rule]
@ -46,7 +49,18 @@ diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/f
index 0ee4f7409..83a639c1b 100644
--- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/feemarket/LondonFeeMarket.java
+++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/feemarket/LondonFeeMarket.java
@@ -12,6 +12,24 @@
@@ -1,17 +1,35 @@
/*
* Copyright ConsenSys AG.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
*/

View File

@ -18,9 +18,13 @@ both fixed here, both in MainnetProtocolSpecs.java:
first activation block, which is exactly what was measured.
Modified upstream file: MainnetProtocolSpecs.java (plus one build.gradle line).
The upstream copyright header is unchanged, per Apache License 2.0 section 4(c);
the in-diff comments state exactly what changed, per section 4(b). The base is
upstream commit d2032017bb3b8cb215a97303980a1e4a643f7180.
The upstream copyright header ("Copyright contributors to Besu") is kept
unchanged and is visible in the first hunk, per Apache License 2.0 section 4(c);
directly below it this patch adds a "Modifications Copyright" block that states
what was changed, which is the in-file notice required by section 4(b), and it
travels inside the diff so the applied tree carries it. The holder is named in
NOTICE, per section 4(d). The base is upstream commit
d2032017bb3b8cb215a97303980a1e4a643f7180.
One deliberate omission: the fleet's own copy of this change also wires an optional
Block-STM parallel block processor behind an environment gate. That wiring references
@ -28,12 +32,48 @@ source files not published here, and with the gate unset it reproduces the defau
builder exactly, so this patch carries the consensus-relevant part only: the Osaka
isolation and EIP-2935. A build from this patch follows the chain; it does not enable
parallel execution.
---
.../besu/ethereum/mainnet/MainnetProtocolSpecs.java | 34 +++++++++++-
evm/build.gradle | 9 +++++++++
2 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java
index 87f1a6b..545aeb2 100644
--- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java
+++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java
@@ -1321,7 +1321,17 @@ public abstract class MainnetProtocolSpecs {
@@ -1,17 +1,31 @@
/*
* Copyright contributors to Besu.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
*/
+
+/*
+ * Modifications Copyright 2026 Aere Network.
+ *
+ * This file was changed by Aere Network: the futureEips milestone is based on
+ * osakaDefinition instead of amsterdamDefinition, so that the AERE activation at
+ * block 9,189,161 keeps the Osaka block format, and EIP-2935 (historical block
+ * hashes in the system contract) is enabled in that same milestone. Nothing
+ * upstream was removed; the unmodified original is Hyperledger Besu commit
+ * d2032017bb3b8cb215a97303980a1e4a643f7180, and the upstream copyright header
+ * above is left exactly as it was found.
+ *
+ * This notice is required by Apache License 2.0 section 4(b).
+ */
package org.hyperledger.besu.ethereum.mainnet;
import static org.hyperledger.besu.datatypes.HardforkId.MainnetHardforkId.AMSTERDAM;
@@ -1321,7 +1335,17 @@ public abstract class MainnetProtocolSpecs {
final boolean isParallelTxProcessingEnabled,
final BalConfiguration balConfiguration,
final MetricsSystem metricsSystem) {
@ -52,7 +92,7 @@ index 87f1a6b..545aeb2 100644
chainId,
enableRevertReason,
genesisConfigOptions,
@@ -1330,7 +1340,15 @@ public abstract class MainnetProtocolSpecs {
@@ -1330,7 +1354,15 @@ public abstract class MainnetProtocolSpecs {
isParallelTxProcessingEnabled,
balConfiguration,
metricsSystem)
@ -72,7 +112,32 @@ diff --git a/evm/build.gradle b/evm/build.gradle
index b416c99..9b4e0a5 100644
--- a/evm/build.gradle
+++ b/evm/build.gradle
@@ -37,6 +37,7 @@ dependencies {
@@ -1,16 +1,24 @@
/*
* Copyright contributors to Hyperledger Besu
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
*
+ * Modifications Copyright 2026 Aere Network.
+ *
+ * This file was changed by Aere Network: one dependency line was added
+ * (org.bouncycastle:bcprov-jdk18on) for the EIP-2935 system-call wiring in
+ * patches/0005-aere-eip2935-futureeips.patch. The upstream copyright header above
+ * is left exactly as it was found, as Apache License 2.0 section 4(c) requires; this
+ * notice is the one required by section 4(b).
+ *
*/
@@ -37,6 +45,7 @@ dependencies {
annotationProcessor 'com.google.dagger:dagger-compiler'
implementation project(':crypto:algorithms')