diff --git a/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java index 00b06b584ac..2a5b316809b 100644 --- a/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java @@ -90,7 +90,7 @@ default boolean isConsensusMigration() { OptionalLong getParisBlockNumber(); - OptionalLong getShanghaiBlockNumber(); + OptionalLong getEIP1153BlockNumber(); Optional getBaseFeePerGas(); diff --git a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java index d27de129d08..c7699d275a5 100644 --- a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java @@ -292,8 +292,8 @@ public OptionalLong getParisBlockNumber() { } @Override - public OptionalLong getShanghaiBlockNumber() { - return getOptionalLong("shanghaiblock"); + public OptionalLong getEIP1153BlockNumber() { + return getOptionalLong("eip1153Block"); } @Override @@ -453,7 +453,7 @@ public Map asMap() { getArrowGlacierBlockNumber().ifPresent(l -> builder.put("arrowGlacierBlock", l)); getGrayGlacierBlockNumber().ifPresent(l -> builder.put("grayGlacierBlock", l)); getParisBlockNumber().ifPresent(l -> builder.put("parisBlock", l)); - getShanghaiBlockNumber().ifPresent(l -> builder.put("shanghaiBlock", l)); + getEIP1153BlockNumber().ifPresent(l -> builder.put("eip1153Block", l)); getTerminalBlockNumber().ifPresent(l -> builder.put("terminalBlockNumber", l)); getTerminalBlockHash().ifPresent(h -> builder.put("terminalBlockHash", h.toHexString())); @@ -573,7 +573,7 @@ public List getForks() { getArrowGlacierBlockNumber(), getGrayGlacierBlockNumber(), getParisBlockNumber(), - getShanghaiBlockNumber(), + getEIP1153BlockNumber(), getTerminalBlockNumber(), getEcip1015BlockNumber(), getDieHardBlockNumber(), diff --git a/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java index 53471a7e4f2..f4b9ce0e97d 100644 --- a/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java @@ -44,7 +44,7 @@ public class StubGenesisConfigOptions implements GenesisConfigOptions { private OptionalLong arrowGlacierBlockNumber = OptionalLong.empty(); private OptionalLong grayGlacierBlockNumber = OptionalLong.empty(); private OptionalLong parisBlockNumber = OptionalLong.empty(); - private OptionalLong shanghaiBlockNumber = OptionalLong.empty(); + private OptionalLong eip1153BlockNumber = OptionalLong.empty(); private OptionalLong terminalBlockNumber = OptionalLong.empty(); private Optional terminalBlockHash = Optional.empty(); private Optional terminalTotalDifficulty = Optional.empty(); @@ -218,8 +218,8 @@ public OptionalLong getParisBlockNumber() { } @Override - public OptionalLong getShanghaiBlockNumber() { - return shanghaiBlockNumber; + public OptionalLong getEIP1153BlockNumber() { + return eip1153BlockNumber; } @Override @@ -350,7 +350,7 @@ public Map asMap() { getArrowGlacierBlockNumber().ifPresent(l -> builder.put("arrowGlacierBlock", l)); getGrayGlacierBlockNumber().ifPresent(l -> builder.put("grayGlacierBlock", l)); getParisBlockNumber().ifPresent(l -> builder.put("parisBlock", l)); - getShanghaiBlockNumber().ifPresent(l -> builder.put("shanghaiBlock", l)); + getEIP1153BlockNumber().ifPresent(l -> builder.put("eip1153Block", l)); getTerminalBlockNumber().ifPresent(l -> builder.put("terminalBlockNumber", l)); getTerminalBlockHash().ifPresent(h -> builder.put("terminalBlockHash", h)); // classic fork blocks @@ -489,8 +489,8 @@ public StubGenesisConfigOptions parisBlock(final long blockNumber) { return this; } - public StubGenesisConfigOptions shanghaiBlock(final long blockNumber) { - shanghaiBlockNumber = OptionalLong.of(blockNumber); + public StubGenesisConfigOptions eip1153Block(final long blockNumber) { + eip1153BlockNumber = OptionalLong.of(blockNumber); return this; } diff --git a/config/src/test/resources/all_forks.json b/config/src/test/resources/all_forks.json index 06339b2939a..09f49bfdf3f 100644 --- a/config/src/test/resources/all_forks.json +++ b/config/src/test/resources/all_forks.json @@ -14,7 +14,7 @@ "arrowGlacierBlock": 12, "grayGlacierBlock": 13, "parisBlock": 14, - "shanghaiBlock": 15, + "eip1153Block": 15, "ecip1015Block": 102, "dieHardBlock": 103, "gothamBlock": 104, diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java index 5a617a46b58..e4f7a4eea95 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java @@ -185,8 +185,8 @@ public ProtocolSpecBuilder parisDefinition(final GenesisConfigOptions genesisCon evmConfiguration); } - public ProtocolSpecBuilder shanghaiDefinition(final GenesisConfigOptions genesisConfigOptions) { - return MainnetProtocolSpecs.shanghaiDefinition( + public ProtocolSpecBuilder eip1153Definition(final GenesisConfigOptions genesisConfigOptions) { + return MainnetProtocolSpecs.eip1153Definition( chainId, contractSizeLimit, evmStackSize, diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java index ae6014e3554..78724a80c7e 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java @@ -50,7 +50,7 @@ import org.hyperledger.besu.evm.gascalculator.PetersburgGasCalculator; import org.hyperledger.besu.evm.gascalculator.SpuriousDragonGasCalculator; import org.hyperledger.besu.evm.gascalculator.TangerineWhistleGasCalculator; -import org.hyperledger.besu.evm.gascalculator.ShanghaiGasCalculator; +import org.hyperledger.besu.evm.gascalculator.EIP1153GasCalculator; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.evm.processor.ContractCreationProcessor; import org.hyperledger.besu.evm.processor.MessageCallProcessor; @@ -633,7 +633,8 @@ static ProtocolSpecBuilder parisDefinition( .name("ParisFork"); } - static ProtocolSpecBuilder shanghaiDefinition( + // TODO EIP-1153 change for the actual fork name when known + static ProtocolSpecBuilder eip1153Definition( final Optional chainId, final OptionalInt configContractSizeLimit, final OptionalInt configStackSizeLimit, @@ -652,9 +653,9 @@ static ProtocolSpecBuilder shanghaiDefinition( evmConfiguration) .evmBuilder( (gasCalculator, jdCacheConfig) -> - MainnetEVMs.shanghai(gasCalculator, chainId.orElse(BigInteger.ZERO), evmConfiguration)) - .gasCalculator(ShanghaiGasCalculator::new) - .name("ShanghaiFork"); + MainnetEVMs.eip1153(gasCalculator, chainId.orElse(BigInteger.ZERO), evmConfiguration)) + .gasCalculator(EIP1153GasCalculator::new) + .name("EIP-1153"); } private static TransactionReceipt frontierTransactionReceiptFactory( diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java index 9f955557da4..aa3ec35d879 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java @@ -234,7 +234,7 @@ private TreeMap buildMilestoneMap( create( config.getGrayGlacierBlockNumber(), specFactory.grayGlacierDefinition(config)), create(config.getParisBlockNumber(), specFactory.parisDefinition(config)), - create(config.getShanghaiBlockNumber(), specFactory.shanghaiDefinition(config)), + create(config.getEIP1153BlockNumber(), specFactory.eip1153Definition(config)), // Classic Milestones create(config.getEcip1015BlockNumber(), specFactory.tangerineWhistleDefinition()), create(config.getDieHardBlockNumber(), specFactory.dieHardDefinition()), diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreEVMOperationTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreEVMOperationTest.java index 3fcd8a5070f..6ec0463b5d3 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreEVMOperationTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreEVMOperationTest.java @@ -377,7 +377,7 @@ public static Object[][] scenarios() { @Before public void setUp() { ProtocolSchedule protocolSchedule = MainnetProtocolSchedule.fromConfig( - new StubGenesisConfigOptions().shanghaiBlock(0), EvmConfiguration.DEFAULT); + new StubGenesisConfigOptions().eip1153Block(0), EvmConfiguration.DEFAULT); codeExecutor = new TestCodeExecutor(protocolSchedule, account -> account.setStorageValue(UInt256.ZERO, UInt256.valueOf(0))); } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreOperationTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreOperationTest.java index 4084791e196..844af39fdff 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreOperationTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/vm/operations/TStoreOperationTest.java @@ -14,7 +14,6 @@ */ package org.hyperledger.besu.ethereum.vm.operations; -import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.units.bigints.UInt256; import org.hyperledger.besu.datatypes.Address; import org.hyperledger.besu.datatypes.Wei; @@ -23,14 +22,10 @@ import org.hyperledger.besu.ethereum.core.BlockHeaderTestFixture; import org.hyperledger.besu.ethereum.core.MessageFrameTestFixture; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; -import org.hyperledger.besu.evm.frame.ExceptionalHaltReason; import org.hyperledger.besu.evm.frame.MessageFrame; -import org.hyperledger.besu.evm.gascalculator.ConstantinopleGasCalculator; +import org.hyperledger.besu.evm.gascalculator.EIP1153GasCalculator; import org.hyperledger.besu.evm.gascalculator.GasCalculator; -import org.hyperledger.besu.evm.gascalculator.LondonGasCalculator; -import org.hyperledger.besu.evm.gascalculator.ShanghaiGasCalculator; import org.hyperledger.besu.evm.operation.Operation.OperationResult; -import org.hyperledger.besu.evm.operation.SStoreOperation; import org.hyperledger.besu.evm.operation.TLoadOperation; import org.hyperledger.besu.evm.operation.TStoreOperation; import org.hyperledger.besu.evm.worldstate.WorldUpdater; @@ -49,7 +44,7 @@ public class TStoreOperationTest { - private static final GasCalculator gasCalculator = new ShanghaiGasCalculator(); + private static final GasCalculator gasCalculator = new EIP1153GasCalculator(); private MessageFrame createMessageFrame( final Address address, final long initialGas, final long remainingGas) { diff --git a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java index 599b45617f5..690807007e2 100644 --- a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java +++ b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java @@ -68,7 +68,7 @@ public static ReferenceTestProtocolSchedules create() { builder.put( "ArrowGlacier", createSchedule(new StubGenesisConfigOptions().arrowGlacierBlock(0))); builder.put("GrayGlacier", createSchedule(new StubGenesisConfigOptions().grayGlacierBlock(0))); - builder.put("Shanghai", createSchedule(new StubGenesisConfigOptions().shanghaiBlock(0))); + builder.put("EIP1153", createSchedule(new StubGenesisConfigOptions().eip1153Block(0))); return new ReferenceTestProtocolSchedules(builder.build()); } diff --git a/evm/src/main/java/org/hyperledger/besu/evm/MainnetEVMs.java b/evm/src/main/java/org/hyperledger/besu/evm/MainnetEVMs.java index bd9d5e38685..3c3f26bfa5a 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/MainnetEVMs.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/MainnetEVMs.java @@ -17,12 +17,12 @@ import org.hyperledger.besu.evm.gascalculator.BerlinGasCalculator; import org.hyperledger.besu.evm.gascalculator.ByzantiumGasCalculator; import org.hyperledger.besu.evm.gascalculator.ConstantinopleGasCalculator; +import org.hyperledger.besu.evm.gascalculator.EIP1153GasCalculator; import org.hyperledger.besu.evm.gascalculator.FrontierGasCalculator; import org.hyperledger.besu.evm.gascalculator.GasCalculator; import org.hyperledger.besu.evm.gascalculator.IstanbulGasCalculator; import org.hyperledger.besu.evm.gascalculator.LondonGasCalculator; import org.hyperledger.besu.evm.gascalculator.PetersburgGasCalculator; -import org.hyperledger.besu.evm.gascalculator.ShanghaiGasCalculator; import org.hyperledger.besu.evm.gascalculator.SpuriousDragonGasCalculator; import org.hyperledger.besu.evm.gascalculator.TangerineWhistleGasCalculator; import org.hyperledger.besu.evm.internal.EvmConfiguration; @@ -398,25 +398,26 @@ public static void registerParisOperations( registry.put(new PrevRanDaoOperation(gasCalculator)); } - public static EVM shanghai(final BigInteger chainId, final EvmConfiguration evmConfiguration) { - return shanghai(new ShanghaiGasCalculator(), chainId, evmConfiguration); + // TODO EIP-1153 change for the actual fork name when known + public static EVM eip1153(final BigInteger chainId, final EvmConfiguration evmConfiguration) { + return eip1153(new EIP1153GasCalculator(), chainId, evmConfiguration); } - public static EVM shanghai( + public static EVM eip1153( final GasCalculator gasCalculator, final BigInteger chainId, final EvmConfiguration evmConfiguration) { - return new EVM(shanghaiOperations(gasCalculator, chainId), gasCalculator, evmConfiguration); + return new EVM(eip1153Operations(gasCalculator, chainId), gasCalculator, evmConfiguration); } - public static OperationRegistry shanghaiOperations( + public static OperationRegistry eip1153Operations( final GasCalculator gasCalculator, final BigInteger chainId) { OperationRegistry operationRegistry = new OperationRegistry(); - registerShanghaiOperations(operationRegistry, gasCalculator, chainId); + registerEIP1153Operations(operationRegistry, gasCalculator, chainId); return operationRegistry; } - public static void registerShanghaiOperations( + public static void registerEIP1153Operations( final OperationRegistry registry, final GasCalculator gasCalculator, final BigInteger chainID) { diff --git a/evm/src/main/java/org/hyperledger/besu/evm/gascalculator/ShanghaiGasCalculator.java b/evm/src/main/java/org/hyperledger/besu/evm/gascalculator/EIP1153GasCalculator.java similarity index 90% rename from evm/src/main/java/org/hyperledger/besu/evm/gascalculator/ShanghaiGasCalculator.java rename to evm/src/main/java/org/hyperledger/besu/evm/gascalculator/EIP1153GasCalculator.java index 0063dd7770b..d31c41f15d0 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/gascalculator/ShanghaiGasCalculator.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/gascalculator/EIP1153GasCalculator.java @@ -14,12 +14,12 @@ */ package org.hyperledger.besu.evm.gascalculator; -public class ShanghaiGasCalculator extends LondonGasCalculator { +public class EIP1153GasCalculator extends LondonGasCalculator { private static final long TLOAD_GAS = WARM_STORAGE_READ_COST; private static final long TSTORE_GAS = WARM_STORAGE_READ_COST; - public ShanghaiGasCalculator() {} + public EIP1153GasCalculator() {} // EIP-1153 @Override