From f095c6adaae2526bc9d9ac4d67cbc31fa15e196e Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Sat, 1 Nov 2025 08:57:15 +0100 Subject: [PATCH 01/19] log rlp guard messages --- .../Nethermind.Logging.NLog/NLogManager.cs | 2 +- .../Nethermind.Runner/packages.lock.json | 455 +++++++++--------- .../Nethermind.Serialization.Rlp.csproj | 1 + .../Nethermind.Serialization.Rlp/Rlp.cs | 12 +- 4 files changed, 240 insertions(+), 230 deletions(-) diff --git a/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs b/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs index 830e25fd2ab3..efe56db38a3c 100644 --- a/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs +++ b/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs @@ -176,7 +176,7 @@ public void Dispose() LogManager.ConfigurationChanged -= _logManagerOnConfigurationChanged; } - private static class TypedLogger + public static class TypedLogger { public static ILogger Logger { get; } = BuildLogger(typeof(T)); } diff --git a/src/Nethermind/Nethermind.Runner/packages.lock.json b/src/Nethermind/Nethermind.Runner/packages.lock.json index c563194f57dc..af1c3b7dbf18 100644 --- a/src/Nethermind/Nethermind.Runner/packages.lock.json +++ b/src/Nethermind/Nethermind.Runner/packages.lock.json @@ -1283,27 +1283,27 @@ "type": "Project", "dependencies": { "MathNet.Numerics.FSharp": "[5.0.0, )", - "Nethermind.Core": "[1.35.0-unstable, )" + "Nethermind.Core": "[1.36.0-unstable, )" } }, "nethermind.analytics": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )" } }, "nethermind.api": { "type": "Project", "dependencies": { - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Facade": "[1.35.0-unstable, )", - "Nethermind.Grpc": "[1.35.0-unstable, )", - "Nethermind.History": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )", - "Nethermind.Monitoring": "[1.35.0-unstable, )", - "Nethermind.Network": "[1.35.0-unstable, )", - "Nethermind.Sockets": "[1.35.0-unstable, )" + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Facade": "[1.36.0-unstable, )", + "Nethermind.Grpc": "[1.36.0-unstable, )", + "Nethermind.History": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )", + "Nethermind.Monitoring": "[1.36.0-unstable, )", + "Nethermind.Network": "[1.36.0-unstable, )", + "Nethermind.Sockets": "[1.36.0-unstable, )" } }, "nethermind.blockchain": { @@ -1314,22 +1314,22 @@ "Microsoft.ClearScript.V8.Native.osx-arm64": "[7.5.0, )", "Microsoft.ClearScript.V8.Native.osx-x64": "[7.5.0, )", "Microsoft.ClearScript.V8.Native.win-x64": "[7.5.0, )", - "Nethermind.Abi": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Db": "[1.35.0-unstable, )", - "Nethermind.Evm": "[1.35.0-unstable, )", - "Nethermind.Evm.Precompiles": "[1.35.0-unstable, )", - "Nethermind.Network.Stats": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )", - "Nethermind.State": "[1.35.0-unstable, )", - "Nethermind.TxPool": "[1.35.0-unstable, )", + "Nethermind.Abi": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Db": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.Evm.Precompiles": "[1.36.0-unstable, )", + "Nethermind.Network.Stats": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )", + "Nethermind.State": "[1.36.0-unstable, )", + "Nethermind.TxPool": "[1.36.0-unstable, )", "Polly": "[8.6.4, )" } }, "nethermind.config": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", "NonBlocking": "[2.1.2, )", "System.Configuration.ConfigurationManager": "[9.0.10, )" } @@ -1337,47 +1337,47 @@ "nethermind.consensus": { "type": "Project", "dependencies": { - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Evm": "[1.35.0-unstable, )", - "Nethermind.TxPool": "[1.35.0-unstable, )" + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.TxPool": "[1.36.0-unstable, )" } }, "nethermind.consensus.aura": { "type": "Project", "dependencies": { "BouncyCastle.Cryptography": "[2.6.2, )", - "Nethermind.Abi": "[1.35.0-unstable, )", - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Facade": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )", - "Nethermind.Synchronization": "[1.35.0-unstable, )", + "Nethermind.Abi": "[1.36.0-unstable, )", + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Facade": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )", + "Nethermind.Synchronization": "[1.36.0-unstable, )", "Nito.Collections.Deque": "[1.2.1, )" } }, "nethermind.consensus.clique": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )" } }, "nethermind.consensus.ethash": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )" } }, "nethermind.core": { @@ -1391,7 +1391,7 @@ "Microsoft.IO.RecyclableMemoryStream": "[3.0.1, )", "Microsoft.IdentityModel.JsonWebTokens": "[8.14.0, )", "Nethermind.Crypto.SecP256k1": "[1.5.0, )", - "Nethermind.Logging": "[1.35.0-unstable, )", + "Nethermind.Logging": "[1.36.0-unstable, )", "Nethermind.Numerics.Int256": "[1.3.6, )", "NonBlocking": "[2.1.2, )", "TestableIO.System.IO.Abstractions.Wrappers": "[22.0.16, )" @@ -1404,17 +1404,17 @@ "Ckzg.Bindings": "[2.1.5.1529, )", "Microsoft.AspNetCore.DataProtection": "[9.0.10, )", "Microsoft.AspNetCore.DataProtection.Extensions": "[9.0.10, )", - "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", "Nethermind.Crypto.Bls": "[1.0.5, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", "System.Security.Cryptography.ProtectedData": "[9.0.10, )" } }, "nethermind.db": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, @@ -1422,8 +1422,8 @@ "type": "Project", "dependencies": { "ConcurrentHashSet": "[1.3.0, )", - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Db": "[1.35.0-unstable, )", + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Db": "[1.36.0-unstable, )", "NonBlocking": "[2.1.2, )", "RocksDB": "[10.2.1.58549, 10.2.1.58549]" } @@ -1431,85 +1431,85 @@ "nethermind.db.rpc": { "type": "Project", "dependencies": { - "Nethermind.Db": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )", - "Nethermind.Serialization.Json": "[1.35.0-unstable, )", - "Nethermind.State": "[1.35.0-unstable, )" + "Nethermind.Db": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )", + "Nethermind.Serialization.Json": "[1.36.0-unstable, )", + "Nethermind.State": "[1.36.0-unstable, )" } }, "nethermind.era1": { "type": "Project", "dependencies": { "CommunityToolkit.HighPerformance": "[8.4.0, )", - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )", - "Nethermind.Merkleization": "[1.35.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", - "Nethermind.Serialization.Ssz": "[1.35.0-unstable, )", - "Nethermind.State": "[1.35.0-unstable, )", + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )", + "Nethermind.Merkleization": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Serialization.Ssz": "[1.36.0-unstable, )", + "Nethermind.State": "[1.36.0-unstable, )", "Snappier": "[1.2.0, )" } }, "nethermind.ethstats": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )", - "Nethermind.Logging": "[1.35.0-unstable, )", - "Nethermind.Network": "[1.35.0-unstable, )", + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )", + "Nethermind.Logging": "[1.36.0-unstable, )", + "Nethermind.Network": "[1.36.0-unstable, )", "Websocket.Client": "[5.3.0, )" } }, "nethermind.evm": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )" + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )" } }, "nethermind.evm.precompiles": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", "Nethermind.Crypto.Bls": "[1.0.5, )", "Nethermind.Crypto.SecP256r1": "[1.0.0-preview.6, )", - "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", "Nethermind.GmpBindings": "[1.0.3, )", "Nethermind.MclBindings": "[1.0.3, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )" + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )" } }, "nethermind.externalsigner.plugin": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )" } }, "nethermind.facade": { "type": "Project", "dependencies": { - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Synchronization": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Synchronization": "[1.36.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, "nethermind.flashbots": { "type": "Project", "dependencies": { - "Nethermind.Merge.Plugin": "[1.35.0-unstable, )" + "Nethermind.Merge.Plugin": "[1.36.0-unstable, )" } }, "nethermind.grpc": { @@ -1518,9 +1518,9 @@ "Google.Protobuf": "[3.32.1, )", "Google.Protobuf.Tools": "[3.32.1, )", "Grpc": "[2.46.6, )", - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Serialization.Json": "[1.35.0-unstable, )" + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Serialization.Json": "[1.36.0-unstable, )" } }, "nethermind.healthchecks": { @@ -1528,75 +1528,75 @@ "dependencies": { "AspNetCore.HealthChecks.UI": "[9.0.0, )", "AspNetCore.HealthChecks.UI.InMemory.Storage": "[9.0.0, )", - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Merge.Plugin": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.36.0-unstable, )" } }, "nethermind.history": { "type": "Project", "dependencies": { - "Nethermind.Consensus": "[1.35.0-unstable, )" + "Nethermind.Consensus": "[1.36.0-unstable, )" } }, "nethermind.hive": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )" } }, "nethermind.init": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Db.Rocks": "[1.35.0-unstable, )", - "Nethermind.Db.Rpc": "[1.35.0-unstable, )", - "Nethermind.Era1": "[1.35.0-unstable, )", - "Nethermind.Network.Discovery": "[1.35.0-unstable, )", - "Nethermind.Network.Dns": "[1.35.0-unstable, )", - "Nethermind.Network.Enr": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Db.Rocks": "[1.36.0-unstable, )", + "Nethermind.Db.Rpc": "[1.36.0-unstable, )", + "Nethermind.Era1": "[1.36.0-unstable, )", + "Nethermind.Network.Discovery": "[1.36.0-unstable, )", + "Nethermind.Network.Dns": "[1.36.0-unstable, )", + "Nethermind.Network.Enr": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )" } }, "nethermind.init.snapshot": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )" } }, "nethermind.jsonrpc": { "type": "Project", "dependencies": { - "Nethermind.Abi": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Evm": "[1.35.0-unstable, )", - "Nethermind.Facade": "[1.35.0-unstable, )", - "Nethermind.Network.Dns": "[1.35.0-unstable, )", - "Nethermind.Sockets": "[1.35.0-unstable, )", - "Nethermind.Synchronization": "[1.35.0-unstable, )", - "Nethermind.Wallet": "[1.35.0-unstable, )", + "Nethermind.Abi": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.Facade": "[1.36.0-unstable, )", + "Nethermind.Network.Dns": "[1.36.0-unstable, )", + "Nethermind.Sockets": "[1.36.0-unstable, )", + "Nethermind.Synchronization": "[1.36.0-unstable, )", + "Nethermind.Wallet": "[1.36.0-unstable, )", "System.Linq.Async": "[6.0.3, )" } }, "nethermind.jsonrpc.tracestore": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )" } }, "nethermind.keystore": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Serialization.Json": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Serialization.Json": "[1.36.0-unstable, )", "SCrypt": "[2.0.0.2, )" } }, @@ -1607,41 +1607,41 @@ "type": "Project", "dependencies": { "NLog": "[5.5.1, )", - "Nethermind.Logging": "[1.35.0-unstable, )" + "Nethermind.Logging": "[1.36.0-unstable, )" } }, "nethermind.merge.aura": { "type": "Project", "dependencies": { - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Consensus.AuRa": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Db": "[1.35.0-unstable, )", - "Nethermind.Evm": "[1.35.0-unstable, )", - "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )", - "Nethermind.State": "[1.35.0-unstable, )" + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Consensus.AuRa": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Db": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )", + "Nethermind.State": "[1.36.0-unstable, )" } }, "nethermind.merge.plugin": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )" } }, "nethermind.merkleization": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Serialization.Ssz": "[1.35.0-unstable, )" + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Serialization.Ssz": "[1.36.0-unstable, )" } }, "nethermind.monitoring": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Logging": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Logging": "[1.36.0-unstable, )", "prometheus-net.AspNetCore": "[8.2.1, )" } }, @@ -1649,14 +1649,14 @@ "type": "Project", "dependencies": { "Crc32.NET": "[1.2.0, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", "Nethermind.DotNetty.Handlers": "[1.0.2.76, )", - "Nethermind.Network.Contract": "[1.35.0-unstable, )", - "Nethermind.Network.Stats": "[1.35.0-unstable, )", - "Nethermind.Synchronization": "[1.35.0-unstable, )", + "Nethermind.Network.Contract": "[1.36.0-unstable, )", + "Nethermind.Network.Stats": "[1.36.0-unstable, )", + "Nethermind.Synchronization": "[1.36.0-unstable, )", "Snappier": "[1.2.0, )", "System.Linq.Async": "[6.0.3, )" } @@ -1664,17 +1664,17 @@ "nethermind.network.contract": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.35.0-unstable, )" + "Nethermind.Config": "[1.36.0-unstable, )" } }, "nethermind.network.discovery": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Facade": "[1.35.0-unstable, )", - "Nethermind.Network": "[1.35.0-unstable, )", - "Nethermind.Network.Enr": "[1.35.0-unstable, )", + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Facade": "[1.36.0-unstable, )", + "Nethermind.Network": "[1.36.0-unstable, )", + "Nethermind.Network.Enr": "[1.36.0-unstable, )", "PierTwo.Lantern.Discv5.WireProtocol": "[1.0.0-preview.6, )" } }, @@ -1682,148 +1682,149 @@ "type": "Project", "dependencies": { "DnsClient": "[1.8.0, )", - "Nethermind.Network": "[1.35.0-unstable, )", - "Nethermind.Network.Enr": "[1.35.0-unstable, )" + "Nethermind.Network": "[1.36.0-unstable, )", + "Nethermind.Network.Enr": "[1.36.0-unstable, )" } }, "nethermind.network.enr": { "type": "Project", "dependencies": { - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Network": "[1.35.0-unstable, )" + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Network": "[1.36.0-unstable, )" } }, "nethermind.network.stats": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Logging": "[1.35.0-unstable, )", - "Nethermind.Network.Contract": "[1.35.0-unstable, )" + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Logging": "[1.36.0-unstable, )", + "Nethermind.Network.Contract": "[1.36.0-unstable, )" } }, "nethermind.optimism": { "type": "Project", "dependencies": { "Google.Protobuf": "[3.32.1, )", - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )", + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )", "Nethermind.Libp2p": "[1.0.0-preview.45, )", "Nethermind.Libp2p.Protocols.PubsubPeerDiscovery": "[1.0.0-preview.45, )", - "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", "Snappier": "[1.2.0, )" } }, "nethermind.seq": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.35.0-unstable, )" + "Nethermind.Config": "[1.36.0-unstable, )" } }, "nethermind.serialization.json": { "type": "Project", "dependencies": { "Microsoft.ClearScript.V8": "[7.5.0, )", - "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", "System.IO.Pipelines": "[9.0.10, )" } }, "nethermind.serialization.rlp": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.DotNetty.Buffers": "[1.0.2.76, )" + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.DotNetty.Buffers": "[1.0.2.76, )", + "Nethermind.Logging.NLog": "[1.36.0-unstable, )" } }, "nethermind.serialization.ssz": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )" + "Nethermind.Core": "[1.36.0-unstable, )" } }, "nethermind.shutter": { "type": "Project", "dependencies": { "Google.Protobuf": "[3.32.1, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )", "Nethermind.Libp2p": "[1.0.0-preview.45, )", "Nethermind.Libp2p.Protocols.PubsubPeerDiscovery": "[1.0.0-preview.45, )", - "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", - "Nethermind.Merkleization": "[1.35.0-unstable, )", - "Nethermind.Network.Discovery": "[1.35.0-unstable, )", - "Nethermind.Serialization.Ssz": "[1.35.0-unstable, )", - "Nethermind.Specs": "[1.35.0-unstable, )" + "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", + "Nethermind.Merkleization": "[1.36.0-unstable, )", + "Nethermind.Network.Discovery": "[1.36.0-unstable, )", + "Nethermind.Serialization.Ssz": "[1.36.0-unstable, )", + "Nethermind.Specs": "[1.36.0-unstable, )" } }, "nethermind.sockets": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Logging": "[1.35.0-unstable, )", - "Nethermind.Serialization.Json": "[1.35.0-unstable, )" + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Logging": "[1.36.0-unstable, )", + "Nethermind.Serialization.Json": "[1.36.0-unstable, )" } }, "nethermind.specs": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Serialization.Json": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Serialization.Json": "[1.36.0-unstable, )", "ZstdSharp.Port": "[0.8.6, )" } }, "nethermind.state": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Db": "[1.35.0-unstable, )", - "Nethermind.Evm": "[1.35.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", - "Nethermind.Trie": "[1.35.0-unstable, )" + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Db": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Trie": "[1.36.0-unstable, )" } }, "nethermind.synchronization": { "type": "Project", "dependencies": { "ConcurrentHashSet": "[1.3.0, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.History": "[1.35.0-unstable, )", - "Nethermind.Logging": "[1.35.0-unstable, )", - "Nethermind.Network.Contract": "[1.35.0-unstable, )", - "Nethermind.Trie": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.History": "[1.36.0-unstable, )", + "Nethermind.Logging": "[1.36.0-unstable, )", + "Nethermind.Network.Contract": "[1.36.0-unstable, )", + "Nethermind.Trie": "[1.36.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, "nethermind.taiko": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Blockchain": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Evm": "[1.35.0-unstable, )", - "Nethermind.Evm.Precompiles": "[1.35.0-unstable, )", - "Nethermind.Init": "[1.35.0-unstable, )", - "Nethermind.JsonRpc": "[1.35.0-unstable, )", - "Nethermind.Logging": "[1.35.0-unstable, )", - "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", - "Nethermind.Serialization.Json": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.Evm.Precompiles": "[1.36.0-unstable, )", + "Nethermind.Init": "[1.36.0-unstable, )", + "Nethermind.JsonRpc": "[1.36.0-unstable, )", + "Nethermind.Logging": "[1.36.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", + "Nethermind.Serialization.Json": "[1.36.0-unstable, )" } }, "nethermind.trie": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Db": "[1.35.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Db": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, @@ -1831,38 +1832,38 @@ "type": "Project", "dependencies": { "Collections.Pooled": "[1.0.82, )", - "Nethermind.Config": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.Crypto": "[1.35.0-unstable, )", - "Nethermind.Db": "[1.35.0-unstable, )", - "Nethermind.Evm": "[1.35.0-unstable, )", - "Nethermind.Network.Contract": "[1.35.0-unstable, )", - "Nethermind.State": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Db": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.Network.Contract": "[1.36.0-unstable, )", + "Nethermind.State": "[1.36.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, "nethermind.upnp.plugin": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Api": "[1.36.0-unstable, )", "Open.NAT.Core": "[2.1.0.5, )" } }, "nethermind.wallet": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.35.0-unstable, )", - "Nethermind.KeyStore": "[1.35.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", - "Nethermind.TxPool": "[1.35.0-unstable, )" + "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.KeyStore": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.TxPool": "[1.36.0-unstable, )" } }, "nethermind.xdc": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.35.0-unstable, )", - "Nethermind.Consensus": "[1.35.0-unstable, )", - "Nethermind.Core": "[1.35.0-unstable, )" + "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.36.0-unstable, )" } }, "AspNetCore.HealthChecks.UI": { diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj b/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj index 54fd4a4139e3..6e3bf043dabf 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj @@ -7,6 +7,7 @@ + diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index bbcb2566b88b..368181a00e97 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -18,6 +18,8 @@ using Nethermind.Core.Crypto; using Nethermind.Core.Extensions; using Nethermind.Int256; +using Nethermind.Logging; +using Nethermind.Logging.NLog; namespace Nethermind.Serialization.Rlp { @@ -1836,21 +1838,27 @@ public sealed class DecoderAttribute(string key = RlpDecoderKey.Default) : Attri public string Key { get; } = key; } + private static ILogger _logger = NLogManager.TypedLogger.Logger; + [StackTraceHidden] public static void GuardLimit(int count, int bytesLeft, RlpLimit? limit = null) { RlpLimit l = limit ?? RlpLimit.DefaultLimit; if (count > bytesLeft || count > l.Limit) + { ThrowCountOverLimit(count, bytesLeft, l); + } } [DoesNotReturn] [StackTraceHidden] private static void ThrowCountOverLimit(int count, int bytesLeft, RlpLimit limit) { - throw new RlpLimitException(string.IsNullOrEmpty(limit.CollectionExpression) + string message = string.IsNullOrEmpty(limit.CollectionExpression) ? $"Collection count of {count} is over limit {limit.Limit} or {bytesLeft} bytes left" - : $"Collection count {limit.CollectionExpression} of {count} is over limit {limit.Limit} or {bytesLeft} bytes left"); + : $"Collection count {limit.CollectionExpression} of {count} is over limit {limit.Limit} or {bytesLeft} bytes left"; + _logger.Error(message); + throw new RlpLimitException(message); } } From 6f099726132b4c2cae0fa5c9234355b879bab6cd Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Sun, 2 Nov 2025 14:18:21 +0100 Subject: [PATCH 02/19] Adding stack trace --- src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index 368181a00e97..c1249cb32295 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -1857,7 +1857,7 @@ private static void ThrowCountOverLimit(int count, int bytesLeft, RlpLimit limit string message = string.IsNullOrEmpty(limit.CollectionExpression) ? $"Collection count of {count} is over limit {limit.Limit} or {bytesLeft} bytes left" : $"Collection count {limit.CollectionExpression} of {count} is over limit {limit.Limit} or {bytesLeft} bytes left"; - _logger.Error(message); + _logger.Error(message + "; " + new StackTrace()); throw new RlpLimitException(message); } } From dcbacf8943fb30e1a3f87ff2cd4215d3aa9190fe Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Sun, 2 Nov 2025 14:30:52 +0100 Subject: [PATCH 03/19] Increase receipts limit to 1024 --- .../Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs b/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs index 3edae4794a05..8598ba3b07c7 100644 --- a/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs +++ b/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs @@ -7,7 +7,7 @@ public static class NethermindSyncLimits { public const int MaxHeaderFetch = 1024; // Number of block headers to be fetched per retrieval request public const int MaxBodyFetch = 512; // Number of block bodies to be fetched per retrieval request - public const int MaxReceiptFetch = 512; // Number of transaction receipts to allow fetching per request + public const int MaxReceiptFetch = 1024; // Number of transaction receipts to allow fetching per request public const int MaxCodeFetch = 1024; // Number of contract codes to allow fetching per request public const int MaxHashesFetch = 10000; // Number of hashes to allow fetching per request } From a0cd5059f98e3e2cb3792782ed174bd475b84f90 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Sun, 2 Nov 2025 14:46:32 +0100 Subject: [PATCH 04/19] fix for stack trace --- src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs | 3 ++- .../Nethermind.Logging/StaticLoggerFactory.cs | 11 +++++++++++ src/Nethermind/Nethermind.Runner/packages.lock.json | 3 +-- .../Nethermind.Serialization.Rlp.csproj | 1 - src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 4 ++-- 5 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs diff --git a/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs b/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs index efe56db38a3c..4497f7cf0487 100644 --- a/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs +++ b/src/Nethermind/Nethermind.Logging.NLog/NLogManager.cs @@ -31,6 +31,7 @@ public NLogManager(string logFileName, string logDirectory = null, string logRul // Required since 'NLog.config' could change during runtime, we need to re-apply the configuration _logManagerOnConfigurationChanged = (sender, args) => Setup(logFileName, logDirectory, logRules); LogManager.ConfigurationChanged += _logManagerOnConfigurationChanged; + Static.LogManager = this; } private static void Setup(string logFileName, string logDirectory = null, string logRules = null) @@ -176,7 +177,7 @@ public void Dispose() LogManager.ConfigurationChanged -= _logManagerOnConfigurationChanged; } - public static class TypedLogger + private static class TypedLogger { public static ILogger Logger { get; } = BuildLogger(typeof(T)); } diff --git a/src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs b/src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs new file mode 100644 index 000000000000..24e7a024ae76 --- /dev/null +++ b/src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2025 Demerzel Solutions Limited +// SPDX-License-Identifier: LGPL-3.0-only + +using System; + +namespace Nethermind.Logging; + +public static class Static +{ + public static ILogManager LogManager { get; set; } = LimboLogs.Instance; +} diff --git a/src/Nethermind/Nethermind.Runner/packages.lock.json b/src/Nethermind/Nethermind.Runner/packages.lock.json index af1c3b7dbf18..b30e7696b36a 100644 --- a/src/Nethermind/Nethermind.Runner/packages.lock.json +++ b/src/Nethermind/Nethermind.Runner/packages.lock.json @@ -1736,8 +1736,7 @@ "type": "Project", "dependencies": { "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.DotNetty.Buffers": "[1.0.2.76, )", - "Nethermind.Logging.NLog": "[1.36.0-unstable, )" + "Nethermind.DotNetty.Buffers": "[1.0.2.76, )" } }, "nethermind.serialization.ssz": { diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj b/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj index 6e3bf043dabf..54fd4a4139e3 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Nethermind.Serialization.Rlp.csproj @@ -7,7 +7,6 @@ - diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index c1249cb32295..c8dd55093aa2 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -1838,7 +1838,7 @@ public sealed class DecoderAttribute(string key = RlpDecoderKey.Default) : Attri public string Key { get; } = key; } - private static ILogger _logger = NLogManager.TypedLogger.Logger; + private static ILogger _logger = Static.LogManager.GetClassLogger(); [StackTraceHidden] public static void GuardLimit(int count, int bytesLeft, RlpLimit? limit = null) @@ -1857,7 +1857,7 @@ private static void ThrowCountOverLimit(int count, int bytesLeft, RlpLimit limit string message = string.IsNullOrEmpty(limit.CollectionExpression) ? $"Collection count of {count} is over limit {limit.Limit} or {bytesLeft} bytes left" : $"Collection count {limit.CollectionExpression} of {count} is over limit {limit.Limit} or {bytesLeft} bytes left"; - _logger.Error(message + "; " + new StackTrace()); + if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR: {message}; {new StackTrace().ToString().Replace(Environment.NewLine, " ")}"); throw new RlpLimitException(message); } } From 959ee16b00cd21d26d8378802c3fdb3a1a337500 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Sun, 2 Nov 2025 14:52:37 +0100 Subject: [PATCH 05/19] try fix multiline --- src/Nethermind/Nethermind.Runner/NLog.config | 6 ++++-- src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Nethermind/Nethermind.Runner/NLog.config b/src/Nethermind/Nethermind.Runner/NLog.config index 308420fbc7c8..de37541d375c 100644 --- a/src/Nethermind/Nethermind.Runner/NLog.config +++ b/src/Nethermind/Nethermind.Runner/NLog.config @@ -2,7 +2,9 @@ + autoReload="true" + throwExceptions="false" + flushAllBeforeShutdown="true"> @@ -86,7 +88,7 @@ - + diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index c8dd55093aa2..44d8d0a238c2 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -1857,7 +1857,7 @@ private static void ThrowCountOverLimit(int count, int bytesLeft, RlpLimit limit string message = string.IsNullOrEmpty(limit.CollectionExpression) ? $"Collection count of {count} is over limit {limit.Limit} or {bytesLeft} bytes left" : $"Collection count {limit.CollectionExpression} of {count} is over limit {limit.Limit} or {bytesLeft} bytes left"; - if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR: {message}; {new StackTrace().ToString().Replace(Environment.NewLine, " ")}"); + if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR: {message}; {new StackTrace()}"); throw new RlpLimitException(message); } } From c863293429ec069eeb9161e56e9c8413a952f809 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Sun, 2 Nov 2025 23:16:10 +0100 Subject: [PATCH 06/19] fix --- src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index 44d8d0a238c2..5f796e5db26d 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -19,7 +19,6 @@ using Nethermind.Core.Extensions; using Nethermind.Int256; using Nethermind.Logging; -using Nethermind.Logging.NLog; namespace Nethermind.Serialization.Rlp { From 06709561a379541124c09edd1ef07a0559bb0c1b Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Sun, 2 Nov 2025 23:43:57 +0100 Subject: [PATCH 07/19] whitespace --- src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs b/src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs index 24e7a024ae76..c38d81648b9b 100644 --- a/src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs +++ b/src/Nethermind/Nethermind.Logging/StaticLoggerFactory.cs @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Demerzel Solutions Limited +// SPDX-FileCopyrightText: 2025 Demerzel Solutions Limited // SPDX-License-Identifier: LGPL-3.0-only using System; From a1eb6b1f4392b46088f57ff37cfd87cda361803d Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 07:05:45 +0100 Subject: [PATCH 08/19] try fix --- .../Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs | 2 +- .../Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs | 2 +- src/Nethermind/Nethermind.Runner/NLog.config | 2 +- src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs b/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs index 8598ba3b07c7..3edae4794a05 100644 --- a/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs +++ b/src/Nethermind/Nethermind.Network.Stats/SyncLimits/NethermindSyncLimits.cs @@ -7,7 +7,7 @@ public static class NethermindSyncLimits { public const int MaxHeaderFetch = 1024; // Number of block headers to be fetched per retrieval request public const int MaxBodyFetch = 512; // Number of block bodies to be fetched per retrieval request - public const int MaxReceiptFetch = 1024; // Number of transaction receipts to allow fetching per request + public const int MaxReceiptFetch = 512; // Number of transaction receipts to allow fetching per request public const int MaxCodeFetch = 1024; // Number of contract codes to allow fetching per request public const int MaxHashesFetch = 10000; // Number of hashes to allow fetching per request } diff --git a/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs b/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs index c5e4047623c1..e5703c7c10ec 100644 --- a/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs +++ b/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs @@ -14,7 +14,7 @@ namespace Nethermind.Network.P2P.Subprotocols.Eth.V63.Messages { public class ReceiptsMessageSerializer : IZeroInnerMessageSerializer { - private static readonly RlpLimit RlpLimit = RlpLimit.For(NethermindSyncLimits.MaxReceiptFetch, nameof(ReceiptsMessage.TxReceipts)); + private static readonly RlpLimit RlpLimit = RlpLimit.For(NethermindSyncLimits.MaxReceiptFetch * 2, nameof(ReceiptsMessage.TxReceipts)); private readonly ISpecProvider _specProvider; private readonly IRlpStreamDecoder _decoder; private readonly Func _decodeArrayFunc; diff --git a/src/Nethermind/Nethermind.Runner/NLog.config b/src/Nethermind/Nethermind.Runner/NLog.config index de37541d375c..1dd703dcb039 100644 --- a/src/Nethermind/Nethermind.Runner/NLog.config +++ b/src/Nethermind/Nethermind.Runner/NLog.config @@ -88,7 +88,7 @@ - + diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index 5f796e5db26d..ffcd76ae8339 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -1856,7 +1856,7 @@ private static void ThrowCountOverLimit(int count, int bytesLeft, RlpLimit limit string message = string.IsNullOrEmpty(limit.CollectionExpression) ? $"Collection count of {count} is over limit {limit.Limit} or {bytesLeft} bytes left" : $"Collection count {limit.CollectionExpression} of {count} is over limit {limit.Limit} or {bytesLeft} bytes left"; - if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR: {message}; {new StackTrace()}"); + if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR: {message}; {new StackTrace().ToString().Replace(Environment.NewLine, " ")}"); throw new RlpLimitException(message); } } From ec71c8711863f78fa37b114ee2ecf5436fdcbc90 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 08:49:48 +0100 Subject: [PATCH 09/19] More logs and potential fixes --- .../Builders/SerializationBuilder.cs | 3 +- .../P2P/P2PProtocolHandlerTests.cs | 1 + .../Eth/V63/Eth63ProtocolHandlerTests.cs | 1 + .../ProtocolsManagerTests.cs | 1 + .../EncryptionHandshakeServiceTests.cs | 1 + .../Handshake/NettyHandshakeHandlerTests.cs | 2 +- .../SnapProtocolHandlerTests.cs | 1 + .../MessageSerializationService.cs | 69 ++++++++++++++----- .../V63/Messages/ReceiptsMessageSerializer.cs | 2 +- 9 files changed, 62 insertions(+), 19 deletions(-) diff --git a/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs b/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs index eb77bf0b2b55..7969d8256cc1 100644 --- a/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs +++ b/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs @@ -6,6 +6,7 @@ using Nethermind.Core.Specs; using Nethermind.Core.Test.Builders; using Nethermind.Crypto; +using Nethermind.Logging; using Nethermind.Network.Discovery.Messages; using Nethermind.Network.Discovery.Serializers; using Nethermind.Network.P2P.Subprotocols.Eth.V62.Messages; @@ -35,7 +36,7 @@ public SerializationBuilder With(IZeroMessageSerializer serializer) where protected override void BeforeReturn() { - TestObject = new MessageSerializationService(_serializers); + TestObject = new MessageSerializationService(LimboLogs.Instance, _serializers); } public SerializationBuilder WithEncryptionHandshake() diff --git a/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs index 9e8e255ab08c..21989aa0870f 100644 --- a/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs @@ -33,6 +33,7 @@ public void Setup() { _session = Substitute.For(); _serializer = new MessageSerializationService( + LimboLogs.Instance, SerializerInfo.Create(new HelloMessageSerializer()), SerializerInfo.Create(new PingMessageSerializer()) ); diff --git a/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs index c956e27817ae..f2921bbd5146 100644 --- a/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs @@ -206,6 +206,7 @@ public Context() NetworkDiagTracer.IsEnabled = true; _serializationService = new MessageSerializationService( + LimboLogs.Instance, SerializerInfo.Create(_statusMessageSerializer), SerializerInfo.Create(_receiptMessageSerializer), SerializerInfo.Create(_getReceiptMessageSerializer) diff --git a/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs b/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs index 9eba656ac38e..0a306b2d46b3 100644 --- a/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs @@ -88,6 +88,7 @@ public Context() _discoveryApp = Substitute.For(); _serializer = new MessageSerializationService( + LimboLogs.Instance, SerializerInfo.Create(new HelloMessageSerializer()), SerializerInfo.Create(new StatusMessageSerializer()), SerializerInfo.Create(new DisconnectMessageSerializer()) diff --git a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs index c791e5a10b27..916afb3f16f1 100644 --- a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs @@ -23,6 +23,7 @@ public void SetUp() _testRandom = new TestRandom(); _messageSerializationService = new MessageSerializationService( + LimboLogs.Instance, SerializerInfo.Create(new AuthMessageSerializer()), SerializerInfo.Create(new AuthEip8MessageSerializer(new Eip8MessagePad(_testRandom))), SerializerInfo.Create(new AckMessageSerializer()), diff --git a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs index a1b32ec2791f..a80bea4c37ff 100644 --- a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs @@ -34,7 +34,7 @@ public void Setup() _group = new SingleThreadEventLoop(); - _serializationService = new MessageSerializationService(); + _serializationService = new MessageSerializationService(LimboLogs.Instance); _channel = Substitute.For(); _channel.Pipeline.Returns(_pipeline); diff --git a/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs index 02217860bba2..763d564b5945 100644 --- a/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs @@ -40,6 +40,7 @@ public IMessageSerializationService MessageSerializationService if (_messageSerializationService is null) { _messageSerializationService = new MessageSerializationService( + LimboLogs.Instance, SerializerInfo.Create(new AccountRangeMessageSerializer()) ); } diff --git a/src/Nethermind/Nethermind.Network/MessageSerializationService.cs b/src/Nethermind/Nethermind.Network/MessageSerializationService.cs index cfbbc062d183..e7601a8a6020 100644 --- a/src/Nethermind/Nethermind.Network/MessageSerializationService.cs +++ b/src/Nethermind/Nethermind.Network/MessageSerializationService.cs @@ -4,8 +4,12 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using DotNetty.Buffers; using DotNetty.Common.Utilities; +using Nethermind.Core.Extensions; +using Nethermind.Logging; using Nethermind.Network.P2P.Messages; using Nethermind.Serialization.Rlp; @@ -13,30 +17,36 @@ namespace Nethermind.Network { public class MessageSerializationService : IMessageSerializationService { - private readonly ConcurrentDictionary _zeroSerializers = new ConcurrentDictionary(); + private readonly ConcurrentDictionary _zeroSerializers = new(); + private readonly ILogger _logger; - public MessageSerializationService(params IReadOnlyList serializers) + public MessageSerializationService(ILogManager logManager, params IReadOnlyList serializers) { + _logger = logManager.GetClassLogger(); Type openGeneric = typeof(IZeroMessageSerializer<>); - foreach ((Type MessageType, object Serializer) in serializers) + foreach ((Type messageType, object serializer) in serializers) { - Type expectedInterface = openGeneric.MakeGenericType(MessageType); + Type expectedInterface = openGeneric.MakeGenericType(messageType); - if (!expectedInterface.IsAssignableFrom(Serializer.GetType())) - { - throw new ArgumentException( - $"Serializer of type {Serializer.GetType().Name} must implement {expectedInterface.Name}."); - } + if (!expectedInterface.IsAssignableFrom(serializer.GetType())) + ThrowMissingInterface(serializer, expectedInterface); + + _zeroSerializers.TryAdd(messageType.TypeHandle, serializer); + } - _zeroSerializers.TryAdd(MessageType.TypeHandle, Serializer); + [DoesNotReturn] + [StackTraceHidden] + static void ThrowMissingInterface(object serializer, Type expectedInterface) + { + throw new ArgumentException($"Serializer of type {serializer.GetType().Name} must implement {expectedInterface.Name}."); } } public T Deserialize(ArraySegment bytes) where T : MessageBase { if (!TryGetZeroSerializer(out IZeroMessageSerializer zeroMessageSerializer)) - throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); + ThrowMissingSerializerException(); IByteBuffer byteBuffer = NethermindBuffers.Default.Buffer(bytes.Count); byteBuffer.WriteBytes(bytes.Array, bytes.Offset, bytes.Count); @@ -44,6 +54,11 @@ public T Deserialize(ArraySegment bytes) where T : MessageBase { return zeroMessageSerializer.Deserialize(byteBuffer); } + catch (RlpLimitException) + { + if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR RLP limit exception while deserializing message {bytes.AsSpan().ToHexString()}."); + throw; + } finally { byteBuffer.SafeRelease(); @@ -51,18 +66,33 @@ public T Deserialize(ArraySegment bytes) where T : MessageBase } + [DoesNotReturn] + [StackTraceHidden] + private static void ThrowMissingSerializerException() where T : MessageBase + { + throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); + } + public T Deserialize(IByteBuffer buffer) where T : MessageBase { if (!TryGetZeroSerializer(out IZeroMessageSerializer zeroMessageSerializer)) - throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); + ThrowMissingSerializerException(); - return zeroMessageSerializer.Deserialize(buffer); + try + { + return zeroMessageSerializer.Deserialize(buffer); + } + catch (RlpLimitException) + { + if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR RLP limit exception while deserializing message {buffer.AsSpan().ToHexString()}."); + throw; + } } public IByteBuffer ZeroSerialize(T message, IByteBufferAllocator? allocator = null) where T : MessageBase { if (!TryGetZeroSerializer(out IZeroMessageSerializer zeroMessageSerializer)) - throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); + ThrowMissingSerializerException(); void WriteAdaptivePacketType(in IByteBuffer buffer) { @@ -108,9 +138,16 @@ private bool TryGetZeroSerializer(out IZeroMessageSerializer serializer) w return true; } - throw new InvalidOperationException($"Zero serializer for {nameof(T)} (registered: {serializerObject?.GetType().Name}) does not implement required interfaces"); - } + ThrowInterfaceMissing(serializerObject); + return false; + [DoesNotReturn] + [StackTraceHidden] + static void ThrowInterfaceMissing(object serializerObject) + { + throw new InvalidOperationException($"Zero serializer for {nameof(T)} (registered: {serializerObject?.GetType().Name}) does not implement required interfaces"); + } + } } public record SerializerInfo(Type MessageType, object Serializer) diff --git a/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs b/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs index e5703c7c10ec..e59dceb9c214 100644 --- a/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs +++ b/src/Nethermind/Nethermind.Network/P2P/Subprotocols/Eth/V63/Messages/ReceiptsMessageSerializer.cs @@ -14,7 +14,7 @@ namespace Nethermind.Network.P2P.Subprotocols.Eth.V63.Messages { public class ReceiptsMessageSerializer : IZeroInnerMessageSerializer { - private static readonly RlpLimit RlpLimit = RlpLimit.For(NethermindSyncLimits.MaxReceiptFetch * 2, nameof(ReceiptsMessage.TxReceipts)); + private static readonly RlpLimit RlpLimit = RlpLimit.For(NethermindSyncLimits.MaxReceiptFetch * 4, nameof(ReceiptsMessage.TxReceipts)); private readonly ISpecProvider _specProvider; private readonly IRlpStreamDecoder _decoder; private readonly Func _decodeArrayFunc; From b3b1f5f21eac1a4baf1adaf32a7347f950ba6f75 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 09:21:31 +0100 Subject: [PATCH 10/19] log fix --- src/Nethermind/Nethermind.Core/Buffers/CappedArray.cs | 8 +++----- .../Nethermind.Network/MessageSerializationService.cs | 6 +++++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Nethermind/Nethermind.Core/Buffers/CappedArray.cs b/src/Nethermind/Nethermind.Core/Buffers/CappedArray.cs index 504129823990..8b93eb277542 100644 --- a/src/Nethermind/Nethermind.Core/Buffers/CappedArray.cs +++ b/src/Nethermind/Nethermind.Core/Buffers/CappedArray.cs @@ -113,12 +113,10 @@ public readonly Span AsSpan(int start, int length) return AsSpan().ToArray(); } - public override string? ToString() - { - return typeof(T) == typeof(byte) ? - SpanExtensions.ToHexString(MemoryMarshal.AsBytes(AsSpan()), withZeroX: true) : + public override string? ToString() => + typeof(T) == typeof(byte) ? + MemoryMarshal.AsBytes(AsSpan()).ToHexString(withZeroX: true) : base.ToString(); - } public readonly ArraySegment AsArraySegment() { diff --git a/src/Nethermind/Nethermind.Network/MessageSerializationService.cs b/src/Nethermind/Nethermind.Network/MessageSerializationService.cs index e7601a8a6020..cb0aabfa2f32 100644 --- a/src/Nethermind/Nethermind.Network/MessageSerializationService.cs +++ b/src/Nethermind/Nethermind.Network/MessageSerializationService.cs @@ -84,7 +84,11 @@ public T Deserialize(IByteBuffer buffer) where T : MessageBase } catch (RlpLimitException) { - if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR RLP limit exception while deserializing message {buffer.AsSpan().ToHexString()}."); + if (_logger.IsDebug) + { + buffer.ResetReaderIndex(); + _logger.Error($"DEBUG/ERROR: RLP limit exception while deserializing message {buffer.AsSpan().ToHexString()}."); + } throw; } } From 0a33107947ce66682932c229141c6259228a1530 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 09:50:17 +0100 Subject: [PATCH 11/19] Revert "More logs and potential fixes"This reverts commit ec71c8711863f78fa37b114ee2ecf5436fdcbc90.# Conflicts:# src/Nethermind/Nethermind.Network/MessageSerializationService.csRevert "log fix"This reverts commit b3b1f5f21eac1a4baf1adaf32a7347f950ba6f75. Revert "More logs and potential fixes" This reverts commit ec71c8711863f78fa37b114ee2ecf5436fdcbc90. --- .../Builders/SerializationBuilder.cs | 3 +- .../P2P/P2PProtocolHandlerTests.cs | 1 - .../Eth/V63/Eth63ProtocolHandlerTests.cs | 1 - .../ProtocolsManagerTests.cs | 1 - .../EncryptionHandshakeServiceTests.cs | 1 - .../Handshake/NettyHandshakeHandlerTests.cs | 2 +- .../SnapProtocolHandlerTests.cs | 1 - .../MessageSerializationService.cs | 73 ++++--------------- 8 files changed, 18 insertions(+), 65 deletions(-) diff --git a/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs b/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs index 7969d8256cc1..eb77bf0b2b55 100644 --- a/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs +++ b/src/Nethermind/Nethermind.Network.Test/Builders/SerializationBuilder.cs @@ -6,7 +6,6 @@ using Nethermind.Core.Specs; using Nethermind.Core.Test.Builders; using Nethermind.Crypto; -using Nethermind.Logging; using Nethermind.Network.Discovery.Messages; using Nethermind.Network.Discovery.Serializers; using Nethermind.Network.P2P.Subprotocols.Eth.V62.Messages; @@ -36,7 +35,7 @@ public SerializationBuilder With(IZeroMessageSerializer serializer) where protected override void BeforeReturn() { - TestObject = new MessageSerializationService(LimboLogs.Instance, _serializers); + TestObject = new MessageSerializationService(_serializers); } public SerializationBuilder WithEncryptionHandshake() diff --git a/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs index 21989aa0870f..9e8e255ab08c 100644 --- a/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/P2P/P2PProtocolHandlerTests.cs @@ -33,7 +33,6 @@ public void Setup() { _session = Substitute.For(); _serializer = new MessageSerializationService( - LimboLogs.Instance, SerializerInfo.Create(new HelloMessageSerializer()), SerializerInfo.Create(new PingMessageSerializer()) ); diff --git a/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs index f2921bbd5146..c956e27817ae 100644 --- a/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/P2P/Subprotocols/Eth/V63/Eth63ProtocolHandlerTests.cs @@ -206,7 +206,6 @@ public Context() NetworkDiagTracer.IsEnabled = true; _serializationService = new MessageSerializationService( - LimboLogs.Instance, SerializerInfo.Create(_statusMessageSerializer), SerializerInfo.Create(_receiptMessageSerializer), SerializerInfo.Create(_getReceiptMessageSerializer) diff --git a/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs b/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs index 0a306b2d46b3..9eba656ac38e 100644 --- a/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/ProtocolsManagerTests.cs @@ -88,7 +88,6 @@ public Context() _discoveryApp = Substitute.For(); _serializer = new MessageSerializationService( - LimboLogs.Instance, SerializerInfo.Create(new HelloMessageSerializer()), SerializerInfo.Create(new StatusMessageSerializer()), SerializerInfo.Create(new DisconnectMessageSerializer()) diff --git a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs index 916afb3f16f1..c791e5a10b27 100644 --- a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/EncryptionHandshakeServiceTests.cs @@ -23,7 +23,6 @@ public void SetUp() _testRandom = new TestRandom(); _messageSerializationService = new MessageSerializationService( - LimboLogs.Instance, SerializerInfo.Create(new AuthMessageSerializer()), SerializerInfo.Create(new AuthEip8MessageSerializer(new Eip8MessagePad(_testRandom))), SerializerInfo.Create(new AckMessageSerializer()), diff --git a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs index a80bea4c37ff..a1b32ec2791f 100644 --- a/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/Rlpx/Handshake/NettyHandshakeHandlerTests.cs @@ -34,7 +34,7 @@ public void Setup() _group = new SingleThreadEventLoop(); - _serializationService = new MessageSerializationService(LimboLogs.Instance); + _serializationService = new MessageSerializationService(); _channel = Substitute.For(); _channel.Pipeline.Returns(_pipeline); diff --git a/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs b/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs index 763d564b5945..02217860bba2 100644 --- a/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/SnapProtocolHandlerTests.cs @@ -40,7 +40,6 @@ public IMessageSerializationService MessageSerializationService if (_messageSerializationService is null) { _messageSerializationService = new MessageSerializationService( - LimboLogs.Instance, SerializerInfo.Create(new AccountRangeMessageSerializer()) ); } diff --git a/src/Nethermind/Nethermind.Network/MessageSerializationService.cs b/src/Nethermind/Nethermind.Network/MessageSerializationService.cs index cb0aabfa2f32..cfbbc062d183 100644 --- a/src/Nethermind/Nethermind.Network/MessageSerializationService.cs +++ b/src/Nethermind/Nethermind.Network/MessageSerializationService.cs @@ -4,12 +4,8 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; -using System.Diagnostics; -using System.Diagnostics.CodeAnalysis; using DotNetty.Buffers; using DotNetty.Common.Utilities; -using Nethermind.Core.Extensions; -using Nethermind.Logging; using Nethermind.Network.P2P.Messages; using Nethermind.Serialization.Rlp; @@ -17,36 +13,30 @@ namespace Nethermind.Network { public class MessageSerializationService : IMessageSerializationService { - private readonly ConcurrentDictionary _zeroSerializers = new(); - private readonly ILogger _logger; + private readonly ConcurrentDictionary _zeroSerializers = new ConcurrentDictionary(); - public MessageSerializationService(ILogManager logManager, params IReadOnlyList serializers) + public MessageSerializationService(params IReadOnlyList serializers) { - _logger = logManager.GetClassLogger(); Type openGeneric = typeof(IZeroMessageSerializer<>); - foreach ((Type messageType, object serializer) in serializers) + foreach ((Type MessageType, object Serializer) in serializers) { - Type expectedInterface = openGeneric.MakeGenericType(messageType); + Type expectedInterface = openGeneric.MakeGenericType(MessageType); - if (!expectedInterface.IsAssignableFrom(serializer.GetType())) - ThrowMissingInterface(serializer, expectedInterface); - - _zeroSerializers.TryAdd(messageType.TypeHandle, serializer); - } + if (!expectedInterface.IsAssignableFrom(Serializer.GetType())) + { + throw new ArgumentException( + $"Serializer of type {Serializer.GetType().Name} must implement {expectedInterface.Name}."); + } - [DoesNotReturn] - [StackTraceHidden] - static void ThrowMissingInterface(object serializer, Type expectedInterface) - { - throw new ArgumentException($"Serializer of type {serializer.GetType().Name} must implement {expectedInterface.Name}."); + _zeroSerializers.TryAdd(MessageType.TypeHandle, Serializer); } } public T Deserialize(ArraySegment bytes) where T : MessageBase { if (!TryGetZeroSerializer(out IZeroMessageSerializer zeroMessageSerializer)) - ThrowMissingSerializerException(); + throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); IByteBuffer byteBuffer = NethermindBuffers.Default.Buffer(bytes.Count); byteBuffer.WriteBytes(bytes.Array, bytes.Offset, bytes.Count); @@ -54,11 +44,6 @@ public T Deserialize(ArraySegment bytes) where T : MessageBase { return zeroMessageSerializer.Deserialize(byteBuffer); } - catch (RlpLimitException) - { - if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR RLP limit exception while deserializing message {bytes.AsSpan().ToHexString()}."); - throw; - } finally { byteBuffer.SafeRelease(); @@ -66,37 +51,18 @@ public T Deserialize(ArraySegment bytes) where T : MessageBase } - [DoesNotReturn] - [StackTraceHidden] - private static void ThrowMissingSerializerException() where T : MessageBase - { - throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); - } - public T Deserialize(IByteBuffer buffer) where T : MessageBase { if (!TryGetZeroSerializer(out IZeroMessageSerializer zeroMessageSerializer)) - ThrowMissingSerializerException(); + throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); - try - { - return zeroMessageSerializer.Deserialize(buffer); - } - catch (RlpLimitException) - { - if (_logger.IsDebug) - { - buffer.ResetReaderIndex(); - _logger.Error($"DEBUG/ERROR: RLP limit exception while deserializing message {buffer.AsSpan().ToHexString()}."); - } - throw; - } + return zeroMessageSerializer.Deserialize(buffer); } public IByteBuffer ZeroSerialize(T message, IByteBufferAllocator? allocator = null) where T : MessageBase { if (!TryGetZeroSerializer(out IZeroMessageSerializer zeroMessageSerializer)) - ThrowMissingSerializerException(); + throw new InvalidOperationException($"No {nameof(IZeroMessageSerializer)} registered for {typeof(T).Name}."); void WriteAdaptivePacketType(in IByteBuffer buffer) { @@ -142,16 +108,9 @@ private bool TryGetZeroSerializer(out IZeroMessageSerializer serializer) w return true; } - ThrowInterfaceMissing(serializerObject); - return false; - - [DoesNotReturn] - [StackTraceHidden] - static void ThrowInterfaceMissing(object serializerObject) - { - throw new InvalidOperationException($"Zero serializer for {nameof(T)} (registered: {serializerObject?.GetType().Name}) does not implement required interfaces"); - } + throw new InvalidOperationException($"Zero serializer for {nameof(T)} (registered: {serializerObject?.GetType().Name}) does not implement required interfaces"); } + } public record SerializerInfo(Type MessageType, object Serializer) From 0bdfb3d14c303efa22099ba64ed456c781eb402e Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 09:52:16 +0100 Subject: [PATCH 12/19] try weird fix --- src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 2 +- src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index ffcd76ae8339..d3e02cd53347 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -1133,7 +1133,7 @@ public void DecodeAddressStructRef(out AddressStructRef address) public UInt256 DecodeUInt256(int length = -1) { - ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L32); + ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L64); if (byteSpan.Length > 32) { RlpHelpers.ThrowUnexpectedIntegerLength(byteSpan.Length); diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs b/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs index 969ba0f86af3..8bf3c0351ca4 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs @@ -811,7 +811,7 @@ public UInt256 DecodeUInt256(int length = -1) return byteValue; } - ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L32); + ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L64); if (byteSpan.Length > 32) { From 460908e640a15fd89dcfd5e85f9fdc52883704cd Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 10:44:15 +0100 Subject: [PATCH 13/19] Revert "try weird fix" This reverts commit 0bdfb3d14c303efa22099ba64ed456c781eb402e. --- src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 2 +- src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index d3e02cd53347..ffcd76ae8339 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -1133,7 +1133,7 @@ public void DecodeAddressStructRef(out AddressStructRef address) public UInt256 DecodeUInt256(int length = -1) { - ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L64); + ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L32); if (byteSpan.Length > 32) { RlpHelpers.ThrowUnexpectedIntegerLength(byteSpan.Length); diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs b/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs index 8bf3c0351ca4..969ba0f86af3 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/RlpStream.cs @@ -811,7 +811,7 @@ public UInt256 DecodeUInt256(int length = -1) return byteValue; } - ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L64); + ReadOnlySpan byteSpan = DecodeByteArraySpan(RlpLimit.L32); if (byteSpan.Length > 32) { From d62fa68d7a3e52bc6313f936da424361d06f877e Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 10:46:07 +0100 Subject: [PATCH 14/19] revert packages.json --- .../Nethermind.Runner/packages.lock.json | 452 +++++++++--------- 1 file changed, 226 insertions(+), 226 deletions(-) diff --git a/src/Nethermind/Nethermind.Runner/packages.lock.json b/src/Nethermind/Nethermind.Runner/packages.lock.json index b30e7696b36a..c563194f57dc 100644 --- a/src/Nethermind/Nethermind.Runner/packages.lock.json +++ b/src/Nethermind/Nethermind.Runner/packages.lock.json @@ -1283,27 +1283,27 @@ "type": "Project", "dependencies": { "MathNet.Numerics.FSharp": "[5.0.0, )", - "Nethermind.Core": "[1.36.0-unstable, )" + "Nethermind.Core": "[1.35.0-unstable, )" } }, "nethermind.analytics": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )" } }, "nethermind.api": { "type": "Project", "dependencies": { - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Facade": "[1.36.0-unstable, )", - "Nethermind.Grpc": "[1.36.0-unstable, )", - "Nethermind.History": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )", - "Nethermind.Monitoring": "[1.36.0-unstable, )", - "Nethermind.Network": "[1.36.0-unstable, )", - "Nethermind.Sockets": "[1.36.0-unstable, )" + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Facade": "[1.35.0-unstable, )", + "Nethermind.Grpc": "[1.35.0-unstable, )", + "Nethermind.History": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )", + "Nethermind.Monitoring": "[1.35.0-unstable, )", + "Nethermind.Network": "[1.35.0-unstable, )", + "Nethermind.Sockets": "[1.35.0-unstable, )" } }, "nethermind.blockchain": { @@ -1314,22 +1314,22 @@ "Microsoft.ClearScript.V8.Native.osx-arm64": "[7.5.0, )", "Microsoft.ClearScript.V8.Native.osx-x64": "[7.5.0, )", "Microsoft.ClearScript.V8.Native.win-x64": "[7.5.0, )", - "Nethermind.Abi": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Db": "[1.36.0-unstable, )", - "Nethermind.Evm": "[1.36.0-unstable, )", - "Nethermind.Evm.Precompiles": "[1.36.0-unstable, )", - "Nethermind.Network.Stats": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )", - "Nethermind.State": "[1.36.0-unstable, )", - "Nethermind.TxPool": "[1.36.0-unstable, )", + "Nethermind.Abi": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Db": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.Evm.Precompiles": "[1.35.0-unstable, )", + "Nethermind.Network.Stats": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )", + "Nethermind.State": "[1.35.0-unstable, )", + "Nethermind.TxPool": "[1.35.0-unstable, )", "Polly": "[8.6.4, )" } }, "nethermind.config": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", "NonBlocking": "[2.1.2, )", "System.Configuration.ConfigurationManager": "[9.0.10, )" } @@ -1337,47 +1337,47 @@ "nethermind.consensus": { "type": "Project", "dependencies": { - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Evm": "[1.36.0-unstable, )", - "Nethermind.TxPool": "[1.36.0-unstable, )" + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.TxPool": "[1.35.0-unstable, )" } }, "nethermind.consensus.aura": { "type": "Project", "dependencies": { "BouncyCastle.Cryptography": "[2.6.2, )", - "Nethermind.Abi": "[1.36.0-unstable, )", - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Facade": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )", - "Nethermind.Synchronization": "[1.36.0-unstable, )", + "Nethermind.Abi": "[1.35.0-unstable, )", + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Facade": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )", + "Nethermind.Synchronization": "[1.35.0-unstable, )", "Nito.Collections.Deque": "[1.2.1, )" } }, "nethermind.consensus.clique": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )" } }, "nethermind.consensus.ethash": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )" } }, "nethermind.core": { @@ -1391,7 +1391,7 @@ "Microsoft.IO.RecyclableMemoryStream": "[3.0.1, )", "Microsoft.IdentityModel.JsonWebTokens": "[8.14.0, )", "Nethermind.Crypto.SecP256k1": "[1.5.0, )", - "Nethermind.Logging": "[1.36.0-unstable, )", + "Nethermind.Logging": "[1.35.0-unstable, )", "Nethermind.Numerics.Int256": "[1.3.6, )", "NonBlocking": "[2.1.2, )", "TestableIO.System.IO.Abstractions.Wrappers": "[22.0.16, )" @@ -1404,17 +1404,17 @@ "Ckzg.Bindings": "[2.1.5.1529, )", "Microsoft.AspNetCore.DataProtection": "[9.0.10, )", "Microsoft.AspNetCore.DataProtection.Extensions": "[9.0.10, )", - "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", "Nethermind.Crypto.Bls": "[1.0.5, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", "System.Security.Cryptography.ProtectedData": "[9.0.10, )" } }, "nethermind.db": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, @@ -1422,8 +1422,8 @@ "type": "Project", "dependencies": { "ConcurrentHashSet": "[1.3.0, )", - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Db": "[1.36.0-unstable, )", + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Db": "[1.35.0-unstable, )", "NonBlocking": "[2.1.2, )", "RocksDB": "[10.2.1.58549, 10.2.1.58549]" } @@ -1431,85 +1431,85 @@ "nethermind.db.rpc": { "type": "Project", "dependencies": { - "Nethermind.Db": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )", - "Nethermind.Serialization.Json": "[1.36.0-unstable, )", - "Nethermind.State": "[1.36.0-unstable, )" + "Nethermind.Db": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )", + "Nethermind.Serialization.Json": "[1.35.0-unstable, )", + "Nethermind.State": "[1.35.0-unstable, )" } }, "nethermind.era1": { "type": "Project", "dependencies": { "CommunityToolkit.HighPerformance": "[8.4.0, )", - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )", - "Nethermind.Merkleization": "[1.36.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", - "Nethermind.Serialization.Ssz": "[1.36.0-unstable, )", - "Nethermind.State": "[1.36.0-unstable, )", + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )", + "Nethermind.Merkleization": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Serialization.Ssz": "[1.35.0-unstable, )", + "Nethermind.State": "[1.35.0-unstable, )", "Snappier": "[1.2.0, )" } }, "nethermind.ethstats": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )", - "Nethermind.Logging": "[1.36.0-unstable, )", - "Nethermind.Network": "[1.36.0-unstable, )", + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )", + "Nethermind.Logging": "[1.35.0-unstable, )", + "Nethermind.Network": "[1.35.0-unstable, )", "Websocket.Client": "[5.3.0, )" } }, "nethermind.evm": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )" + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )" } }, "nethermind.evm.precompiles": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", "Nethermind.Crypto.Bls": "[1.0.5, )", "Nethermind.Crypto.SecP256r1": "[1.0.0-preview.6, )", - "Nethermind.Evm": "[1.36.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", "Nethermind.GmpBindings": "[1.0.3, )", "Nethermind.MclBindings": "[1.0.3, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )" + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )" } }, "nethermind.externalsigner.plugin": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )" } }, "nethermind.facade": { "type": "Project", "dependencies": { - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Synchronization": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Synchronization": "[1.35.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, "nethermind.flashbots": { "type": "Project", "dependencies": { - "Nethermind.Merge.Plugin": "[1.36.0-unstable, )" + "Nethermind.Merge.Plugin": "[1.35.0-unstable, )" } }, "nethermind.grpc": { @@ -1518,9 +1518,9 @@ "Google.Protobuf": "[3.32.1, )", "Google.Protobuf.Tools": "[3.32.1, )", "Grpc": "[2.46.6, )", - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Serialization.Json": "[1.36.0-unstable, )" + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Serialization.Json": "[1.35.0-unstable, )" } }, "nethermind.healthchecks": { @@ -1528,75 +1528,75 @@ "dependencies": { "AspNetCore.HealthChecks.UI": "[9.0.0, )", "AspNetCore.HealthChecks.UI.InMemory.Storage": "[9.0.0, )", - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Merge.Plugin": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.35.0-unstable, )" } }, "nethermind.history": { "type": "Project", "dependencies": { - "Nethermind.Consensus": "[1.36.0-unstable, )" + "Nethermind.Consensus": "[1.35.0-unstable, )" } }, "nethermind.hive": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )" } }, "nethermind.init": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Db.Rocks": "[1.36.0-unstable, )", - "Nethermind.Db.Rpc": "[1.36.0-unstable, )", - "Nethermind.Era1": "[1.36.0-unstable, )", - "Nethermind.Network.Discovery": "[1.36.0-unstable, )", - "Nethermind.Network.Dns": "[1.36.0-unstable, )", - "Nethermind.Network.Enr": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Db.Rocks": "[1.35.0-unstable, )", + "Nethermind.Db.Rpc": "[1.35.0-unstable, )", + "Nethermind.Era1": "[1.35.0-unstable, )", + "Nethermind.Network.Discovery": "[1.35.0-unstable, )", + "Nethermind.Network.Dns": "[1.35.0-unstable, )", + "Nethermind.Network.Enr": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )" } }, "nethermind.init.snapshot": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )" } }, "nethermind.jsonrpc": { "type": "Project", "dependencies": { - "Nethermind.Abi": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Evm": "[1.36.0-unstable, )", - "Nethermind.Facade": "[1.36.0-unstable, )", - "Nethermind.Network.Dns": "[1.36.0-unstable, )", - "Nethermind.Sockets": "[1.36.0-unstable, )", - "Nethermind.Synchronization": "[1.36.0-unstable, )", - "Nethermind.Wallet": "[1.36.0-unstable, )", + "Nethermind.Abi": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.Facade": "[1.35.0-unstable, )", + "Nethermind.Network.Dns": "[1.35.0-unstable, )", + "Nethermind.Sockets": "[1.35.0-unstable, )", + "Nethermind.Synchronization": "[1.35.0-unstable, )", + "Nethermind.Wallet": "[1.35.0-unstable, )", "System.Linq.Async": "[6.0.3, )" } }, "nethermind.jsonrpc.tracestore": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )" } }, "nethermind.keystore": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Serialization.Json": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Serialization.Json": "[1.35.0-unstable, )", "SCrypt": "[2.0.0.2, )" } }, @@ -1607,41 +1607,41 @@ "type": "Project", "dependencies": { "NLog": "[5.5.1, )", - "Nethermind.Logging": "[1.36.0-unstable, )" + "Nethermind.Logging": "[1.35.0-unstable, )" } }, "nethermind.merge.aura": { "type": "Project", "dependencies": { - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Consensus.AuRa": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Db": "[1.36.0-unstable, )", - "Nethermind.Evm": "[1.36.0-unstable, )", - "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )", - "Nethermind.State": "[1.36.0-unstable, )" + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Consensus.AuRa": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Db": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )", + "Nethermind.State": "[1.35.0-unstable, )" } }, "nethermind.merge.plugin": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )" } }, "nethermind.merkleization": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Serialization.Ssz": "[1.36.0-unstable, )" + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Serialization.Ssz": "[1.35.0-unstable, )" } }, "nethermind.monitoring": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Logging": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Logging": "[1.35.0-unstable, )", "prometheus-net.AspNetCore": "[8.2.1, )" } }, @@ -1649,14 +1649,14 @@ "type": "Project", "dependencies": { "Crc32.NET": "[1.2.0, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", "Nethermind.DotNetty.Handlers": "[1.0.2.76, )", - "Nethermind.Network.Contract": "[1.36.0-unstable, )", - "Nethermind.Network.Stats": "[1.36.0-unstable, )", - "Nethermind.Synchronization": "[1.36.0-unstable, )", + "Nethermind.Network.Contract": "[1.35.0-unstable, )", + "Nethermind.Network.Stats": "[1.35.0-unstable, )", + "Nethermind.Synchronization": "[1.35.0-unstable, )", "Snappier": "[1.2.0, )", "System.Linq.Async": "[6.0.3, )" } @@ -1664,17 +1664,17 @@ "nethermind.network.contract": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.36.0-unstable, )" + "Nethermind.Config": "[1.35.0-unstable, )" } }, "nethermind.network.discovery": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Facade": "[1.36.0-unstable, )", - "Nethermind.Network": "[1.36.0-unstable, )", - "Nethermind.Network.Enr": "[1.36.0-unstable, )", + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Facade": "[1.35.0-unstable, )", + "Nethermind.Network": "[1.35.0-unstable, )", + "Nethermind.Network.Enr": "[1.35.0-unstable, )", "PierTwo.Lantern.Discv5.WireProtocol": "[1.0.0-preview.6, )" } }, @@ -1682,148 +1682,148 @@ "type": "Project", "dependencies": { "DnsClient": "[1.8.0, )", - "Nethermind.Network": "[1.36.0-unstable, )", - "Nethermind.Network.Enr": "[1.36.0-unstable, )" + "Nethermind.Network": "[1.35.0-unstable, )", + "Nethermind.Network.Enr": "[1.35.0-unstable, )" } }, "nethermind.network.enr": { "type": "Project", "dependencies": { - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Network": "[1.36.0-unstable, )" + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Network": "[1.35.0-unstable, )" } }, "nethermind.network.stats": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Logging": "[1.36.0-unstable, )", - "Nethermind.Network.Contract": "[1.36.0-unstable, )" + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Logging": "[1.35.0-unstable, )", + "Nethermind.Network.Contract": "[1.35.0-unstable, )" } }, "nethermind.optimism": { "type": "Project", "dependencies": { "Google.Protobuf": "[3.32.1, )", - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )", + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )", "Nethermind.Libp2p": "[1.0.0-preview.45, )", "Nethermind.Libp2p.Protocols.PubsubPeerDiscovery": "[1.0.0-preview.45, )", - "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", "Snappier": "[1.2.0, )" } }, "nethermind.seq": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.36.0-unstable, )" + "Nethermind.Config": "[1.35.0-unstable, )" } }, "nethermind.serialization.json": { "type": "Project", "dependencies": { "Microsoft.ClearScript.V8": "[7.5.0, )", - "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", "System.IO.Pipelines": "[9.0.10, )" } }, "nethermind.serialization.rlp": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", "Nethermind.DotNetty.Buffers": "[1.0.2.76, )" } }, "nethermind.serialization.ssz": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )" + "Nethermind.Core": "[1.35.0-unstable, )" } }, "nethermind.shutter": { "type": "Project", "dependencies": { "Google.Protobuf": "[3.32.1, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )", "Nethermind.Libp2p": "[1.0.0-preview.45, )", "Nethermind.Libp2p.Protocols.PubsubPeerDiscovery": "[1.0.0-preview.45, )", - "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", - "Nethermind.Merkleization": "[1.36.0-unstable, )", - "Nethermind.Network.Discovery": "[1.36.0-unstable, )", - "Nethermind.Serialization.Ssz": "[1.36.0-unstable, )", - "Nethermind.Specs": "[1.36.0-unstable, )" + "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", + "Nethermind.Merkleization": "[1.35.0-unstable, )", + "Nethermind.Network.Discovery": "[1.35.0-unstable, )", + "Nethermind.Serialization.Ssz": "[1.35.0-unstable, )", + "Nethermind.Specs": "[1.35.0-unstable, )" } }, "nethermind.sockets": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Logging": "[1.36.0-unstable, )", - "Nethermind.Serialization.Json": "[1.36.0-unstable, )" + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Logging": "[1.35.0-unstable, )", + "Nethermind.Serialization.Json": "[1.35.0-unstable, )" } }, "nethermind.specs": { "type": "Project", "dependencies": { - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Serialization.Json": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Serialization.Json": "[1.35.0-unstable, )", "ZstdSharp.Port": "[0.8.6, )" } }, "nethermind.state": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Db": "[1.36.0-unstable, )", - "Nethermind.Evm": "[1.36.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", - "Nethermind.Trie": "[1.36.0-unstable, )" + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Db": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.Trie": "[1.35.0-unstable, )" } }, "nethermind.synchronization": { "type": "Project", "dependencies": { "ConcurrentHashSet": "[1.3.0, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.History": "[1.36.0-unstable, )", - "Nethermind.Logging": "[1.36.0-unstable, )", - "Nethermind.Network.Contract": "[1.36.0-unstable, )", - "Nethermind.Trie": "[1.36.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.History": "[1.35.0-unstable, )", + "Nethermind.Logging": "[1.35.0-unstable, )", + "Nethermind.Network.Contract": "[1.35.0-unstable, )", + "Nethermind.Trie": "[1.35.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, "nethermind.taiko": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Blockchain": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Evm": "[1.36.0-unstable, )", - "Nethermind.Evm.Precompiles": "[1.36.0-unstable, )", - "Nethermind.Init": "[1.36.0-unstable, )", - "Nethermind.JsonRpc": "[1.36.0-unstable, )", - "Nethermind.Logging": "[1.36.0-unstable, )", - "Nethermind.Merge.Plugin": "[1.36.0-unstable, )", - "Nethermind.Serialization.Json": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Blockchain": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.Evm.Precompiles": "[1.35.0-unstable, )", + "Nethermind.Init": "[1.35.0-unstable, )", + "Nethermind.JsonRpc": "[1.35.0-unstable, )", + "Nethermind.Logging": "[1.35.0-unstable, )", + "Nethermind.Merge.Plugin": "[1.35.0-unstable, )", + "Nethermind.Serialization.Json": "[1.35.0-unstable, )" } }, "nethermind.trie": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Db": "[1.36.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Db": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, @@ -1831,38 +1831,38 @@ "type": "Project", "dependencies": { "Collections.Pooled": "[1.0.82, )", - "Nethermind.Config": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.Crypto": "[1.36.0-unstable, )", - "Nethermind.Db": "[1.36.0-unstable, )", - "Nethermind.Evm": "[1.36.0-unstable, )", - "Nethermind.Network.Contract": "[1.36.0-unstable, )", - "Nethermind.State": "[1.36.0-unstable, )", + "Nethermind.Config": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.Crypto": "[1.35.0-unstable, )", + "Nethermind.Db": "[1.35.0-unstable, )", + "Nethermind.Evm": "[1.35.0-unstable, )", + "Nethermind.Network.Contract": "[1.35.0-unstable, )", + "Nethermind.State": "[1.35.0-unstable, )", "NonBlocking": "[2.1.2, )" } }, "nethermind.upnp.plugin": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", + "Nethermind.Api": "[1.35.0-unstable, )", "Open.NAT.Core": "[2.1.0.5, )" } }, "nethermind.wallet": { "type": "Project", "dependencies": { - "Nethermind.Core": "[1.36.0-unstable, )", - "Nethermind.KeyStore": "[1.36.0-unstable, )", - "Nethermind.Serialization.Rlp": "[1.36.0-unstable, )", - "Nethermind.TxPool": "[1.36.0-unstable, )" + "Nethermind.Core": "[1.35.0-unstable, )", + "Nethermind.KeyStore": "[1.35.0-unstable, )", + "Nethermind.Serialization.Rlp": "[1.35.0-unstable, )", + "Nethermind.TxPool": "[1.35.0-unstable, )" } }, "nethermind.xdc": { "type": "Project", "dependencies": { - "Nethermind.Api": "[1.36.0-unstable, )", - "Nethermind.Consensus": "[1.36.0-unstable, )", - "Nethermind.Core": "[1.36.0-unstable, )" + "Nethermind.Api": "[1.35.0-unstable, )", + "Nethermind.Consensus": "[1.35.0-unstable, )", + "Nethermind.Core": "[1.35.0-unstable, )" } }, "AspNetCore.HealthChecks.UI": { From 39e38f5e642fff29f9bd8d59f972fbf58be90e16 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 10:46:17 +0100 Subject: [PATCH 15/19] simplify log --- src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs index ffcd76ae8339..5f796e5db26d 100644 --- a/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs +++ b/src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs @@ -1856,7 +1856,7 @@ private static void ThrowCountOverLimit(int count, int bytesLeft, RlpLimit limit string message = string.IsNullOrEmpty(limit.CollectionExpression) ? $"Collection count of {count} is over limit {limit.Limit} or {bytesLeft} bytes left" : $"Collection count {limit.CollectionExpression} of {count} is over limit {limit.Limit} or {bytesLeft} bytes left"; - if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR: {message}; {new StackTrace().ToString().Replace(Environment.NewLine, " ")}"); + if (_logger.IsDebug) _logger.Error($"DEBUG/ERROR: {message}; {new StackTrace()}"); throw new RlpLimitException(message); } } From b860678f6274f6a0032c2ef03dbd93e20c2b2d07 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 11:32:29 +0100 Subject: [PATCH 16/19] Don't abbreviate ForkchoiceStateV1 hashes --- .../Data/ForkchoiceStateV1.cs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs b/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs index 546e2fe4df9d..249ffff3e254 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs @@ -10,35 +10,28 @@ namespace Nethermind.Merge.Plugin.Data; /// /// /// -public class ForkchoiceStateV1 +public class ForkchoiceStateV1(Hash256 headBlockHash, Hash256 finalizedBlockHash, Hash256 safeBlockHash) { - public ForkchoiceStateV1(Hash256 headBlockHash, Hash256 finalizedBlockHash, Hash256 safeBlockHash) - { - HeadBlockHash = headBlockHash; - FinalizedBlockHash = finalizedBlockHash; - SafeBlockHash = safeBlockHash; - } - /// /// Hash of the head of the canonical chain. /// - public Hash256 HeadBlockHash { get; set; } + public Hash256 HeadBlockHash { get; set; } = headBlockHash; /// /// Safe block hash of the canonical chain under certain synchrony and honesty assumptions. This value MUST be either equal to or an ancestor of headBlockHash. /// /// Can be when transition block is not finalized yet. - public Hash256 SafeBlockHash { get; set; } + public Hash256 SafeBlockHash { get; set; } = safeBlockHash; /// /// Hash of the most recent finalized block /// /// Can be when transition block is not finalized yet. - public Hash256 FinalizedBlockHash { get; set; } + public Hash256 FinalizedBlockHash { get; set; } = finalizedBlockHash; - public override string ToString() => $"ForkChoice: {HeadBlockHash.ToShortString()}, Safe: {SafeBlockHash.ToShortString()}, Finalized: {FinalizedBlockHash.ToShortString()}"; + public override string ToString() => $"ForkChoice: {HeadBlockHash}, Safe: {SafeBlockHash}, Finalized: {FinalizedBlockHash}"; public string ToString(long? headNumber, long? safeNumber, long? finalizedNumber) => headNumber is null || safeNumber is null || finalizedNumber is null ? ToString() - : $"ForkChoice: {headNumber} ({HeadBlockHash.ToShortString()}), Safe: {safeNumber} ({SafeBlockHash.ToShortString()}), Finalized: {finalizedNumber} ({FinalizedBlockHash.ToShortString()})"; + : $"ForkChoice: {headNumber} ({HeadBlockHash}), Safe: {safeNumber} ({SafeBlockHash}), Finalized: {finalizedNumber} ({FinalizedBlockHash})"; } From 3a23350bb2a8b5240b324e9560684481766a496e Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 12:08:10 +0100 Subject: [PATCH 17/19] revert spammy ForkchoiceStateV1 --- .../Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs b/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs index 249ffff3e254..1eb47a3018ff 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin/Data/ForkchoiceStateV1.cs @@ -33,5 +33,5 @@ public class ForkchoiceStateV1(Hash256 headBlockHash, Hash256 finalizedBlockHash public string ToString(long? headNumber, long? safeNumber, long? finalizedNumber) => headNumber is null || safeNumber is null || finalizedNumber is null ? ToString() - : $"ForkChoice: {headNumber} ({HeadBlockHash}), Safe: {safeNumber} ({SafeBlockHash}), Finalized: {finalizedNumber} ({FinalizedBlockHash})"; + : $"ForkChoice: {headNumber} ({HeadBlockHash.ToShortString()}), Safe: {safeNumber} ({SafeBlockHash.ToShortString()}), Finalized: {finalizedNumber} ({FinalizedBlockHash.ToShortString()})"; } From 35ae90fbf5dc64818af72cfa0d8b9f177fd82cac Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 12:08:31 +0100 Subject: [PATCH 18/19] Fix missed dispose on StorageRange in ProgressTracker --- .../Nethermind.Synchronization/SnapSync/ProgressTracker.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Nethermind/Nethermind.Synchronization/SnapSync/ProgressTracker.cs b/src/Nethermind/Nethermind.Synchronization/SnapSync/ProgressTracker.cs index e3f4715ced9d..5e681453fd2a 100644 --- a/src/Nethermind/Nethermind.Synchronization/SnapSync/ProgressTracker.cs +++ b/src/Nethermind/Nethermind.Synchronization/SnapSync/ProgressTracker.cs @@ -407,6 +407,7 @@ public void EnqueueNextSlot(StorageRange parentRequest, int accountIndex, ValueH public void RetryStorageRange(StorageRange storageRange) { + bool dispose = false; if (storageRange.Accounts.Count == 1) { EnqueueNextSlot(storageRange); @@ -417,9 +418,12 @@ public void RetryStorageRange(StorageRange storageRange) { EnqueueAccountStorage(account); } + + dispose = true; } Interlocked.Add(ref _activeStorageRequests, -(storageRange?.Accounts.Count ?? 0)); + if (dispose) storageRange.Dispose(); } public void ReportAccountRangePartitionFinished(in ValueHash256 hashLimit) From 1802c4c517aa70b191c1e834ea505df17ab5c1e7 Mon Sep 17 00:00:00 2001 From: "lukasz.rozmej" Date: Mon, 3 Nov 2025 13:17:43 +0100 Subject: [PATCH 19/19] fix test --- .../Nethermind.Merge.Plugin.Test/EngineModuleTests.V1.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V1.cs b/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V1.cs index 8ee688de990a..3396aa0844d6 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V1.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V1.cs @@ -140,7 +140,7 @@ public async Task can_parse_forkchoiceUpdated_with_implicit_null_payloadAttribut public void ForkchoiceV1_ToString_returns_correct_results() { ForkchoiceStateV1 forkchoiceState = new(TestItem.KeccakA, TestItem.KeccakF, TestItem.KeccakC); - forkchoiceState.ToString().Should().Be("ForkChoice: 0x03783f...35b760, Safe: 0x017e66...b18f72, Finalized: 0xe61d9a...97c37a"); + forkchoiceState.ToString().Should().Be("ForkChoice: 0x03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760, Safe: 0x017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f72, Finalized: 0xe61d9a3d3848fb2cdd9a2ab61e2f21a10ea431275aed628a0557f9dee697c37a"); } [Test]