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:
parent
6efc348f83
commit
e8deaa60b6
4
NOTICE
4
NOTICE
@ -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),
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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));
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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));
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user