Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
8eb2df2
Update CLZ gas cost for devnet3 (#8953)
benaadams Jul 10, 2025
9bd7d2f
Update tx gas cap for devnet3 (#8954)
benaadams Jul 10, 2025
113f22f
Don't block background tasks when syncing (#8971)
benaadams Jul 10, 2025
af748bd
Rename blob metrics (#8972)
flcl42 Jul 11, 2025
2ae971c
Fix Taiko Engine Api (#8974)
asdacap Jul 11, 2025
3ebbd24
Fix call opcode
SiddharthV1 Jul 11, 2025
9cc19ba
Merge branch 'master' into ilevm/aot-precompiler
SiddharthV1 Jul 11, 2025
f415499
Better null-ckecks in TryGetCanonicalTransaction (#8969)
LukaszRozmej Jul 11, 2025
31bbbee
Revise JSON-RPC docs generation (#8967)
rubo Jul 11, 2025
3efda4c
Fix/OOM when downloading from genesis. (#8975)
asdacap Jul 12, 2025
5ff5511
Cache PropertyInfo lookups for JsonRpc (#8976)
benaadams Jul 12, 2025
f9d7692
Auto-update fast sync settings (#8978)
core-repository-dispatch-app[bot] Jul 13, 2025
8ee7c3f
Update OP Superchain chains (#8979)
core-repository-dispatch-app[bot] Jul 13, 2025
72debe8
Remove use of Linq.Sum from hot paths (#8977)
benaadams Jul 13, 2025
661aa0a
Fix sstore
SiddharthV1 Jul 13, 2025
d22946f
Notice execution only if code length > 0
SiddharthV1 Jul 13, 2025
efbc9c1
Merge branch 'master' into ilevm/aot-precompiler
SiddharthV1 Jul 13, 2025
979b265
Isolate Tracer in Proof Module and remove IVisitingWorldState (#8981)
asdacap Jul 14, 2025
ac37e35
More hot code in ConnectNodes (#8982)
benaadams Jul 14, 2025
2b0e838
Only access "warmup" hashtable once per warmup (#8983)
benaadams Jul 14, 2025
5993011
EIP-7594: Constant maxBlobsPerTx (#8940)
flcl42 Jul 14, 2025
f05894f
Fail fast on Db corruption (#8986)
benaadams Jul 14, 2025
942f674
Merge branch 'master' into ilevm/aot-precompiler
SiddharthV1 Jul 15, 2025
b1072c7
Fix extcodecopy & extcodehash
SiddharthV1 Jul 15, 2025
9a8b1ae
Formatting
SiddharthV1 Jul 15, 2025
9bb8edb
Configure EWC Zurich hard fork (#8985)
rubo Jul 15, 2025
c9fe29c
feat: Add RegexOptions.Compiled flag to NewPayloadJsonRpcValidator (#…
reallesee Jul 15, 2025
a041649
Check for null code hash
SiddharthV1 Jul 15, 2025
bea66a5
Improve locking when looking up RlpDecoders (#8987)
benaadams Jul 15, 2025
abcafd9
Opt in no_ilevm mode in tests
SiddharthV1 Jul 15, 2025
cf3b1e9
Fix ilevm executes only when not tracing
SiddharthV1 Jul 15, 2025
88960a5
Fix ilevm tracing check
SiddharthV1 Jul 16, 2025
316d1d1
Merge branch 'merge-ilevm-temp' into ilevm/aot-precompiler
SiddharthV1 Jul 16, 2025
2e6ec02
Merge branch 'master' into ilevm/aot-precompiler
SiddharthV1 Jul 16, 2025
f9efe2b
Fix tracing check that allows ilevm analysis & execution
SiddharthV1 Jul 16, 2025
f0eb535
Formatting
SiddharthV1 Jul 16, 2025
333c5b3
Fix spelling
SiddharthV1 Jul 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
497 changes: 256 additions & 241 deletions src/Nethermind/Chains/energyweb.json

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion src/Nethermind/Nethermind.Evm.Test/ILEVM/IlEvmTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1914,7 +1914,11 @@ public void All_Opcodes_Have_Metadata()
[Test, TestCaseSource(nameof(GetJitBytecodesSamples))]
public void ILVM_AOT_Execution_Equivalence_Tests((string msg, Instruction[] opcode, byte[] bytecode, EvmExceptionType, IReleaseSpec spec) testcase)
{
IlVirtualMachineTestsBase standardChain = new IlVirtualMachineTestsBase(new VMConfig(), testcase.spec);
IlVirtualMachineTestsBase standardChain = new IlVirtualMachineTestsBase(new VMConfig
{
IlEvmEnabledMode = ILMode.NO_ILVM,
IsILEvmEnabled = false,
}, testcase.spec);

IlVirtualMachineTestsBase enhancedChain = new IlVirtualMachineTestsBase(new VMConfig
{
Expand Down
2 changes: 1 addition & 1 deletion src/Nethermind/Nethermind.Evm/CodeAnalysis/CodeInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public void AnalyzeInBackgroundIfRequired()
private int _callCount;
public void NoticeExecution(IVMConfig vmConfig, ILogger logger, IReleaseSpec spec)
{
if ( CodeHash is null
if (CodeHash is null
|| vmConfig.IlEvmEnabledMode == ILMode.NO_ILVM
|| !IlMetadata.IsNotProcessed
|| Code.Length == 0)
Expand Down
9 changes: 9 additions & 0 deletions src/Nethermind/Nethermind.Evm/Tracing/ITxTracer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,15 @@ public interface ITxTracer : IWorldStateTracer, IDisposable, IILVMTracer
|| IsTracingFees
|| IsTracingLogs;

bool IsTracingIlEvmCompatible =>
(
(IsTracingReceipt || IsTracingIlEvmCalls)
&& !(IsTracing || IsTracingStorage || IsTracingState)
)
|| !(
IsTracing || IsTracingStorage || IsTracingState
);

/// <summary>
/// Transaction completed successfully
/// </summary>
Expand Down
4 changes: 2 additions & 2 deletions src/Nethermind/Nethermind.Evm/VirtualMachine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1076,7 +1076,7 @@ private CallResult ExecuteCall<TTracingInst>(
}


if (_vmConfig.IlEvmEnabledMode is ILMode.AOT_MODE)
if (_vmConfig.IlEvmEnabledMode is ILMode.AOT_MODE && _txTracer.IsTracingIlEvmCompatible && env.CodeInfo.CodeSpan.Length > 0 && env.CodeInfo.CodeHash is not null)
{
// IlAnalyzer.Analyse(env.CodeInfo as CodeInfo, ILMode.AOT_MODE, _vmConfig, _logger);
env.CodeInfo.NoticeExecution(_vmConfig, _logger, Spec);
Expand Down Expand Up @@ -1131,7 +1131,7 @@ private CallResult ExecuteCall<TTracingInst>(
vmState.Memory.Save(in localPreviousDest, previousCallOutput);
}

if (env.CodeInfo.IlMetadata.IsPrecompiled && (typeof(TTracingInst) != typeof(OnFlag)))
if (env.CodeInfo.IlMetadata.IsPrecompiled)
{
Metrics.IlvmAotPrecompiledCalls++; // this will treat continuations as new calls

Expand Down
28 changes: 23 additions & 5 deletions src/Nethermind/Nethermind.Serialization.Rlp/Rlp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,26 +78,41 @@ public Rlp(byte[] bytes)

private static readonly Dictionary<RlpDecoderKey, IRlpDecoder> _decoderBuilder = new();
private static FrozenDictionary<RlpDecoderKey, IRlpDecoder>? _decoders;
private static Lock _decoderLock = new Lock();
private static Lock _decoderLock = new();
public static FrozenDictionary<RlpDecoderKey, IRlpDecoder> Decoders
{
get
{
using Lock.Scope _ = _decoderLock.EnterScope();
return _decoders ??= _decoderBuilder.ToFrozenDictionary();
FrozenDictionary<RlpDecoderKey, IRlpDecoder> decoders = _decoders;
if (decoders is not null)
{
// Already exists no need for lock
return decoders;
}

return CreateDecoders();
}
}

private static FrozenDictionary<RlpDecoderKey, IRlpDecoder> CreateDecoders()
{
using Lock.Scope _ = _decoderLock.EnterScope();
// Recreate, if not already recreated
return _decoders ??= _decoderBuilder.ToFrozenDictionary();
}

public static void ResetDecoders()
{
using Lock.Scope _ = _decoderLock.EnterScope();
_decoderBuilder.Clear();
_decoders = null;
RegisterDecoders(Assembly.GetAssembly(typeof(Rlp)));
Rlp.RegisterDecoder(typeof(Transaction), TxDecoder.Instance);
RegisterDecoder(typeof(Transaction), TxDecoder.Instance);
}

public static void RegisterDecoder(RlpDecoderKey key, IRlpDecoder decoder)
{
using Lock.Scope _ = _decoderLock.EnterScope();
_decoderBuilder[key] = decoder;
// Mark FrozenDictionary as null to force re-creation
_decoders = null;
Expand Down Expand Up @@ -146,6 +161,7 @@ public static void RegisterDecoders(Assembly assembly, bool canOverrideExistingD

void AddEncoder(RlpDecoderKey key)
{
using Lock.Scope _ = _decoderLock.EnterScope();
if (!_decoderBuilder.TryGetValue(key, out IRlpDecoder? value) || canOverrideExistingDecoders)
{
try
Expand Down Expand Up @@ -1921,7 +1937,9 @@ public readonly struct RlpDecoderKey(Type type, string key = RlpDecoderKey.Defau

public bool Equals(RlpDecoderKey other) => _type.Equals(other._type) && _key.Equals(other._key);

public override int GetHashCode() => HashCode.Combine(_type, _key);
public override int GetHashCode() => (int)BitOperations.Crc32C(
(uint)_type.GetHashCode(),
(uint)MemoryMarshal.AsBytes(_key.AsSpan()).FastHash());

public override bool Equals(object obj) => obj is RlpDecoderKey key && Equals(key);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace Nethermind.Tools.Kute.JsonRpcValidator.Eth;

public class NewPayloadJsonRpcValidator : IJsonRpcValidator
{
private readonly Regex _pattern = new Regex("engine_newPayload");
private readonly Regex _pattern = new Regex("engine_newPayload", RegexOptions.Compiled);

public bool IsValid(JsonRpc request, JsonDocument? response)
{
Expand Down