Skip to content

Commit 9459e4f

Browse files
Remove blob gas from gas calculator builder (#8719)
Signed-off-by: Gabriel-Trintinalia <[email protected]>
1 parent ea25615 commit 9459e4f

File tree

3 files changed

+27
-29
lines changed

3 files changed

+27
-29
lines changed

ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ClassicProtocolSpecs.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public static ProtocolSpecBuilder tangerineWhistleDefinition(
7474
return MainnetProtocolSpecs.homesteadDefinition(
7575
evmConfiguration, isParallelTxProcessingEnabled, metricsSystem)
7676
.isReplayProtectionSupported(true)
77-
.gasCalculator(blobSchedule -> new TangerineWhistleGasCalculator())
77+
.gasCalculator(TangerineWhistleGasCalculator::new)
7878
.transactionValidatorFactoryBuilder(
7979
(evm, gasLimitCalculator, feeMarket) ->
8080
new TransactionValidatorFactory(
@@ -89,7 +89,7 @@ public static ProtocolSpecBuilder dieHardDefinition(
8989
final MetricsSystem metricsSystem) {
9090
return tangerineWhistleDefinition(
9191
chainId, evmConfiguration, isParallelTxProcessingEnabled, metricsSystem)
92-
.gasCalculator(blobSchedule -> new DieHardGasCalculator())
92+
.gasCalculator(DieHardGasCalculator::new)
9393
.difficultyCalculator(ClassicDifficultyCalculators.DIFFICULTY_BOMB_PAUSED)
9494
.name("DieHard");
9595
}
@@ -157,7 +157,7 @@ public static ProtocolSpecBuilder atlantisDefinition(
157157
metricsSystem)
158158
.evmBuilder(MainnetEVMs::byzantium)
159159
.evmConfiguration(evmConfiguration)
160-
.gasCalculator(blobSchedule -> new SpuriousDragonGasCalculator())
160+
.gasCalculator(SpuriousDragonGasCalculator::new)
161161
.skipZeroBlockRewards(true)
162162
.messageCallProcessorBuilder(MessageCallProcessor::new)
163163
.precompileContractRegistryBuilder(MainnetPrecompiledContractRegistries::byzantium)
@@ -205,7 +205,7 @@ public static ProtocolSpecBuilder aghartaDefinition(
205205
isParallelTxProcessingEnabled,
206206
metricsSystem)
207207
.evmBuilder(MainnetEVMs::constantinople)
208-
.gasCalculator(blobSchedule -> new PetersburgGasCalculator())
208+
.gasCalculator(PetersburgGasCalculator::new)
209209
.evmBuilder(MainnetEVMs::constantinople)
210210
.precompileContractRegistryBuilder(MainnetPrecompiledContractRegistries::istanbul)
211211
.name("Agharta");
@@ -225,7 +225,7 @@ public static ProtocolSpecBuilder phoenixDefinition(
225225
evmConfiguration,
226226
isParallelTxProcessingEnabled,
227227
metricsSystem)
228-
.gasCalculator(blobSchedule -> new IstanbulGasCalculator())
228+
.gasCalculator(IstanbulGasCalculator::new)
229229
.evmBuilder(
230230
(gasCalculator, evmConfig) ->
231231
MainnetEVMs.istanbul(
@@ -293,7 +293,7 @@ public static ProtocolSpecBuilder magnetoDefinition(
293293
evmConfiguration,
294294
isParallelTxProcessingEnabled,
295295
metricsSystem)
296-
.gasCalculator(blobSchedule -> new BerlinGasCalculator())
296+
.gasCalculator(BerlinGasCalculator::new)
297297
.transactionValidatorFactoryBuilder(
298298
(evm, gasLimitCalculator, feeMarket) ->
299299
new TransactionValidatorFactory(
@@ -323,7 +323,7 @@ public static ProtocolSpecBuilder mystiqueDefinition(
323323
evmConfiguration,
324324
isParallelTxProcessingEnabled,
325325
metricsSystem)
326-
.gasCalculator(blobSchedule -> new LondonGasCalculator())
326+
.gasCalculator(LondonGasCalculator::new)
327327
.contractCreationProcessorBuilder(
328328
evm ->
329329
new ContractCreationProcessor(
@@ -346,7 +346,7 @@ public static ProtocolSpecBuilder spiralDefinition(
346346
isParallelTxProcessingEnabled,
347347
metricsSystem)
348348
// EIP-3860
349-
.gasCalculator(blobSchedule -> new ShanghaiGasCalculator())
349+
.gasCalculator(ShanghaiGasCalculator::new)
350350
// EIP-3855
351351
.evmBuilder(
352352
(gasCalculator, jdCacheConfig) ->

ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public static ProtocolSpecBuilder frontierDefinition(
122122
final boolean isParallelTxProcessingEnabled,
123123
final MetricsSystem metricsSystem) {
124124
return new ProtocolSpecBuilder()
125-
.gasCalculator(blobSchedule -> new FrontierGasCalculator())
125+
.gasCalculator(FrontierGasCalculator::new)
126126
.gasLimitCalculatorBuilder(
127127
(feeMarket, gasCalculator, blobSchedule) -> new FrontierTargetingGasLimitCalculator())
128128
.evmBuilder(MainnetEVMs::frontier)
@@ -192,7 +192,7 @@ public static ProtocolSpecBuilder homesteadDefinition(
192192
final boolean isParallelTxProcessingEnabled,
193193
final MetricsSystem metricsSystem) {
194194
return frontierDefinition(evmConfiguration, isParallelTxProcessingEnabled, metricsSystem)
195-
.gasCalculator(blobSchedule -> new HomesteadGasCalculator())
195+
.gasCalculator(HomesteadGasCalculator::new)
196196
.evmBuilder(MainnetEVMs::homestead)
197197
.contractCreationProcessorBuilder(
198198
evm ->
@@ -258,7 +258,7 @@ public static ProtocolSpecBuilder tangerineWhistleDefinition(
258258
final boolean isParallelTxProcessingEnabled,
259259
final MetricsSystem metricsSystem) {
260260
return homesteadDefinition(evmConfiguration, isParallelTxProcessingEnabled, metricsSystem)
261-
.gasCalculator(blobSchedule -> new TangerineWhistleGasCalculator())
261+
.gasCalculator(TangerineWhistleGasCalculator::new)
262262
.name("TangerineWhistle");
263263
}
264264

@@ -270,7 +270,7 @@ public static ProtocolSpecBuilder spuriousDragonDefinition(
270270
return tangerineWhistleDefinition(
271271
evmConfiguration, isParallelTxProcessingEnabled, metricsSystem)
272272
.isReplayProtectionSupported(true)
273-
.gasCalculator(blobSchedule -> new SpuriousDragonGasCalculator())
273+
.gasCalculator(SpuriousDragonGasCalculator::new)
274274
.skipZeroBlockRewards(true)
275275
.messageCallProcessorBuilder(
276276
(evm, precompileContractRegistry) ->
@@ -318,7 +318,7 @@ public static ProtocolSpecBuilder byzantiumDefinition(
318318
final MetricsSystem metricsSystem) {
319319
return spuriousDragonDefinition(
320320
chainId, evmConfiguration, isParallelTxProcessingEnabled, metricsSystem)
321-
.gasCalculator(blobSchedule -> new ByzantiumGasCalculator())
321+
.gasCalculator(ByzantiumGasCalculator::new)
322322
.evmBuilder(MainnetEVMs::byzantium)
323323
.precompileContractRegistryBuilder(MainnetPrecompiledContractRegistries::byzantium)
324324
.difficultyCalculator(MainnetDifficultyCalculators.BYZANTIUM)
@@ -343,7 +343,7 @@ public static ProtocolSpecBuilder constantinopleDefinition(
343343
isParallelTxProcessingEnabled,
344344
metricsSystem)
345345
.difficultyCalculator(MainnetDifficultyCalculators.CONSTANTINOPLE)
346-
.gasCalculator(blobSchedule -> new ConstantinopleGasCalculator())
346+
.gasCalculator(ConstantinopleGasCalculator::new)
347347
.evmBuilder(MainnetEVMs::constantinople)
348348
.blockReward(CONSTANTINOPLE_BLOCK_REWARD)
349349
.name("Constantinople");
@@ -361,7 +361,7 @@ public static ProtocolSpecBuilder petersburgDefinition(
361361
evmConfiguration,
362362
isParallelTxProcessingEnabled,
363363
metricsSystem)
364-
.gasCalculator(blobSchedule -> new PetersburgGasCalculator())
364+
.gasCalculator(PetersburgGasCalculator::new)
365365
.name("Petersburg");
366366
}
367367

@@ -377,7 +377,7 @@ public static ProtocolSpecBuilder istanbulDefinition(
377377
evmConfiguration,
378378
isParallelTxProcessingEnabled,
379379
metricsSystem)
380-
.gasCalculator(blobSchedule -> new IstanbulGasCalculator())
380+
.gasCalculator(IstanbulGasCalculator::new)
381381
.evmBuilder(
382382
(gasCalculator, jdCacheConfig) ->
383383
MainnetEVMs.istanbul(
@@ -422,7 +422,7 @@ static ProtocolSpecBuilder berlinDefinition(
422422
evmConfiguration,
423423
isParallelTxProcessingEnabled,
424424
metricsSystem)
425-
.gasCalculator(blobSchedule -> new BerlinGasCalculator())
425+
.gasCalculator(BerlinGasCalculator::new)
426426
.transactionValidatorFactoryBuilder(
427427
(evm, gasLimitCalculator, feeMarket) ->
428428
new TransactionValidatorFactory(
@@ -463,7 +463,7 @@ static ProtocolSpecBuilder londonDefinition(
463463
(blobSchedule) ->
464464
FeeMarket.london(
465465
londonForkBlockNumber, genesisConfigOptions.getBaseFeePerGas())))
466-
.gasCalculator(blobSchedule -> new LondonGasCalculator())
466+
.gasCalculator(LondonGasCalculator::new)
467467
.gasLimitCalculatorBuilder(
468468
(feeMarket, gasCalculator, blobSchedule) ->
469469
new LondonTargetingGasLimitCalculator(
@@ -607,7 +607,7 @@ static ProtocolSpecBuilder shanghaiDefinition(
607607
isParallelTxProcessingEnabled,
608608
metricsSystem)
609609
// gas calculator has new code to support EIP-3860 limit and meter initcode
610-
.gasCalculator(blobSchedule -> new ShanghaiGasCalculator())
610+
.gasCalculator(ShanghaiGasCalculator::new)
611611
// EVM has a new operation for EIP-3855 PUSH0 instruction
612612
.evmBuilder(
613613
(gasCalculator, jdCacheConfig) ->
@@ -686,7 +686,7 @@ static ProtocolSpecBuilder cancunDefinition(
686686
.flatMap(BlobScheduleOptions::getCancun)
687687
.orElse(BlobSchedule.CANCUN_DEFAULT))
688688
// gas calculator for EIP-4844 blob gas
689-
.gasCalculator(blobSchedule -> new CancunGasCalculator())
689+
.gasCalculator(CancunGasCalculator::new)
690690
// gas limit with EIP-4844 max blob gas per block
691691
.gasLimitCalculatorBuilder(
692692
(feeMarket, gasCalculator, blobSchedule) ->
@@ -783,9 +783,7 @@ static ProtocolSpecBuilder pragueDefinition(
783783
.getBlobScheduleOptions()
784784
.flatMap(BlobScheduleOptions::getPrague)
785785
.orElse(BlobSchedule.PRAGUE_DEFAULT))
786-
.gasCalculator(
787-
blobSchedule -> new PragueGasCalculator() // EIP-7691 6/9 blob increase
788-
)
786+
.gasCalculator(PragueGasCalculator::new)
789787
// EIP-3074 AUTH and AUTHCALL
790788
.evmBuilder(
791789
(gasCalculator, jdCacheConfig) ->
@@ -870,7 +868,7 @@ static ProtocolSpecBuilder osakaDefinition(
870868
miningConfiguration,
871869
isParallelTxProcessingEnabled,
872870
metricsSystem)
873-
.gasCalculator(blobSchedule -> new OsakaGasCalculator())
871+
.gasCalculator(OsakaGasCalculator::new)
874872
.evmBuilder(
875873
(gasCalculator, __) ->
876874
MainnetEVMs.osaka(gasCalculator, chainId.orElse(BigInteger.ZERO), evmConfiguration))
@@ -995,7 +993,7 @@ private static ProtocolSpecBuilder addEOF(
995993
final ProtocolSpecBuilder protocolSpecBuilder) {
996994
return protocolSpecBuilder
997995
// EIP-7692 EOF v1 Gas calculator
998-
.gasCalculator(blobSchedule -> new EOFGasCalculator())
996+
.gasCalculator(EOFGasCalculator::new)
999997
// EIP-7692 EOF v1 EVM and opcodes
1000998
.evmBuilder(
1001999
(gasCalculator, jdCacheConfig) ->

ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpecBuilder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@
3838
import java.util.Optional;
3939
import java.util.function.BiFunction;
4040
import java.util.function.Function;
41+
import java.util.function.Supplier;
4142

4243
public class ProtocolSpecBuilder {
43-
private Function<BlobSchedule, GasCalculator> gasCalculatorBuilder;
44+
private Supplier<GasCalculator> gasCalculatorBuilder;
4445
private GasLimitCalculatorBuilder gasLimitCalculatorBuilder;
4546
private Wei blockReward;
4647
private boolean skipZeroBlockRewards;
@@ -80,8 +81,7 @@ public class ProtocolSpecBuilder {
8081
private boolean isPoS = false;
8182
private boolean isReplayProtectionSupported = false;
8283

83-
public ProtocolSpecBuilder gasCalculator(
84-
final Function<BlobSchedule, GasCalculator> gasCalculatorBuilder) {
84+
public ProtocolSpecBuilder gasCalculator(final Supplier<GasCalculator> gasCalculatorBuilder) {
8585
this.gasCalculatorBuilder = gasCalculatorBuilder;
8686
return this;
8787
}
@@ -297,7 +297,7 @@ public ProtocolSpec build(final ProtocolSchedule protocolSchedule) {
297297
checkNotNull(blobSchedule, "Missing blob schedule");
298298

299299
final FeeMarket feeMarket = feeMarketBuilder.apply(blobSchedule);
300-
final GasCalculator gasCalculator = gasCalculatorBuilder.apply(blobSchedule);
300+
final GasCalculator gasCalculator = gasCalculatorBuilder.get();
301301
final GasLimitCalculator gasLimitCalculator =
302302
gasLimitCalculatorBuilder.apply(feeMarket, gasCalculator, blobSchedule);
303303
final EVM evm = evmBuilder.apply(gasCalculator, evmConfiguration);

0 commit comments

Comments
 (0)