Licence hygiene, authoritative patches, and one spelling of the brand

- Apache 2.0 section 4(b): the patches modify files that are the work of
  Hyperledger Besu and now say so, with the notice inside the modified files,
  which is what the licence asks for and what applying the patch produces.
- patches/ and precompiles/ now carry the staged versions rather than an older
  export. The two had drifted in both directions; the only thing the published
  copy had that the staged one lacked was the word "audited" in front of Bouncy
  Castle, which we cannot evidence and which the staged version had dropped.
- the brand was spelled two ways in the same repository, 62 times one way and 23
  the other. It is Aere Network; AERE is the ticker. The 96 AERE_* code
  identifiers are untouched.
This commit is contained in:
Liviu 2026-08-11 23:47:17 +03:00
parent 6efc348f83
commit e8deaa60b6
14 changed files with 170 additions and 38 deletions

4
NOTICE
View File

@ -1,5 +1,5 @@
AERE Network node Aere Network node
Copyright contributors to the AERE Network Copyright contributors to the Aere Network
This product includes software developed by This product includes software developed by
Hyperledger Besu (https://github.com/hyperledger/besu), Hyperledger Besu (https://github.com/hyperledger/besu),

View File

@ -145,7 +145,7 @@ above; the module this patch actually touches is `:evm`, and that is what was co
`:datatypes:spotlessJavaCheck` both exit 1 on our files. The violations are entirely cosmetic and `:datatypes:spotlessJavaCheck` both exit 1 on our files. The violations are entirely cosmetic and
fall into three groups: Javadoc rewrapped at a different column, the seven `AERE_*` address constants fall into three groups: Javadoc rewrapped at a different column, the seven `AERE_*` address constants
in `Address.java` exceeding the 100-column limit on one line, and Besu's license-header rule wanting in `Address.java` exceeding the 100-column limit on one line, and Besu's license-header rule wanting
`Copyright contributors to Besu` where our files say `Copyright contributors to the AERE Network`. `Copyright contributors to Besu` where our files say `Copyright contributors to the Aere Network`.
Nothing there changes behaviour, and `:evm:compileJava` passes as reported above. We have not Nothing there changes behaviour, and `:evm:compileJava` passes as reported above. We have not
reformatted, for two reasons. Running `spotlessApply` would rewrite our copyright attribution to reformatted, for two reasons. Running `spotlessApply` would rewrite our copyright attribution to

View File

@ -26,16 +26,33 @@ populateForOsaka, so the fork carries the full Osaka precompile set.
No build file change is required: bcprov-jdk18on is already exposed to the evm No build file change is required: bcprov-jdk18on is already exposed to the evm
module as an api dependency of crypto:algorithms, and jakarta.validation-api is module as an api dependency of crypto:algorithms, and jakarta.validation-api is
a global subproject dependency. a global subproject dependency.
Modified upstream files. Two files touched by this patch are modified copies
of Hyperledger Besu sources, not new work by Aere Network:
datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
Aere Network changed both, against upstream commit
d2032017bb3b8cb215a97303980a1e4a643f7180. Both keep their original
"Copyright contributors to Hyperledger Besu" headers unchanged, which is what
Apache License 2.0 section 4(c) requires, and this patch adds to each a
separate "Modifications Copyright" block naming exactly what was changed. That
in-file block is the notice required by Apache License 2.0 section 4(b). It
travels inside the diff, so a tree with this patch applied carries the notice
whether you used git am or git apply. Every other file this patch touches is
new and was written by Aere Network, and each carries its own Apache-2.0
header.
--- ---
.../hyperledger/besu/datatypes/Address.java | 15 +++ .../hyperledger/besu/datatypes/Address.java | 30 ++++++
.../evm/precompile/AereFalconSupport.java | 94 +++++++++++++++++++ .../evm/precompile/AereFalconSupport.java | 94 +++++++++++++++++++
.../Falcon1024PrecompiledContract.java | 62 ++++++++++++ .../Falcon1024PrecompiledContract.java | 62 ++++++++++++
.../Falcon512PrecompiledContract.java | 62 ++++++++++++ .../Falcon512PrecompiledContract.java | 62 ++++++++++++
.../MLDSA44PrecompiledContract.java | 84 +++++++++++++++++ .../MLDSA44PrecompiledContract.java | 84 +++++++++++++++++
.../MainnetPrecompiledContracts.java | 11 ++- .../MainnetPrecompiledContracts.java | 25 ++++-
.../SHAKE256PrecompiledContract.java | 93 ++++++++++++++++++ .../SHAKE256PrecompiledContract.java | 93 ++++++++++++++++++
.../SLHDSA128sPrecompiledContract.java | 84 +++++++++++++++++ .../SLHDSA128sPrecompiledContract.java | 84 +++++++++++++++++
8 files changed, 504 insertions(+), 1 deletion(-) 8 files changed, 533 insertions(+), 1 deletion(-)
create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/AereFalconSupport.java create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/AereFalconSupport.java
create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon1024PrecompiledContract.java create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon1024PrecompiledContract.java
create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon512PrecompiledContract.java create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon512PrecompiledContract.java
@ -44,10 +61,32 @@ a global subproject dependency.
create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/SLHDSA128sPrecompiledContract.java create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/SLHDSA128sPrecompiledContract.java
diff --git a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java diff --git a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
index 950cd59..0f486df 100644 index 950cd59..51397dc 100644
--- a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java --- a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
+++ b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java +++ b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
@@ -91,6 +91,21 @@ public class Address extends BytesHolder { @@ -12,6 +12,21 @@
*
* SPDX-License-Identifier: Apache-2.0
*/
+
+/*
+ * Modifications Copyright 2026 Aere Network.
+ *
+ * This file was changed by Aere Network: five post-quantum precompile address
+ * constants were added (AERE_FALCON512, AERE_FALCON1024, AERE_MLDSA44,
+ * AERE_SLHDSA128S, AERE_SHAKE256, at 0x0ae1 through 0x0ae5). Nothing upstream
+ * was removed or rewritten.
+ *
+ * The unmodified original is Hyperledger Besu commit
+ * d2032017bb3b8cb215a97303980a1e4a643f7180. 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.datatypes;
import static com.google.common.base.Preconditions.checkArgument;
@@ -91,6 +106,21 @@ public class Address extends BytesHolder {
/** Precompile address for P256_VERIFY. */ /** Precompile address for P256_VERIFY. */
public static final Address P256_VERIFY = Address.precompiled(0x0100); public static final Address P256_VERIFY = Address.precompiled(0x0100);
@ -76,7 +115,7 @@ index 0000000..1dbb2b8
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/AereFalconSupport.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/AereFalconSupport.java
@@ -0,0 +1,94 @@ @@ -0,0 +1,94 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at
@ -176,7 +215,7 @@ index 0000000..80aca57
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon1024PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon1024PrecompiledContract.java
@@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at
@ -244,7 +283,7 @@ index 0000000..5df074c
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon512PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/Falcon512PrecompiledContract.java
@@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at
@ -312,7 +351,7 @@ index 0000000..f25be64
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MLDSA44PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MLDSA44PrecompiledContract.java
@@ -0,0 +1,84 @@ @@ -0,0 +1,84 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at
@ -396,10 +435,31 @@ index 0000000..f25be64
+ } + }
+} +}
diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
index 28d84ab..43d9fb7 100644 index 28d84ab..60e55af 100644
--- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
@@ -226,6 +226,15 @@ public interface MainnetPrecompiledContracts { @@ -12,6 +12,20 @@
*
* SPDX-License-Identifier: Apache-2.0
*/
+
+/*
+ * Modifications Copyright 2026 Aere Network.
+ *
+ * This file was changed by Aere Network: populateForFutureEIPs was repointed
+ * from populateForCancun to populateForOsaka, and five post-quantum precompiles
+ * were registered in it (0x0ae1 through 0x0ae5). Nothing upstream was removed.
+ *
+ * The unmodified original is Hyperledger Besu commit
+ * d2032017bb3b8cb215a97303980a1e4a643f7180. 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.evm.precompile;
import static org.hyperledger.besu.datatypes.Address.P256_VERIFY;
@@ -226,6 +240,15 @@ public interface MainnetPrecompiledContracts {
*/ */
static void populateForFutureEIPs( static void populateForFutureEIPs(
final PrecompileContractRegistry registry, final GasCalculator gasCalculator) { final PrecompileContractRegistry registry, final GasCalculator gasCalculator) {
@ -408,7 +468,7 @@ index 28d84ab..43d9fb7 100644
+ // Activated on a running chain via genesis config "futureEipsTime"; no re-genesis needed. + // Activated on a running chain via genesis config "futureEipsTime"; no re-genesis needed.
+ populateForOsaka(registry, gasCalculator); + populateForOsaka(registry, gasCalculator);
+ +
+ // Native post-quantum precompiles (audited Bouncy Castle BCPQC verifiers). + // Native post-quantum precompiles (Bouncy Castle BCPQC verifiers).
+ registry.put(Address.AERE_FALCON512, new Falcon512PrecompiledContract(gasCalculator)); + registry.put(Address.AERE_FALCON512, new Falcon512PrecompiledContract(gasCalculator));
+ registry.put(Address.AERE_FALCON1024, new Falcon1024PrecompiledContract(gasCalculator)); + registry.put(Address.AERE_FALCON1024, new Falcon1024PrecompiledContract(gasCalculator));
+ registry.put(Address.AERE_MLDSA44, new MLDSA44PrecompiledContract(gasCalculator)); + registry.put(Address.AERE_MLDSA44, new MLDSA44PrecompiledContract(gasCalculator));
@ -423,7 +483,7 @@ index 0000000..0c20e6a
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/SHAKE256PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/SHAKE256PrecompiledContract.java
@@ -0,0 +1,93 @@ @@ -0,0 +1,93 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at
@ -452,7 +512,7 @@ index 0000000..0c20e6a
+ * Output: exactly {@code outLen} bytes of SHAKE256(data). + * Output: exactly {@code outLen} bytes of SHAKE256(data).
+ * + *
+ * <p>SHAKE256 is the hashing bottleneck inside Falcon, ML-DSA and SLH-DSA; exposing it natively lets + * <p>SHAKE256 is the hashing bottleneck inside Falcon, ML-DSA and SLH-DSA; exposing it natively lets
+ * on-chain PQC flows offload the hot path to audited Bouncy Castle rather than hand-rolled Solidity. + * on-chain PQC flows offload the hot path to Bouncy Castle rather than hand-rolled Solidity.
+ */ + */
+public class SHAKE256PrecompiledContract extends AbstractPrecompiledContract { +public class SHAKE256PrecompiledContract extends AbstractPrecompiledContract {
+ +
@ -522,7 +582,7 @@ index 0000000..2666602
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/SLHDSA128sPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/SLHDSA128sPrecompiledContract.java
@@ -0,0 +1,84 @@ @@ -0,0 +1,84 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at

View File

@ -10,20 +10,52 @@ Subject: [PATCH] Aere Network: ML-KEM-768 and Falcon HashToPoint precompiles
NOT ACTIVE ON MAINNET. These two are built and known-answer tested on an NOT ACTIVE ON MAINNET. These two are built and known-answer tested on an
isolated single-validator QBFT testnet only. Mainnet activation is a governance isolated single-validator QBFT testnet only. Mainnet activation is a governance
decision that has not been taken. Applies on top of patch 0001. decision that has not been taken. Applies on top of patch 0001.
Modified upstream files. Two files touched by this patch are modified copies
of Hyperledger Besu sources, not new work by Aere Network:
datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
Aere Network changed both, against upstream commit
d2032017bb3b8cb215a97303980a1e4a643f7180. Both keep their original
"Copyright contributors to Hyperledger Besu" headers unchanged, which is what
Apache License 2.0 section 4(c) requires, and this patch adds to each a
separate "Modifications Copyright" block naming exactly what was changed. That
in-file block is the notice required by Apache License 2.0 section 4(b). It
travels inside the diff, so a tree with this patch applied carries the notice
whether you used git am or git apply. Every other file this patch touches is
new and was written by Aere Network, and each carries its own Apache-2.0
header.
--- ---
.../hyperledger/besu/datatypes/Address.java | 6 + .../hyperledger/besu/datatypes/Address.java | 13 +-
.../HashToPointPrecompiledContract.java | 127 +++++++++++++++++ .../HashToPointPrecompiledContract.java | 127 +++++++++++++++++
.../MLKEM768PrecompiledContract.java | 128 ++++++++++++++++++ .../MLKEM768PrecompiledContract.java | 128 ++++++++++++++++++
.../MainnetPrecompiledContracts.java | 2 + .../MainnetPrecompiledContracts.java | 6 +-
4 files changed, 263 insertions(+) 4 files changed, 269 insertions(+), 5 deletions(-)
create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/HashToPointPrecompiledContract.java create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/HashToPointPrecompiledContract.java
create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/MLKEM768PrecompiledContract.java create mode 100644 evm/src/main/java/org/hyperledger/besu/evm/precompile/MLKEM768PrecompiledContract.java
diff --git a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java diff --git a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
index 0f486df..0ddc8ce 100644 index 51397dc..4a70bc5 100644
--- a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java --- a/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
+++ b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java +++ b/datatypes/src/main/java/org/hyperledger/besu/datatypes/Address.java
@@ -106,6 +106,12 @@ public class Address extends BytesHolder { @@ -16,10 +16,11 @@
/*
* Modifications Copyright 2026 Aere Network.
*
- * This file was changed by Aere Network: five post-quantum precompile address
+ * This file was changed by Aere Network: seven post-quantum precompile address
* constants were added (AERE_FALCON512, AERE_FALCON1024, AERE_MLDSA44,
- * AERE_SLHDSA128S, AERE_SHAKE256, at 0x0ae1 through 0x0ae5). Nothing upstream
- * was removed or rewritten.
+ * AERE_SLHDSA128S, AERE_SHAKE256, at 0x0ae1 through 0x0ae5, and AERE_MLKEM768,
+ * AERE_HASHTOPOINT, at 0x0ae6 and 0x0ae7). Nothing upstream was removed or
+ * rewritten.
*
* The unmodified original is Hyperledger Besu commit
* d2032017bb3b8cb215a97303980a1e4a643f7180. The upstream copyright header above is
@@ -121,6 +122,12 @@ public class Address extends BytesHolder {
/** AERE PQC precompile: SHAKE256 XOF (FIPS 202). */ /** AERE PQC precompile: SHAKE256 XOF (FIPS 202). */
public static final Address AERE_SHAKE256 = Address.fromHexString("0x0000000000000000000000000000000000000ae5"); public static final Address AERE_SHAKE256 = Address.fromHexString("0x0000000000000000000000000000000000000ae5");
@ -43,7 +75,7 @@ index 0000000..49efff4
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/HashToPointPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/HashToPointPrecompiledContract.java
@@ -0,0 +1,127 @@ @@ -0,0 +1,127 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at
@ -83,7 +115,7 @@ index 0000000..49efff4
+ * <p>Algorithm (matches the reference {@code hash_to_point_vartime} exactly): absorb + * <p>Algorithm (matches the reference {@code hash_to_point_vartime} exactly): absorb
+ * {@code nonce || message} into a SHAKE256 sponge, then repeatedly squeeze two bytes, interpret + * {@code nonce || message} into a SHAKE256 sponge, then repeatedly squeeze two bytes, interpret
+ * them as a big-endian 16-bit value {@code w}, and keep {@code w mod q} whenever {@code w < 5q = + * them as a big-endian 16-bit value {@code w}, and keep {@code w mod q} whenever {@code w < 5q =
+ * 61445}, until n coefficients are collected. Uses the audited Bouncy Castle SHAKE256 XOF. + * 61445}, until n coefficients are collected. Uses the Bouncy Castle SHAKE256 XOF.
+ */ + */
+public class HashToPointPrecompiledContract extends AbstractPrecompiledContract { +public class HashToPointPrecompiledContract extends AbstractPrecompiledContract {
+ +
@ -176,7 +208,7 @@ index 0000000..cf455de
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MLKEM768PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MLKEM768PrecompiledContract.java
@@ -0,0 +1,128 @@ @@ -0,0 +1,128 @@
+/* +/*
+ * Copyright contributors to the AERE Network. + * Copyright contributors to the Aere Network.
+ * + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * 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 + * the License. You may obtain a copy of the License at
@ -221,7 +253,7 @@ index 0000000..cf455de
+ * <p>Determinism: FIPS-203 Encaps normally draws {@code m} from a CSPRNG, which cannot run inside a + * <p>Determinism: FIPS-203 Encaps normally draws {@code m} from a CSPRNG, which cannot run inside a
+ * consensus-critical precompile. We take {@code m} from calldata and drive Bouncy Castle's + * consensus-critical precompile. We take {@code m} from calldata and drive Bouncy Castle's
+ * ML-KEM.Encaps_internal (K-PKE.Encrypt with explicit coins), so every node computes the identical + * ML-KEM.Encaps_internal (K-PKE.Encrypt with explicit coins), so every node computes the identical
+ * {@code (c, K)}. No cryptography is reimplemented here; the audited Bouncy Castle BCPQC ML-KEM + * {@code (c, K)}. No cryptography is reimplemented here; the Bouncy Castle BCPQC ML-KEM
+ * implementation on the classpath does the work. + * implementation on the classpath does the work.
+ */ + */
+public class MLKEM768PrecompiledContract extends AbstractPrecompiledContract { +public class MLKEM768PrecompiledContract extends AbstractPrecompiledContract {
@ -304,10 +336,21 @@ index 0000000..cf455de
+ } + }
+} +}
diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
index 43d9fb7..38baa14 100644 index 60e55af..19eef40 100644
--- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
+++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/MainnetPrecompiledContracts.java
@@ -236,5 +236,7 @@ public interface MainnetPrecompiledContracts { @@ -17,8 +17,8 @@
* Modifications Copyright 2026 Aere Network.
*
* This file was changed by Aere Network: populateForFutureEIPs was repointed
- * from populateForCancun to populateForOsaka, and five post-quantum precompiles
- * were registered in it (0x0ae1 through 0x0ae5). Nothing upstream was removed.
+ * from populateForCancun to populateForOsaka, and seven post-quantum precompiles
+ * were registered in it (0x0ae1 through 0x0ae7). Nothing upstream was removed.
*
* The unmodified original is Hyperledger Besu commit
* d2032017bb3b8cb215a97303980a1e4a643f7180. The upstream copyright header above is
@@ -250,5 +250,7 @@ public interface MainnetPrecompiledContracts {
registry.put(Address.AERE_MLDSA44, new MLDSA44PrecompiledContract(gasCalculator)); registry.put(Address.AERE_MLDSA44, new MLDSA44PrecompiledContract(gasCalculator));
registry.put(Address.AERE_SLHDSA128S, new SLHDSA128sPrecompiledContract(gasCalculator)); registry.put(Address.AERE_SLHDSA128S, new SLHDSA128sPrecompiledContract(gasCalculator));
registry.put(Address.AERE_SHAKE256, new SHAKE256PrecompiledContract(gasCalculator)); registry.put(Address.AERE_SHAKE256, new SHAKE256PrecompiledContract(gasCalculator));

View File

@ -12,6 +12,21 @@
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
/*
* Modifications Copyright 2026 Aere Network.
*
* This file was changed by Aere Network: five post-quantum precompile address
* constants were added (AERE_FALCON512, AERE_FALCON1024, AERE_MLDSA44,
* AERE_SLHDSA128S, AERE_SHAKE256, at 0x0ae1 through 0x0ae5). Nothing upstream
* was removed or rewritten.
*
* The unmodified original is Hyperledger Besu commit
* d2032017bb3b8cb215a97303980a1e4a643f7180. 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.datatypes; package org.hyperledger.besu.datatypes;
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkArgument;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at

View File

@ -12,6 +12,20 @@
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
/*
* Modifications Copyright 2026 Aere Network.
*
* This file was changed by Aere Network: populateForFutureEIPs was repointed
* from populateForCancun to populateForOsaka, and five post-quantum precompiles
* were registered in it (0x0ae1 through 0x0ae5). Nothing upstream was removed.
*
* The unmodified original is Hyperledger Besu commit
* d2032017bb3b8cb215a97303980a1e4a643f7180. 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.evm.precompile; package org.hyperledger.besu.evm.precompile;
import static org.hyperledger.besu.datatypes.Address.P256_VERIFY; import static org.hyperledger.besu.datatypes.Address.P256_VERIFY;
@ -230,7 +244,7 @@ public interface MainnetPrecompiledContracts {
// Activated on a running chain via genesis config "futureEipsTime"; no re-genesis needed. // Activated on a running chain via genesis config "futureEipsTime"; no re-genesis needed.
populateForOsaka(registry, gasCalculator); populateForOsaka(registry, gasCalculator);
// Native post-quantum precompiles (audited Bouncy Castle BCPQC verifiers). // Native post-quantum precompiles (Bouncy Castle BCPQC verifiers).
registry.put(Address.AERE_FALCON512, new Falcon512PrecompiledContract(gasCalculator)); registry.put(Address.AERE_FALCON512, new Falcon512PrecompiledContract(gasCalculator));
registry.put(Address.AERE_FALCON1024, new Falcon1024PrecompiledContract(gasCalculator)); registry.put(Address.AERE_FALCON1024, new Falcon1024PrecompiledContract(gasCalculator));
registry.put(Address.AERE_MLDSA44, new MLDSA44PrecompiledContract(gasCalculator)); registry.put(Address.AERE_MLDSA44, new MLDSA44PrecompiledContract(gasCalculator));

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at

View File

@ -1,5 +1,5 @@
/* /*
* Copyright contributors to the AERE Network. * Copyright contributors to the Aere Network.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * 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 * the License. You may obtain a copy of the License at