Skip to content

Commit

Permalink
Add Granite time config and override flag
Browse files Browse the repository at this point in the history
  • Loading branch information
ImTei committed Aug 7, 2024
1 parent e9e7eb8 commit 4499000
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 10 deletions.
9 changes: 8 additions & 1 deletion cmd/utils/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,11 @@ var (
}
OverrideOptimismFjordFlag = flags.BigFlag{
Name: "override.fjord",
Usage: "Manually specify the Optimism Ecotone fork time, overriding the bundled setting",
Usage: "Manually specify the Optimism Fjord fork time, overriding the bundled setting",
}
OverrideOptimismGraniteFlag = flags.BigFlag{
Name: "override.granite",
Usage: "Manually specify the Optimism Granite fork time, overriding the bundled setting",
}
// Ethash settings
EthashCachesInMemoryFlag = cli.IntFlag{
Expand Down Expand Up @@ -2020,6 +2024,9 @@ func SetEthConfig(ctx *cli.Context, nodeConfig *nodecfg.Config, cfg *ethconfig.C
if ctx.IsSet(OverrideOptimismFjordFlag.Name) {
cfg.OverrideOptimismFjordTime = flags.GlobalBig(ctx, OverrideOptimismFjordFlag.Name)
}
if ctx.IsSet(OverrideOptimismGraniteFlag.Name) {
cfg.OverrideOptimismGraniteTime = flags.GlobalBig(ctx, OverrideOptimismGraniteFlag.Name)
}
if ctx.IsSet(InternalConsensusFlag.Name) && clparams.EmbeddedSupported(cfg.NetworkID) {
cfg.InternalCL = ctx.Bool(InternalConsensusFlag.Name)
}
Expand Down
6 changes: 3 additions & 3 deletions core/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func TestGenesisBlockHashes(t *testing.T) {
t.Fatal(err)
}
defer tx.Rollback()
_, block, err := core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, "", logger)
_, block, err := core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, nil, "", logger)
require.NoError(t, err)
expect := params.GenesisHashByChainName(network)
require.NotNil(t, expect, network)
Expand Down Expand Up @@ -85,13 +85,13 @@ func TestCommitGenesisIdempotency(t *testing.T) {
defer tx.Rollback()

genesis := core.GenesisBlockByChainName(networkname.MainnetChainName)
_, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, "", logger)
_, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, nil, "", logger)
require.NoError(t, err)
seq, err := tx.ReadSequence(kv.EthTx)
require.NoError(t, err)
require.Equal(t, uint64(2), seq)

_, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, "", logger)
_, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, nil, "", logger)
require.NoError(t, err)
seq, err = tx.ReadSequence(kv.EthTx)
require.NoError(t, err)
Expand Down
11 changes: 7 additions & 4 deletions core/genesis_write.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,16 @@ import (
//
// The returned chain configuration is never nil.
func CommitGenesisBlock(db kv.RwDB, genesis *types.Genesis, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) {
return CommitGenesisBlockWithOverride(db, genesis, nil, nil, nil, nil, nil, nil, tmpDir, logger)
return CommitGenesisBlockWithOverride(db, genesis, nil, nil, nil, nil, nil, nil, nil, tmpDir, logger)
}

func CommitGenesisBlockWithOverride(db kv.RwDB, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) {
func CommitGenesisBlockWithOverride(db kv.RwDB, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overrideOptimismGraniteTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) {
tx, err := db.BeginRw(context.Background())
if err != nil {
return nil, nil, err
}
defer tx.Rollback()
c, b, err := WriteGenesisBlock(tx, genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overridePragueTime, tmpDir, logger)
c, b, err := WriteGenesisBlock(tx, genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overrideOptimismGraniteTime, overridePragueTime, tmpDir, logger)
if err != nil {
return c, b, err
}
Expand All @@ -88,7 +88,7 @@ func CommitGenesisBlockWithOverride(db kv.RwDB, genesis *types.Genesis, override
return c, b, nil
}

func WriteGenesisBlock(tx kv.RwTx, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) {
func WriteGenesisBlock(tx kv.RwTx, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overrideOptimismGraniteTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) {
var storedBlock *types.Block
if genesis != nil && genesis.Config == nil {
return params.AllProtocolChanges, nil, types.ErrGenesisNoConfig
Expand Down Expand Up @@ -138,6 +138,9 @@ func WriteGenesisBlock(tx kv.RwTx, genesis *types.Genesis, overrideCancunTime, o
if config.IsOptimism() && overrideOptimismFjordTime != nil {
config.FjordTime = overrideOptimismFjordTime
}
if config.IsOptimism() && overrideOptimismGraniteTime != nil {
config.GraniteTime = overrideOptimismGraniteTime
}
}

if (storedHash == libcommon.Hash{}) {
Expand Down
14 changes: 13 additions & 1 deletion erigon-lib/chain/chain_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ type Config struct {
// Delta: the Delta upgrade does not affect the execution-layer, and is thus not configurable in the chain config.
EcotoneTime *big.Int `json:"ecotoneTime,omitempty"` // Ecotone switch time (nil = no fork, 0 = already on optimism ecotone)
FjordTime *big.Int `json:"fjordTime,omitempty"` // Fjord switch time (nil = no fork, 0 = already on optimism fjord)
GraniteTime *big.Int `json:"graniteTime,omitempty"` // Granite switch time (nil = no fork, 0 = already on optimism granite)

// Optional EIP-4844 parameters
MinBlobGasPrice *uint64 `json:"minBlobGasPrice,omitempty"`
Expand Down Expand Up @@ -149,12 +150,13 @@ func (c *Config) String() string {
c.NoPruneContracts,
)
if c.IsOptimism() {
configString += fmt.Sprintf("{Bedrock: %v, Regolith: %v, Canyon: %v, Ecotone: %v, Fjord: %v}",
configString += fmt.Sprintf("{Bedrock: %v, Regolith: %v, Canyon: %v, Ecotone: %v, Fjord: %v, Granite: %v}",
c.BedrockBlock,
c.RegolithTime,
c.CanyonTime,
c.EcotoneTime,
c.FjordTime,
c.GraniteTime,
)
}
return configString
Expand Down Expand Up @@ -336,6 +338,10 @@ func (c *Config) IsFjord(time uint64) bool {
return isForked(c.FjordTime, time)
}

func (c *Config) IsGranite(time uint64) bool {
return isForked(c.GraniteTime, time)
}

// IsOptimism returns whether the node is an optimism node or not.
func (c *Config) IsOptimism() bool {
return c.Optimism != nil
Expand All @@ -362,6 +368,10 @@ func (c *Config) IsOptimismFjord(time uint64) bool {
return c.IsOptimism() && c.IsFjord(time)
}

func (c *Config) IsOptimismGranite(time uint64) bool {
return c.IsOptimism() && c.IsGranite(time)
}

// IsOptimismPreBedrock returns true iff this is an optimism node & bedrock is not yet active
func (c *Config) IsOptimismPreBedrock(num uint64) bool {
return c.IsOptimism() && !c.IsBedrock(num)
Expand Down Expand Up @@ -615,6 +625,7 @@ type Rules struct {
IsAura bool
IsOptimismBedrock, IsOptimismRegolith bool
IsOptimismCanyon, IsOptimismEcotone, IsOptimismFjord bool
IsOptimismGranite bool
}

// Rules ensures c's ChainID is not nil and returns a new Rules instance
Expand Down Expand Up @@ -646,6 +657,7 @@ func (c *Config) Rules(num uint64, time uint64) *Rules {
IsOptimismCanyon: c.IsOptimismCanyon(time),
IsOptimismEcotone: c.IsOptimismEcotone(time),
IsOptimismFjord: c.IsOptimismFjord(time),
IsOptimismGranite: c.IsOptimismGranite(time),
}
}

Expand Down
5 changes: 4 additions & 1 deletion eth/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger
genesisSpec = nil
}
var genesisErr error
chainConfig, genesis, genesisErr = core.WriteGenesisBlock(tx, genesisSpec, config.OverrideCancunTime, config.OverrideShanghaiTime, config.OverrideOptimismCanyonTime, config.OverrideOptimismEcotoneTime, config.OverrideOptimismFjordTime, config.OverridePragueTime, tmpdir, logger)
chainConfig, genesis, genesisErr = core.WriteGenesisBlock(tx, genesisSpec, config.OverrideCancunTime, config.OverrideShanghaiTime, config.OverrideOptimismCanyonTime, config.OverrideOptimismEcotoneTime, config.OverrideOptimismFjordTime, config.OverrideOptimismGraniteTime, config.OverridePragueTime, tmpdir, logger)
if _, ok := genesisErr.(*chain.ConfigCompatError); genesisErr != nil && !ok {
return genesisErr
}
Expand All @@ -330,6 +330,9 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger
if chainConfig.FjordTime == nil {
log.Warn("Optimism FjordTime has not been set")
}
if chainConfig.GraniteTime == nil {
log.Warn("Optimism GraniteTime has not been set")
}
}

setBorDefaultMinerGasPrice(chainConfig, config, logger)
Expand Down
1 change: 1 addition & 0 deletions eth/ethconfig/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ type Config struct {
OverrideOptimismCanyonTime *big.Int `toml:",omitempty"`
OverrideOptimismEcotoneTime *big.Int `toml:",omitempty"`
OverrideOptimismFjordTime *big.Int `toml:",omitempty"`
OverrideOptimismGraniteTime *big.Int `toml:",omitempty"`

OverridePragueTime *big.Int `toml:",omitempty"`

Expand Down
4 changes: 4 additions & 0 deletions params/superchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ func LoadSuperChainConfig(opStackChainCfg *superchain.ChainConfig) *chain.Config
CanyonTime: nil,
EcotoneTime: nil,
FjordTime: nil,
GraniteTime: nil,
TerminalTotalDifficulty: common.Big0,
TerminalTotalDifficultyPassed: true,
Ethash: nil,
Expand All @@ -136,6 +137,9 @@ func LoadSuperChainConfig(opStackChainCfg *superchain.ChainConfig) *chain.Config
if chConfig.FjordTime != nil {
out.FjordTime = new(big.Int).SetUint64(*chConfig.FjordTime)
}
if chConfig.GraniteTime != nil {
out.GraniteTime = new(big.Int).SetUint64(*chConfig.GraniteTime)
}

// special overrides for OP-Stack chains with pre-Regolith upgrade history
switch opStackChainCfg.ChainID {
Expand Down
1 change: 1 addition & 0 deletions turbo/cli/default_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ var DefaultFlags = []cli.Flag{
&utils.OverrideOptimismCanyonFlag,
&utils.OverrideOptimismEcotoneFlag,
&utils.OverrideOptimismFjordFlag,
&utils.OverrideOptimismGraniteFlag,
&utils.RollupSequencerHTTPFlag,
&utils.RollupHistoricalRPCFlag,
&utils.RollupHistoricalRPCTimeoutFlag,
Expand Down

0 comments on commit 4499000

Please sign in to comment.