Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
760b319
Incorrect Gas Estimation
svlachakis Jul 31, 2025
07d3983
Incorrect Gas Estimation
svlachakis Jul 31, 2025
bffa6e9
Incorrect Gas Estimation
svlachakis Jul 31, 2025
4ef3b96
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Jul 31, 2025
76746d8
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 1, 2025
74a2409
Changes
svlachakis Aug 3, 2025
313cc67
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 3, 2025
a5b6699
Format
svlachakis Aug 3, 2025
86d1a5f
Tracer Unit Test
svlachakis Aug 3, 2025
6f1b0b3
Improvements
svlachakis Aug 5, 2025
57cdb30
Unit Tests
svlachakis Aug 5, 2025
63035a2
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 5, 2025
8d69dc2
Unit Tests
svlachakis Aug 5, 2025
aa8722e
Unit Tests
svlachakis Aug 5, 2025
4a54305
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 5, 2025
8508806
Improvements
svlachakis Aug 5, 2025
19b4937
Merge branch '9061-incorrect-gas-estimation' of https://github.com/Ne…
svlachakis Aug 5, 2025
c943f30
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 5, 2025
1d5038a
Gas Estimation Refactor
svlachakis Aug 7, 2025
072d8bd
Merge branch '9061-incorrect-gas-estimation' of https://github.com/Ne…
svlachakis Aug 7, 2025
38538ff
Small fixes
svlachakis Aug 7, 2025
1484251
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 7, 2025
0ebfc93
Refactoring
svlachakis Aug 7, 2025
51bfaf1
Revert Changes
svlachakis Aug 7, 2025
5f6a019
Revert Error handling
svlachakis Aug 7, 2025
05fa40a
Revert Error handling
svlachakis Aug 7, 2025
39fbb16
Tests
svlachakis Aug 7, 2025
1a960be
Tests
svlachakis Aug 7, 2025
35b2ffe
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 8, 2025
a93e79b
Error Handling Fixes & Refactoring
svlachakis Aug 8, 2025
6db1aef
Merge branch '9061-incorrect-gas-estimation' of https://github.com/Ne…
svlachakis Aug 8, 2025
c2142e4
GasEstimator Refactoring
svlachakis Aug 8, 2025
39f904a
Small fix
svlachakis Aug 8, 2025
d582293
Small fix
svlachakis Aug 8, 2025
60136ed
Merge branch 'master' into 9061-incorrect-gas-estimation
svlachakis Aug 13, 2025
466e337
Merge remote-tracking branch 'origin/master' into 9061-incorrect-gas-…
svlachakis Aug 14, 2025
cc8d23d
Merge remote-tracking branch 'origin/master' into 9061-incorrect-gas-…
svlachakis Aug 26, 2025
53c3b1e
Refactor revert
svlachakis Aug 26, 2025
9e64227
Revert refactoring
svlachakis Aug 26, 2025
32d3e1e
Refactor Rollback
svlachakis Aug 26, 2025
ad2a6a0
Refactor rollback
svlachakis Aug 26, 2025
2a3d26f
Refactor rollback
svlachakis Aug 26, 2025
43e21fd
Unused Import
svlachakis Aug 26, 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
14 changes: 6 additions & 8 deletions src/Nethermind/Nethermind.Blockchain/Tracing/GasEstimator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ private long BinarySearchEstimate(long leftBound, long rightBound, Transaction t
(long)((gasTracer.GasSpent + gasTracer.TotalRefund + GasCostOf.CallStipend) * marginWithDecimals);
if (optimisticGasEstimate > leftBound && optimisticGasEstimate < rightBound)
{
if (TryExecutableTransaction(tx, header, optimisticGasEstimate, token))
if (TryExecutableTransaction(tx, header, optimisticGasEstimate, token, gasTracer))
rightBound = optimisticGasEstimate;
else
leftBound = optimisticGasEstimate;
Expand All @@ -106,7 +106,7 @@ private long BinarySearchEstimate(long leftBound, long rightBound, Transaction t
&& leftBound + 1 < rightBound)
{
long mid = (leftBound + rightBound) / 2;
if (!TryExecutableTransaction(tx, header, mid, token))
if (!TryExecutableTransaction(tx, header, mid, token, gasTracer))
{
leftBound = mid;
}
Expand All @@ -116,7 +116,7 @@ private long BinarySearchEstimate(long leftBound, long rightBound, Transaction t
}
}

if (rightBound == cap && !TryExecutableTransaction(tx, header, rightBound, token))
if (rightBound == cap && !TryExecutableTransaction(tx, header, rightBound, token, gasTracer))
{
return 0;
}
Expand All @@ -125,18 +125,16 @@ private long BinarySearchEstimate(long leftBound, long rightBound, Transaction t
}

private bool TryExecutableTransaction(Transaction transaction, BlockHeader block, long gasLimit,
CancellationToken token)
CancellationToken token, EstimateGasTracer gasTracer)
{
OutOfGasTracer tracer = new();

Transaction txClone = new Transaction();
transaction.CopyTo(txClone);
txClone.GasLimit = gasLimit;

_transactionProcessor.SetBlockExecutionContext(new(block, _specProvider.GetSpec(block)));
_transactionProcessor.CallAndRestore(txClone, tracer.WithCancellation(token));
TransactionResult result = _transactionProcessor.CallAndRestore(txClone, gasTracer.WithCancellation(token));

return !tracer.OutOfGas;
return result.Success && gasTracer.StatusCode == StatusCode.Success;
}

private class OutOfGasTracer : TxTracer
Comment thread
emlautarom1 marked this conversation as resolved.
Outdated
Expand Down
14 changes: 14 additions & 0 deletions src/Nethermind/Nethermind.Evm.Test/Tracing/GasEstimationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -403,5 +403,19 @@ public TestEnvironment()
estimator = new(_transactionProcessor, _stateProvider, _specProvider, blocksConfig);
}
}

[Test]
public void EstimateGasTracer_should_set_status_code_correctly()
Comment thread
svlachakis marked this conversation as resolved.
Outdated
{
EstimateGasTracer tracer = new();

tracer.MarkAsSuccess(Address.Zero, 25000, [], []);
tracer.StatusCode.Should().Be(StatusCode.Success,
"MarkAsSuccess should set StatusCode to Success");

tracer.MarkAsFailed(Address.Zero, 25000, [], "execution reverted");
tracer.StatusCode.Should().Be(StatusCode.Failure,
"MarkAsFailed should set StatusCode to Failure");
}
}
}
Loading