From 66f8f4528faadd50145d142d9aac61a627b0f8dd Mon Sep 17 00:00:00 2001 From: Aere Network Date: Sat, 31 Oct 2026 21:56:02 +0200 Subject: [PATCH] AerePqcPrecompileProvider: eth_config names the AERE precompile band as the Besu-derived client does, and the AERE chains use the no-op execution-requests processor (as running on validator 10) --- .../Precompiles/AerePqcPrecompileProvider.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Nethermind/Nethermind.AerePqc/Precompiles/AerePqcPrecompileProvider.cs b/src/Nethermind/Nethermind.AerePqc/Precompiles/AerePqcPrecompileProvider.cs index 3f3282c..20c4a34 100644 --- a/src/Nethermind/Nethermind.AerePqc/Precompiles/AerePqcPrecompileProvider.cs +++ b/src/Nethermind/Nethermind.AerePqc/Precompiles/AerePqcPrecompileProvider.cs @@ -51,6 +51,17 @@ public sealed class AerePqcPrecompileProvider : IPrecompileProvider new(SlhDsa128sPrecompile.Address, new CodeInfo(SlhDsa128sPrecompile.Instance)), new(Shake256Precompile.Address, new CodeInfo(Shake256Precompile.Instance)), ]; + + /// The names eth_config gives the band (D-560, 2026-10-27): exactly the names the Besu-derived client gives the same five + /// addresses on chain 2800 (eth_config of rpc.aere.network, read 2026-10-27), so the two clients answer the same. + public static IEnumerable> BandNames() => + [ + new("AereFalcon512", Falcon512Precompile.Address), + new("AereFalcon1024", Falcon1024Precompile.Address), + new("AereMLDSA44", MlDsa44Precompile.Address), + new("AereSLHDSA128s", SlhDsa128sPrecompile.Address), + new("AereSHAKE256", Shake256Precompile.Address), + ]; } /// @@ -62,5 +73,13 @@ public sealed class AerePqcPrecompileProvider : IPrecompileProvider internal static class AerePqcBandRegistration { [System.Runtime.CompilerServices.ModuleInitializer] - internal static void Register() => EthereumPrecompileProvider.AereBand = AerePqcPrecompileProvider.Band; + internal static void Register() + { + EthereumPrecompileProvider.AereBand = AerePqcPrecompileProvider.Band; + // D-560 (2026-10-27): eth_config names the band as the Besu-derived client does (d560-eth-config-nm.py adds the hook) + Nethermind.Evm.Precompiles.Extensions.AereBandNames = AerePqcPrecompileProvider.BandNames; + // D-561 (2026-10-27): every path that builds an execution-requests processor builds the no-op one of the AERE chains + // (d561-cereri-noop-nm.py adds the hook); the Besu-derived client processes no request on these chains + Nethermind.Consensus.ExecutionRequests.ExecutionRequestsProcessor.AereReplacement = _ => new Nethermind.AerePqc.Consensus.AereExecutionRequestsProcessor(); + } }