Merge branch 'main' into zkbesu

Signed-off-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net>
This commit is contained in:
Gabriel-Trintinalia
2024-08-16 16:44:07 +10:00
152 changed files with 1834 additions and 825 deletions

View File

@@ -0,0 +1,188 @@
/*
* Copyright contributors to Hyperledger Besu.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* SPDX-License-Identifier: Apache-2.0
*/
package org.hyperledger.besu.datatypes;
/** Description and metadata for a hard fork */
public interface HardforkId {
/**
* The name of the hard fork.
*
* @return the name for the fork
*/
String name();
/**
* Has the fork been finalized? i.e., could the definition change in future versions of Besu?
*
* @return true if the specification is finalized.
*/
boolean finalized();
/**
* A brief description of the hard fork, suitable for human consumption
*
* @return the description of the fork.
*/
String description();
/** List of all Ethereum Mainnet hardforks, including future and developmental forks. */
enum MainnetHardforkId implements HardforkId {
/** Frontier fork. */
FRONTIER(true, "Frontier"),
/** Homestead fork. */
HOMESTEAD(true, "Homestead"),
/** DAO Fork fork. */
DAO_FORK(true, "DAO Fork"),
/** Tangerine Whistle fork. */
TANGERINE_WHISTLE(true, "Tangerine Whistle"),
/** Spurious Dragon fork. */
SPURIOUS_DRAGON(true, "Spurious Dragon"),
/** Byzantium fork. */
BYZANTIUM(true, "Byzantium"),
/** Constantinople fork. */
CONSTANTINOPLE(true, "Constantinople"),
/** Petersburg fork. */
PETERSBURG(true, "Petersburg"),
/** Istanbul fork. */
ISTANBUL(true, "Istanbul"),
/** Muir Glacier fork. */
MUIR_GLACIER(true, "Muir Glacier"),
/** Berlin fork. */
BERLIN(true, "Berlin"),
/** London fork. */
LONDON(true, "London"),
/** Arrow Glacier fork. */
ARROW_GLACIER(true, "Arrow Glacier"),
/** Gray Glacier fork. */
GRAY_GLACIER(true, "Gray Glacier"),
/** Paris fork. */
PARIS(true, "Paris"),
/** Shanghai fork. */
SHANGHAI(true, "Shanghai"),
/** Cancun fork. */
CANCUN(true, "Cancun"),
/** Cancun + EOF fork. */
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. */
AMSTERDAM(false, "Amsterdam"),
/** Bogota fork. */
BOGOTA(false, "Bogota"),
/** Polis fork. (from the greek form of an earlier incarnation of the city of Istanbul. */
POLIS(false, "Polis"),
/** Bangkok fork. */
BANGKOK(false, "Bangkok"),
/** Development fork, for accepted and unscheduled EIPs. */
FUTURE_EIPS(false, "Development, for accepted and unscheduled EIPs"),
/** Developmental fork, for experimental EIPs. */
EXPERIMENTAL_EIPS(false, "Developmental, for experimental EIPs");
final boolean finalized;
final String description;
MainnetHardforkId(final boolean finalized, final String description) {
this.finalized = finalized;
this.description = description;
}
@Override
public boolean finalized() {
return finalized;
}
@Override
public String description() {
return description;
}
}
/** List of all Ethereum Classic hard forks. */
enum ClassicHardforkId implements HardforkId {
/** Frontier fork. */
FRONTIER(true, "Frontier"),
/** Homestead fork. */
HOMESTEAD(true, "Homestead"),
/** Classic Tangerine Whistle fork. */
CLASSIC_TANGERINE_WHISTLE(true, "Classic Tangerine Whistle"),
/** Die Hard fork. */
DIE_HARD(true, "Die Hard"),
/** Gotham fork. */
GOTHAM(true, "Gotham"),
/** Defuse Difficulty Bomb fork. */
DEFUSE_DIFFICULTY_BOMB(true, "Defuse Difficulty Bomb"),
/** Atlantis fork. */
ATLANTIS(true, "Atlantis"),
/** Agharta fork. */
AGHARTA(true, "Agharta"),
/** Phoenix fork. */
PHOENIX(true, "Phoenix"),
/** Thanos fork. */
THANOS(true, "Thanos"),
/** Magneto fork. */
MAGNETO(true, "Magneto"),
/** Mystique fork. */
MYSTIQUE(true, "Mystique"),
/** Spiral fork. */
SPIRAL(true, "Spiral");
final boolean finalized;
final String description;
ClassicHardforkId(final boolean finalized, final String description) {
this.finalized = finalized;
this.description = description;
}
@Override
public boolean finalized() {
return finalized;
}
@Override
public String description() {
return description;
}
}
/** List of all Linea hard forks. */
enum LineaHardforkId implements HardforkId {
/** opcodes changes fork. */
OP_CODES_CHANGES(false, "Linea");
final boolean finalized;
final String description;
LineaHardforkId(final boolean finalized, final String description) {
this.finalized = finalized;
this.description = description;
}
@Override
public boolean finalized() {
return finalized;
}
@Override
public String description() {
return description;
}
}
}