Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move EOF to the Osaka Fork #7719

Merged
merged 8 commits into from
Oct 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -1407,7 +1407,7 @@ private void configureNativeLibs() {
if (genesisConfigOptionsSupplier.get().getCancunTime().isPresent()
|| genesisConfigOptionsSupplier.get().getCancunEOFTime().isPresent()
|| genesisConfigOptionsSupplier.get().getPragueTime().isPresent()
|| genesisConfigOptionsSupplier.get().getPragueEOFTime().isPresent()) {
|| genesisConfigOptionsSupplier.get().getOsakaTime().isPresent()) {
if (kzgTrustedSetupFile != null) {
KZGPointEvalPrecompiledContract.init(kzgTrustedSetupFile);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,11 +257,11 @@ default boolean isConsensusMigration() {
OptionalLong getPragueTime();

/**
* Gets Prague EOF time.
* Gets Osaka time.
*
* @return the prague time
* @return the osaka time
*/
OptionalLong getPragueEOFTime();
OptionalLong getOsakaTime();

/**
* Gets future eips time.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -308,8 +308,8 @@ public OptionalLong getPragueTime() {
}

@Override
public OptionalLong getPragueEOFTime() {
return getOptionalLong("pragueeoftime");
public OptionalLong getOsakaTime() {
return getOptionalLong("osakatime");
}

@Override
Expand Down Expand Up @@ -486,7 +486,7 @@ public Map<String, Object> asMap() {
getCancunTime().ifPresent(l -> builder.put("cancunTime", l));
getCancunEOFTime().ifPresent(l -> builder.put("cancunEOFTime", l));
getPragueTime().ifPresent(l -> builder.put("pragueTime", l));
getPragueEOFTime().ifPresent(l -> builder.put("pragueEOFTime", l));
getOsakaTime().ifPresent(l -> builder.put("osakaTime", l));
getTerminalBlockNumber().ifPresent(l -> builder.put("terminalBlockNumber", l));
getTerminalBlockHash().ifPresent(h -> builder.put("terminalBlockHash", h.toHexString()));
getFutureEipsTime().ifPresent(l -> builder.put("futureEipsTime", l));
Expand Down Expand Up @@ -640,7 +640,7 @@ public List<Long> getForkBlockTimestamps() {
getCancunTime(),
getCancunEOFTime(),
getPragueTime(),
getPragueEOFTime(),
getOsakaTime(),
getFutureEipsTime(),
getExperimentalEipsTime());
// when adding forks add an entry to ${REPO_ROOT}/config/src/test/resources/all_forks.json
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class StubGenesisConfigOptions implements GenesisConfigOptions, Cloneable
private OptionalLong cancunTime = OptionalLong.empty();
private OptionalLong cancunEOFTime = OptionalLong.empty();
private OptionalLong pragueTime = OptionalLong.empty();
private OptionalLong pragueEOFTime = OptionalLong.empty();
private OptionalLong osakaTime = OptionalLong.empty();
private OptionalLong futureEipsTime = OptionalLong.empty();
private OptionalLong experimentalEipsTime = OptionalLong.empty();
private OptionalLong terminalBlockNumber = OptionalLong.empty();
Expand Down Expand Up @@ -252,8 +252,8 @@ public OptionalLong getPragueTime() {
}

@Override
public OptionalLong getPragueEOFTime() {
return pragueEOFTime;
public OptionalLong getOsakaTime() {
return osakaTime;
}

@Override
Expand Down Expand Up @@ -671,14 +671,13 @@ public StubGenesisConfigOptions pragueTime(final long timestamp) {
}

/**
* PragueEOF time.
* Osaka time.
*
* @param timestamp the timestamp
* @return the stub genesis config options
*/
public StubGenesisConfigOptions pragueEOFTime(final long timestamp) {
pragueTime = OptionalLong.of(timestamp);
pragueEOFTime = pragueTime;
public StubGenesisConfigOptions osakaTime(final long timestamp) {
osakaTime = OptionalLong.of(timestamp);
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,10 +207,9 @@ void shouldGetPragueTime() {
}

@Test
void shouldGetPragueEOFTime() {
final GenesisConfigOptions config =
fromConfigOptions(singletonMap("pragueEOFTime", 1670470143));
assertThat(config.getPragueEOFTime()).hasValue(1670470143);
void shouldGetOsakaTime() {
final GenesisConfigOptions config = fromConfigOptions(singletonMap("osakaTime", 1670470143));
assertThat(config.getOsakaTime()).hasValue(1670470143);
}

@Test
Expand Down Expand Up @@ -247,7 +246,7 @@ void shouldNotReturnEmptyOptionalWhenBlockNumberNotSpecified() {
assertThat(config.getCancunTime()).isEmpty();
assertThat(config.getCancunEOFTime()).isEmpty();
assertThat(config.getPragueTime()).isEmpty();
assertThat(config.getPragueEOFTime()).isEmpty();
assertThat(config.getOsakaTime()).isEmpty();
assertThat(config.getFutureEipsTime()).isEmpty();
assertThat(config.getExperimentalEipsTime()).isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,6 @@ enum MainnetHardforkId implements HardforkId {
CANCUN_EOF(false, "Cancun + EOF"),
/** Prague fork. */
PRAGUE(false, "Prague"),
/** Prague + EOF fork. */
PRAGUE_EOF(false, "Prague + EOF"),
/** Osaka fork. */
OSAKA(false, "Osaka"),
/** Amsterdam fork. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,21 +312,21 @@ private static boolean isCancunEOFAtGenesis(final GenesisConfigFile genesis) {
if (cancunEOFTimestamp.isPresent()) {
return genesis.getTimestamp() >= cancunEOFTimestamp.getAsLong();
}
return isPragueEOFAtGenesis(genesis);
return false;
}

private static boolean isPragueAtGenesis(final GenesisConfigFile genesis) {
final OptionalLong pragueTimestamp = genesis.getConfigOptions().getPragueTime();
if (pragueTimestamp.isPresent()) {
return genesis.getTimestamp() >= pragueTimestamp.getAsLong();
}
return isPragueEOFAtGenesis(genesis);
return isOsakaAtGenesis(genesis);
}

private static boolean isPragueEOFAtGenesis(final GenesisConfigFile genesis) {
final OptionalLong pragueEOFTimestamp = genesis.getConfigOptions().getPragueEOFTime();
if (pragueEOFTimestamp.isPresent()) {
return genesis.getTimestamp() >= pragueEOFTimestamp.getAsLong();
private static boolean isOsakaAtGenesis(final GenesisConfigFile genesis) {
final OptionalLong osakaTimestamp = genesis.getConfigOptions().getOsakaTime();
if (osakaTimestamp.isPresent()) {
return genesis.getTimestamp() >= osakaTimestamp.getAsLong();
}
return isFutureEipsTimeAtGenesis(genesis);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ public ProtocolSpecBuilder pragueDefinition(final GenesisConfigOptions genesisCo
metricsSystem);
}

public ProtocolSpecBuilder pragueEOFDefinition(final GenesisConfigOptions genesisConfigOptions) {
return MainnetProtocolSpecs.pragueEOFDefinition(
public ProtocolSpecBuilder osakaDefinition(final GenesisConfigOptions genesisConfigOptions) {
return MainnetProtocolSpecs.osakaDefinition(
chainId,
isRevertReasonEnabled,
genesisConfigOptions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@
import org.hyperledger.besu.evm.gascalculator.HomesteadGasCalculator;
import org.hyperledger.besu.evm.gascalculator.IstanbulGasCalculator;
import org.hyperledger.besu.evm.gascalculator.LondonGasCalculator;
import org.hyperledger.besu.evm.gascalculator.OsakaGasCalculator;
import org.hyperledger.besu.evm.gascalculator.PetersburgGasCalculator;
import org.hyperledger.besu.evm.gascalculator.PragueEOFGasCalculator;
import org.hyperledger.besu.evm.gascalculator.PragueGasCalculator;
import org.hyperledger.besu.evm.gascalculator.ShanghaiGasCalculator;
import org.hyperledger.besu.evm.gascalculator.SpuriousDragonGasCalculator;
Expand Down Expand Up @@ -815,7 +815,7 @@ static ProtocolSpecBuilder pragueDefinition(
.name("Prague");
}

static ProtocolSpecBuilder pragueEOFDefinition(
static ProtocolSpecBuilder osakaDefinition(
final Optional<BigInteger> chainId,
final boolean enableRevertReason,
final GenesisConfigOptions genesisConfigOptions,
Expand All @@ -833,7 +833,7 @@ static ProtocolSpecBuilder pragueEOFDefinition(
miningParameters,
isParallelTxProcessingEnabled,
metricsSystem);
return addEOF(chainId, evmConfiguration, protocolSpecBuilder).name("PragueEOF");
return addEOF(chainId, evmConfiguration, protocolSpecBuilder).name("Osaka");
}

private static ProtocolSpecBuilder addEOF(
Expand All @@ -842,12 +842,11 @@ private static ProtocolSpecBuilder addEOF(
final ProtocolSpecBuilder protocolSpecBuilder) {
return protocolSpecBuilder
// EIP-7692 EOF v1 Gas calculator
.gasCalculator(PragueEOFGasCalculator::new)
.gasCalculator(OsakaGasCalculator::new)
// EIP-7692 EOF v1 EVM and opcodes
.evmBuilder(
(gasCalculator, jdCacheConfig) ->
MainnetEVMs.pragueEOF(
gasCalculator, chainId.orElse(BigInteger.ZERO), evmConfiguration))
MainnetEVMs.osaka(gasCalculator, chainId.orElse(BigInteger.ZERO), evmConfiguration))
// EIP-7698 EOF v1 creation transaction
.contractCreationProcessorBuilder(
evm ->
Expand All @@ -867,7 +866,7 @@ static ProtocolSpecBuilder futureEipsDefinition(
final MiningParameters miningParameters,
final boolean isParallelTxProcessingEnabled,
final MetricsSystem metricsSystem) {
return pragueEOFDefinition(
return osakaDefinition(
chainId,
enableRevertReason,
genesisConfigOptions,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import org.hyperledger.besu.config.GenesisConfigOptions;
import org.hyperledger.besu.datatypes.HardforkId;
import org.hyperledger.besu.datatypes.HardforkId.MainnetHardforkId;
import org.hyperledger.besu.ethereum.chain.BadBlockManager;
import org.hyperledger.besu.ethereum.core.MiningParameters;
import org.hyperledger.besu.ethereum.core.PrivacyParameters;
Expand Down Expand Up @@ -277,7 +278,7 @@ private void validateEthereumForkOrdering() {
lastForkBlock = validateForkOrder("Cancun", config.getCancunTime(), lastForkBlock);
lastForkBlock = validateForkOrder("CancunEOF", config.getCancunEOFTime(), lastForkBlock);
lastForkBlock = validateForkOrder("Prague", config.getPragueTime(), lastForkBlock);
lastForkBlock = validateForkOrder("PragueEOF", config.getPragueEOFTime(), lastForkBlock);
lastForkBlock = validateForkOrder("Osaka", config.getOsakaTime(), lastForkBlock);
lastForkBlock = validateForkOrder("FutureEips", config.getFutureEipsTime(), lastForkBlock);
lastForkBlock =
validateForkOrder("ExperimentalEips", config.getExperimentalEipsTime(), lastForkBlock);
Expand Down Expand Up @@ -413,9 +414,9 @@ private List<BuilderMapEntry> createMilestones(final MainnetProtocolSpecFactory
config.getPragueTime(),
specFactory.pragueDefinition(config)),
timestampMilestone(
HardforkId.MainnetHardforkId.PRAGUE_EOF,
config.getPragueEOFTime(),
specFactory.pragueEOFDefinition(config)),
MainnetHardforkId.OSAKA,
config.getOsakaTime(),
specFactory.osakaDefinition(config)),
timestampMilestone(
HardforkId.MainnetHardforkId.FUTURE_EIPS,
config.getFutureEipsTime(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public CodeValidateSubCommand() {
String fork =
parentCommand != null && parentCommand.hasFork()
? parentCommand.getFork()
: EvmSpecVersion.PRAGUE.getName();
: EvmSpecVersion.OSAKA.getName();

evm =
Suppliers.memoize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public void run() {
}
ProtocolSpec protocolSpec =
ReferenceTestProtocolSchedules.getInstance()
.geSpecByName(fork == null ? EvmSpecVersion.PRAGUE.getName() : fork);
.geSpecByName(fork == null ? EvmSpecVersion.OSAKA.getName() : fork);
evm = protocolSpec.getEvm();

final JavaType javaType =
Expand Down Expand Up @@ -181,7 +181,7 @@ private void executeEOFTest(final String fileName, final Map<String, EOFTestCase
continue;
}
TestResult actualResult;
if (evmVersion.ordinal() < EvmSpecVersion.PRAGUE_EOF.ordinal()) {
if (evmVersion.ordinal() < EvmSpecVersion.OSAKA.ordinal()) {
actualResult = failed("EOF_InvalidCode");
} else {
actualResult = considerCode(code);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,15 +157,16 @@ public static Map<String, Supplier<ProtocolSchedule>> createSchedules(final BigI
.chainId(chainId))),
Map.entry(
"prague",
createSchedule(
new StubGenesisConfigOptions().pragueTime(0).baseFeePerGas(0x0a).chainId(chainId))),
Map.entry(
"pragueeof",
createSchedule(
new StubGenesisConfigOptions()
.pragueEOFTime(0)
.pragueTime(0)
.osakaTime(0) // TODO remove this once osaka_devnet_0 launches
.baseFeePerGas(0x0a)
.chainId(chainId))),
Map.entry(
"osaka",
createSchedule(
new StubGenesisConfigOptions().osakaTime(0).baseFeePerGas(0x0a).chainId(chainId))),
Map.entry(
"futureeips",
createSchedule(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public void run() {
"Pretty printing of legacy EVM is not supported. Patches welcome!");

} else {
String fork = EvmSpecVersion.PRAGUE.getName();
String fork = EvmSpecVersion.OSAKA.getName();
if (parentCommand.hasFork()) {
fork = parentCommand.getFork();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
import org.hyperledger.besu.evm.gascalculator.HomesteadGasCalculator;
import org.hyperledger.besu.evm.gascalculator.IstanbulGasCalculator;
import org.hyperledger.besu.evm.gascalculator.LondonGasCalculator;
import org.hyperledger.besu.evm.gascalculator.OsakaGasCalculator;
import org.hyperledger.besu.evm.gascalculator.PetersburgGasCalculator;
import org.hyperledger.besu.evm.gascalculator.PragueEOFGasCalculator;
import org.hyperledger.besu.evm.gascalculator.PragueGasCalculator;
import org.hyperledger.besu.evm.gascalculator.ShanghaiGasCalculator;
import org.hyperledger.besu.evm.precompile.PrecompiledContract;
Expand Down Expand Up @@ -142,17 +142,11 @@ public static GasCalculator gasCalculatorForFork(final String fork) {
case LONDON, PARIS -> new LondonGasCalculator();
case SHANGHAI -> new ShanghaiGasCalculator();
case CANCUN -> new CancunGasCalculator();
case CANCUN_EOF -> new OsakaGasCalculator();
case PRAGUE -> new PragueGasCalculator();
case CANCUN_EOF,
PRAGUE_EOF,
OSAKA,
AMSTERDAM,
BOGOTA,
POLIS,
BANGKOK,
FUTURE_EIPS,
EXPERIMENTAL_EIPS ->
new PragueEOFGasCalculator();
case OSAKA -> new OsakaGasCalculator();
case AMSTERDAM, BOGOTA, POLIS, BANGKOK, FUTURE_EIPS, EXPERIMENTAL_EIPS ->
new OsakaGasCalculator();
};
}

Expand Down
Loading
Loading