From 8b8b66352a59436727c571d6addd3af50d982a5a Mon Sep 17 00:00:00 2001 From: jagdeep sidhu Date: Mon, 7 Oct 2024 16:31:14 -0700 Subject: [PATCH] fix startup --- cmd/geth/chaincmd.go | 5 +++++ cmd/geth/config.go | 3 ++- cmd/utils/flags.go | 17 ++++++++++------- consensus/beacon/consensus.go | 2 +- core/headerchain.go | 10 ++++++++++ params/config.go | 6 ++++++ 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index d85e4a83c8..be6d164c97 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -419,6 +419,11 @@ func importHistory(ctx *cli.Context) error { network = "mainnet" case ctx.Bool(utils.SepoliaFlag.Name): network = "sepolia" + // SYSCOIN + case ctx.Bool(utils.SyscoinFlag.Name): + network = "syscoin" + case ctx.Bool(utils.TanenbaumFlag.Name): + network = "tanenbaum" } } else { // No network flag set, try to determine network based on files diff --git a/cmd/geth/config.go b/cmd/geth/config.go index fd57ff40de..acc39e0891 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -243,7 +243,8 @@ func makeFullNode(ctx *cli.Context) *node.Node { blsyncer := blsync.NewClient(ctx) blsyncer.SetEngineRPC(rpc.DialInProc(srv)) stack.RegisterLifecycle(blsyncer) - } else { + // SYSCOIN + } else if eth.BlockChain().GetChainConfig().SyscoinBlock == nil { // Launch the engine API for interacting with external consensus client. err := catalyst.Register(stack, eth) if err != nil { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 338ad52cd3..6c98640dfc 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -140,8 +140,7 @@ var ( } MainnetFlag = &cli.BoolFlag{ Name: "mainnet", - // SYSCOIN - Usage: "Syscoin mainnet", + Usage: "Ethereum mainnet", Category: flags.EthCategory, } // SYSCOIN @@ -152,10 +151,12 @@ var ( TanenbaumFlag = &cli.BoolFlag{ Name: "tanenbaum", Usage: "Tanenbaum network: pre-configured NEVM-based Tanenbaum test network.", + Category: flags.EthCategory, } SyscoinFlag = &cli.BoolFlag{ Name: "syscoin", - Usage: "Syscoin network: pre-configured NEVM-based Syscoin network.", + Usage: "Syscoin network: pre-configured NEVM-based Syscoin mainnet.", + Category: flags.EthCategory, } SepoliaFlag = &cli.BoolFlag{ Name: "sepolia", @@ -971,10 +972,12 @@ var ( // TestnetFlags is the flag group of all built-in supported testnets. TestnetFlags = []cli.Flag{ SepoliaFlag, + // SYSCOIN + TanenbaumFlag, HoleskyFlag, } - // NetworkFlags is the flag group of all built-in supported networks. - NetworkFlags = append([]cli.Flag{MainnetFlag}, TestnetFlags...) + // SYSCOIN NetworkFlags is the flag group of all built-in supported networks. + NetworkFlags = append([]cli.Flag{MainnetFlag, SyscoinFlag}, TestnetFlags...) // DatabaseFlags is the flag group of all database flags. DatabaseFlags = []cli.Flag{ @@ -1670,8 +1673,8 @@ func CheckExclusive(ctx *cli.Context, args ...interface{}) { // SetEthConfig applies eth-related command line flags to the config. func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { - // Avoid conflicting network flags - CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag) + // SYSCOIN Avoid conflicting network flags + CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, TanenbaumFlag, SyscoinFlag, HoleskyFlag) CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer // Set configurations from CLI flags diff --git a/consensus/beacon/consensus.go b/consensus/beacon/consensus.go index 4e98d624c5..975693b167 100644 --- a/consensus/beacon/consensus.go +++ b/consensus/beacon/consensus.go @@ -257,7 +257,7 @@ func (beacon *Beacon) verifyHeader(chain consensus.ChainHeaderReader, header, pa } // Verify the block's difficulty to ensure it's the default constant if !chain.Config().IsNexus(header.Number) { - if beaconDifficulty.Cmp(big.NewInt(1)) != 0 { + if header.Difficulty.Cmp(big.NewInt(1)) != 0 { return fmt.Errorf("invalid difficulty: have %v, want %v", header.Difficulty, new(big.Int).SetInt64(1)) } } else { diff --git a/core/headerchain.go b/core/headerchain.go index f7df56adef..28b10dc92c 100644 --- a/core/headerchain.go +++ b/core/headerchain.go @@ -38,6 +38,8 @@ const ( headerCacheLimit = 512 tdCacheLimit = 1024 numberCacheLimit = 2048 + // SYSCOIN + SYSBlockCacheLimit = 50001 ) // HeaderChain implements the basic block header chain logic. It is not usable @@ -85,6 +87,10 @@ func NewHeaderChain(chainDb ethdb.Database, config *params.ChainConfig, engine c headerCache: lru.NewCache[common.Hash, *types.Header](headerCacheLimit), tdCache: lru.NewCache[common.Hash, *big.Int](tdCacheLimit), numberCache: lru.NewCache[common.Hash, uint64](numberCacheLimit), + // SYSCOIN + SYSHashCache: lru.NewCache[uint64, []byte](SYSBlockCacheLimit), + DataHashCache: lru.NewCache[common.Hash, []byte](SYSBlockCacheLimit), + NEVMCache: lru.NewCache[common.Hash, []byte](headerCacheLimit), procInterrupt: procInterrupt, engine: engine, } @@ -728,6 +734,10 @@ func (hc *HeaderChain) setHead(headBlock uint64, headTime uint64, updateFn Updat hc.headerCache.Purge() hc.tdCache.Purge() hc.numberCache.Purge() + // SYSCOIN + hc.SYSHashCache.Purge() + hc.NEVMCache.Purge() + hc.DataHashCache.Purge() } // SetGenesis sets a new genesis block header for the chain diff --git a/params/config.go b/params/config.go index dae28b6cd3..07342a2d12 100644 --- a/params/config.go +++ b/params/config.go @@ -339,6 +339,9 @@ var ( // NetworkNames are user friendly names to use in the chain spec banner. var NetworkNames = map[string]string{ MainnetChainConfig.ChainID.String(): "mainnet", + // SYSCOIN + SyscoinChainConfig.ChainID.String(): "syscoin", + TanenbaumChainConfig.ChainID.String(): "tanenbaum", SepoliaChainConfig.ChainID.String(): "sepolia", HoleskyChainConfig.ChainID.String(): "holesky", } @@ -430,6 +433,9 @@ func (c *ChainConfig) Description() string { } banner += fmt.Sprintf("Chain ID: %v (%s)\n", c.ChainID, network) switch { + // SYSCOIN + case c.SyscoinBlock != nil: + banner += "Consensus: Beacon (proof-of-work), merged with Bitcoin (AuxPoW)\n" case c.Ethash != nil: if c.TerminalTotalDifficulty == nil { banner += "Consensus: Ethash (proof-of-work)\n"