mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 23:26:44 +00:00
add: mumbai network flag
This commit is contained in:
parent
0a9bd7befd
commit
700d7bcdf4
15 changed files with 145 additions and 6 deletions
|
|
@ -235,6 +235,8 @@ func ethFilter(args []string) (nodeFilter, error) {
|
|||
filter = forkid.NewStaticFilter(params.GoerliChainConfig, params.GoerliGenesisHash)
|
||||
case "ropsten":
|
||||
filter = forkid.NewStaticFilter(params.RopstenChainConfig, params.RopstenGenesisHash)
|
||||
case "mumbai":
|
||||
filter = forkid.NewStaticFilter(params.MumbaiChainConfig, params.MumbaiGenesisHash)
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown network %q", args[0])
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ var (
|
|||
|
||||
goerliFlag = flag.Bool("goerli", false, "Initializes the faucet with Görli network config")
|
||||
rinkebyFlag = flag.Bool("rinkeby", false, "Initializes the faucet with Rinkeby network config")
|
||||
mumbaiFlag = flag.Bool("mumbai", false, "Initializes the faucet with Mumbai network config")
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
@ -147,7 +148,7 @@ func main() {
|
|||
log.Crit("Failed to render the faucet template", "err", err)
|
||||
}
|
||||
// Load and parse the genesis block requested by the user
|
||||
genesis, err := getGenesis(genesisFlag, *goerliFlag, *rinkebyFlag)
|
||||
genesis, err := getGenesis(genesisFlag, *goerliFlag, *rinkebyFlag, *mumbaiFlag)
|
||||
if err != nil {
|
||||
log.Crit("Failed to parse genesis config", "err", err)
|
||||
}
|
||||
|
|
@ -886,7 +887,7 @@ func authNoAuth(url string) (string, string, common.Address, error) {
|
|||
}
|
||||
|
||||
// getGenesis returns a genesis based on input args
|
||||
func getGenesis(genesisFlag *string, goerliFlag bool, rinkebyFlag bool) (*core.Genesis, error) {
|
||||
func getGenesis(genesisFlag *string, goerliFlag bool, rinkebyFlag bool, mumbaiFlag bool) (*core.Genesis, error) {
|
||||
switch {
|
||||
case genesisFlag != nil:
|
||||
var genesis core.Genesis
|
||||
|
|
@ -896,6 +897,8 @@ func getGenesis(genesisFlag *string, goerliFlag bool, rinkebyFlag bool) (*core.G
|
|||
return core.DefaultGoerliGenesisBlock(), nil
|
||||
case rinkebyFlag:
|
||||
return core.DefaultRinkebyGenesisBlock(), nil
|
||||
case mumbaiFlag:
|
||||
return core.DefaultMumbaiGenesisBlock(), nil
|
||||
default:
|
||||
return nil, fmt.Errorf("no genesis flag provided")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ It expects the genesis file as argument.`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Category: "BLOCKCHAIN COMMANDS",
|
||||
Description: `
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ func remoteConsole(ctx *cli.Context) error {
|
|||
path = filepath.Join(path, "rinkeby")
|
||||
} else if ctx.GlobalBool(utils.GoerliFlag.Name) {
|
||||
path = filepath.Join(path, "goerli")
|
||||
} else if ctx.GlobalBool(utils.MumbaiFlag.Name) {
|
||||
path = filepath.Join(path, "mumbai")
|
||||
}
|
||||
}
|
||||
endpoint = fmt.Sprintf("%s/geth.ipc", path)
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ Remove blockchain and state databases`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Usage: "Inspect the storage size for each type of data in the database",
|
||||
Description: `This commands iterates the entire database. If the optional 'prefix' and 'start' arguments are provided, then the iteration is limited to the given subset of data.`,
|
||||
|
|
@ -90,6 +91,7 @@ Remove blockchain and state databases`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
}
|
||||
dbCompactCmd = cli.Command{
|
||||
|
|
@ -103,6 +105,7 @@ Remove blockchain and state databases`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
utils.CacheFlag,
|
||||
utils.CacheDatabaseFlag,
|
||||
},
|
||||
|
|
@ -122,6 +125,7 @@ corruption if it is aborted during execution'!`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: "This command looks up the specified database key from the database.",
|
||||
}
|
||||
|
|
@ -137,6 +141,7 @@ corruption if it is aborted during execution'!`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: `This command deletes the specified database key from the database.
|
||||
WARNING: This is a low-level operation which may cause database corruption!`,
|
||||
|
|
@ -153,6 +158,7 @@ WARNING: This is a low-level operation which may cause database corruption!`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: `This command sets a given database key to the given value.
|
||||
WARNING: This is a low-level operation which may cause database corruption!`,
|
||||
|
|
@ -169,6 +175,7 @@ WARNING: This is a low-level operation which may cause database corruption!`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: "This command looks up the specified database key from the database.",
|
||||
}
|
||||
|
|
@ -184,6 +191,7 @@ WARNING: This is a low-level operation which may cause database corruption!`,
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: "This command displays information about the freezer index.",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@ var (
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
utils.VMEnableDebugFlag,
|
||||
utils.NetworkIdFlag,
|
||||
utils.EthStatsURLFlag,
|
||||
|
|
@ -282,6 +283,9 @@ func prepare(ctx *cli.Context) {
|
|||
case ctx.GlobalIsSet(utils.GoerliFlag.Name):
|
||||
log.Info("Starting Geth on Görli testnet...")
|
||||
|
||||
case ctx.GlobalIsSet(utils.MumbaiFlag.Name):
|
||||
log.Info("Starting Geth on Mumbai testnet...")
|
||||
|
||||
case ctx.GlobalIsSet(utils.DeveloperFlag.Name):
|
||||
log.Info("Starting Geth in ephemeral dev mode...")
|
||||
|
||||
|
|
@ -291,7 +295,7 @@ func prepare(ctx *cli.Context) {
|
|||
// If we're a full node on mainnet without --cache specified, bump default cache allowance
|
||||
if ctx.GlobalString(utils.SyncModeFlag.Name) != "light" && !ctx.GlobalIsSet(utils.CacheFlag.Name) && !ctx.GlobalIsSet(utils.NetworkIdFlag.Name) {
|
||||
// Make sure we're not on any supported preconfigured testnet either
|
||||
if !ctx.GlobalIsSet(utils.RopstenFlag.Name) && !ctx.GlobalIsSet(utils.RinkebyFlag.Name) && !ctx.GlobalIsSet(utils.GoerliFlag.Name) && !ctx.GlobalIsSet(utils.DeveloperFlag.Name) {
|
||||
if !ctx.GlobalIsSet(utils.RopstenFlag.Name) && !ctx.GlobalIsSet(utils.RinkebyFlag.Name) && !ctx.GlobalIsSet(utils.GoerliFlag.Name) && !ctx.GlobalIsSet(utils.MumbaiFlag.Name) && !ctx.GlobalIsSet(utils.DeveloperFlag.Name) {
|
||||
// Nope, we're really on mainnet. Bump that cache up!
|
||||
log.Info("Bumping default cache on mainnet", "provided", ctx.GlobalInt(utils.CacheFlag.Name), "updated", 4096)
|
||||
ctx.GlobalSet(utils.CacheFlag.Name, strconv.Itoa(4096))
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ var (
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
utils.CacheTrieJournalFlag,
|
||||
utils.BloomFilterSizeFlag,
|
||||
},
|
||||
|
|
@ -93,6 +94,7 @@ the trie clean cache with default directory will be deleted.
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: `
|
||||
geth snapshot verify-state <state-root>
|
||||
|
|
@ -113,6 +115,7 @@ In other words, this command does the snapshot to trie conversion.
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: `
|
||||
geth snapshot traverse-state <state-root>
|
||||
|
|
@ -135,6 +138,7 @@ It's also usable without snapshot enabled.
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
},
|
||||
Description: `
|
||||
geth snapshot traverse-rawstate <state-root>
|
||||
|
|
@ -158,6 +162,7 @@ It's also usable without snapshot enabled.
|
|||
utils.RopstenFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
utils.ExcludeCodeFlag,
|
||||
utils.ExcludeStorageFlag,
|
||||
utils.StartKeyFlag,
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{
|
|||
utils.NetworkIdFlag,
|
||||
utils.MainnetFlag,
|
||||
utils.GoerliFlag,
|
||||
utils.MumbaiFlag,
|
||||
utils.RinkebyFlag,
|
||||
utils.RopstenFlag,
|
||||
utils.SyncModeFlag,
|
||||
|
|
|
|||
|
|
@ -155,6 +155,10 @@ var (
|
|||
Name: "ropsten",
|
||||
Usage: "Ropsten network: pre-configured proof-of-work test network",
|
||||
}
|
||||
MumbaiFlag = cli.BoolFlag{
|
||||
Name: "mumbai",
|
||||
Usage: "Mumbai network: pre-configured proof-of-stake test network",
|
||||
}
|
||||
DeveloperFlag = cli.BoolFlag{
|
||||
Name: "dev",
|
||||
Usage: "Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled",
|
||||
|
|
@ -797,6 +801,9 @@ func MakeDataDir(ctx *cli.Context) string {
|
|||
if ctx.GlobalBool(GoerliFlag.Name) {
|
||||
return filepath.Join(path, "goerli")
|
||||
}
|
||||
if ctx.GlobalBool(MumbaiFlag.Name) {
|
||||
return filepath.Join(path, "mumbai")
|
||||
}
|
||||
return path
|
||||
}
|
||||
Fatalf("Cannot determine default data directory, please set manually (--datadir)")
|
||||
|
|
@ -849,6 +856,8 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
|
|||
urls = params.RinkebyBootnodes
|
||||
case ctx.GlobalBool(GoerliFlag.Name):
|
||||
urls = params.GoerliBootnodes
|
||||
case ctx.GlobalBool(MumbaiFlag.Name):
|
||||
urls = params.MumbaiBootnodes
|
||||
case cfg.BootstrapNodes != nil:
|
||||
return // already set, don't apply defaults.
|
||||
}
|
||||
|
|
@ -1292,6 +1301,8 @@ func setDataDir(ctx *cli.Context, cfg *node.Config) {
|
|||
cfg.DataDir = filepath.Join(node.DefaultDataDir(), "rinkeby")
|
||||
case ctx.GlobalBool(GoerliFlag.Name) && cfg.DataDir == node.DefaultDataDir():
|
||||
cfg.DataDir = filepath.Join(node.DefaultDataDir(), "goerli")
|
||||
case ctx.GlobalBool(MumbaiFlag.Name) && cfg.DataDir == node.DefaultDataDir():
|
||||
cfg.DataDir = filepath.Join(node.DefaultDataDir(), "mumbai")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1477,7 +1488,7 @@ 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, RopstenFlag, RinkebyFlag, GoerliFlag)
|
||||
CheckExclusive(ctx, MainnetFlag, DeveloperFlag, RopstenFlag, RinkebyFlag, MumbaiFlag)
|
||||
CheckExclusive(ctx, LightServeFlag, SyncModeFlag, "light")
|
||||
CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer
|
||||
if ctx.GlobalString(GCModeFlag.Name) == "archive" && ctx.GlobalUint64(TxLookupLimitFlag.Name) != 0 {
|
||||
|
|
@ -1503,7 +1514,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
|||
cfg.BorLogs = ctx.GlobalBool(BorLogsFlag.Name)
|
||||
}
|
||||
|
||||
// Cap the cache allowance and tune the garbage collector
|
||||
// Cap the cache allowance and tune the garbage collector
|
||||
mem, err := gopsutil.VirtualMemory()
|
||||
if err == nil {
|
||||
if 32<<(^uintptr(0)>>63) == 32 && mem.Total > 2*1024*1024*1024 {
|
||||
|
|
@ -1634,6 +1645,12 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
|
|||
}
|
||||
cfg.Genesis = core.DefaultGoerliGenesisBlock()
|
||||
SetDNSDiscoveryDefaults(cfg, params.GoerliGenesisHash)
|
||||
case ctx.GlobalBool(MumbaiFlag.Name):
|
||||
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
||||
cfg.NetworkId = 80001
|
||||
}
|
||||
cfg.Genesis = core.DefaultMumbaiGenesisBlock()
|
||||
SetDNSDiscoveryDefaults(cfg, params.MumbaiGenesisHash)
|
||||
case ctx.GlobalBool(DeveloperFlag.Name):
|
||||
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
||||
cfg.NetworkId = 1337
|
||||
|
|
@ -1854,6 +1871,8 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis {
|
|||
genesis = core.DefaultRinkebyGenesisBlock()
|
||||
case ctx.GlobalBool(GoerliFlag.Name):
|
||||
genesis = core.DefaultGoerliGenesisBlock()
|
||||
case ctx.GlobalBool(MumbaiFlag.Name):
|
||||
genesis = core.DefaultMumbaiGenesisBlock()
|
||||
case ctx.GlobalBool(DeveloperFlag.Name):
|
||||
Fatalf("Developer chains are ephemeral")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -248,6 +248,8 @@ func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig {
|
|||
return params.RinkebyChainConfig
|
||||
case ghash == params.GoerliGenesisHash:
|
||||
return params.GoerliChainConfig
|
||||
case ghash == params.MumbaiGenesisHash:
|
||||
return params.MumbaiChainConfig
|
||||
default:
|
||||
return params.AllEthashProtocolChanges
|
||||
}
|
||||
|
|
@ -397,6 +399,20 @@ func DefaultGoerliGenesisBlock() *Genesis {
|
|||
}
|
||||
}
|
||||
|
||||
// DefaultMumbaiGenesisBlock returns the Mumbai network genesis block.
|
||||
func DefaultMumbaiGenesisBlock() *Genesis {
|
||||
return &Genesis{
|
||||
Config: params.MumbaiChainConfig,
|
||||
Nonce: 0,
|
||||
Timestamp: 1558348305,
|
||||
GasLimit: 10000000,
|
||||
Difficulty: big.NewInt(1),
|
||||
Mixhash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"),
|
||||
Coinbase: common.HexToAddress("0x0000000000000000000000000000000000000000"),
|
||||
Alloc: decodePrealloc(mumbaiAllocData),
|
||||
}
|
||||
}
|
||||
|
||||
// DeveloperGenesisBlock returns the 'geth --dev' genesis block.
|
||||
func DeveloperGenesisBlock(period uint64, faucet common.Address) *Genesis {
|
||||
// Override the default period to the user requested one
|
||||
|
|
@ -429,7 +445,10 @@ func DeveloperGenesisBlock(period uint64, faucet common.Address) *Genesis {
|
|||
}
|
||||
|
||||
func decodePrealloc(data string) GenesisAlloc {
|
||||
var p []struct{ Addr, Balance *big.Int }
|
||||
var p []struct {
|
||||
Addr, Balance *big.Int
|
||||
Code []byte
|
||||
}
|
||||
if err := rlp.NewStream(strings.NewReader(data), 0).Decode(&p); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -179,6 +179,13 @@ func NewNode(datadir string, config *NodeConfig) (stack *Node, _ error) {
|
|||
config.EthereumNetworkID = 5
|
||||
}
|
||||
}
|
||||
// If we have the Mumbai testnet, hard code the chain configs too
|
||||
if config.EthereumGenesis == MumbaiGenesis() {
|
||||
genesis.Config = params.MumbaiChainConfig
|
||||
if config.EthereumNetworkID == 1 {
|
||||
config.EthereumNetworkID = 80001
|
||||
}
|
||||
}
|
||||
}
|
||||
// Register the Ethereum protocol if requested
|
||||
if config.EthereumEnabled {
|
||||
|
|
|
|||
|
|
@ -59,6 +59,15 @@ func GoerliGenesis() string {
|
|||
return string(enc)
|
||||
}
|
||||
|
||||
// MumbaiGenesis returns the JSON spec to use for the Mumbai test network
|
||||
func MumbaiGenesis() string {
|
||||
enc, err := json.Marshal(core.DefaultMumbaiGenesisBlock())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return string(enc)
|
||||
}
|
||||
|
||||
// FoundationBootnodes returns the enode URLs of the P2P bootstrap nodes operated
|
||||
// by the foundation running the V5 discovery protocol.
|
||||
func FoundationBootnodes() *Enodes {
|
||||
|
|
|
|||
|
|
@ -67,6 +67,12 @@ var GoerliBootnodes = []string{
|
|||
"enode://a59e33ccd2b3e52d578f1fbd70c6f9babda2650f0760d6ff3b37742fdcdfdb3defba5d56d315b40c46b70198c7621e63ffa3f987389c7118634b0fefbbdfa7fd@51.15.119.157:40303",
|
||||
}
|
||||
|
||||
// MumbaiBootnodes are the enode URLs of the P2P bootstrap nodes running on the
|
||||
// Mumbai test network.
|
||||
var MumbaiBootnodes = []string{
|
||||
"enode://320553cda00dfc003f499a3ce9598029f364fbb3ed1222fdc20a94d97dcc4d8ba0cd0bfa996579dcc6d17a534741fb0a5da303a90579431259150de66b597251@54.147.31.250:30303",
|
||||
}
|
||||
|
||||
var V5Bootnodes = []string{
|
||||
// Teku team's bootnode
|
||||
"enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA",
|
||||
|
|
@ -101,6 +107,8 @@ func KnownDNSNetwork(genesis common.Hash, protocol string) string {
|
|||
net = "rinkeby"
|
||||
case GoerliGenesisHash:
|
||||
net = "goerli"
|
||||
case MumbaiGenesisHash:
|
||||
net = "mumbai"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ var (
|
|||
RopstenGenesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d")
|
||||
RinkebyGenesisHash = common.HexToHash("0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177")
|
||||
GoerliGenesisHash = common.HexToHash("0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a")
|
||||
MumbaiGenesisHash = common.HexToHash("0x7b66506a9ebdbf30d32b43c5f15a3b1216269a1ec3a75aa3182b86176a2b1ca7")
|
||||
)
|
||||
|
||||
// TrustedCheckpoints associates each known checkpoint with the genesis hash of
|
||||
|
|
@ -40,6 +41,7 @@ var TrustedCheckpoints = map[common.Hash]*TrustedCheckpoint{
|
|||
RopstenGenesisHash: RopstenTrustedCheckpoint,
|
||||
RinkebyGenesisHash: RinkebyTrustedCheckpoint,
|
||||
GoerliGenesisHash: GoerliTrustedCheckpoint,
|
||||
MumbaiGenesisHash: MumbaiTrustedCheckpoint,
|
||||
}
|
||||
|
||||
// CheckpointOracles associates each known checkpoint oracles with the genesis hash of
|
||||
|
|
@ -49,6 +51,7 @@ var CheckpointOracles = map[common.Hash]*CheckpointOracleConfig{
|
|||
RopstenGenesisHash: RopstenCheckpointOracle,
|
||||
RinkebyGenesisHash: RinkebyCheckpointOracle,
|
||||
GoerliGenesisHash: GoerliCheckpointOracle,
|
||||
MumbaiGenesisHash: MumbaiCheckpointOracle,
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -220,6 +223,53 @@ var (
|
|||
Threshold: 2,
|
||||
}
|
||||
|
||||
// MumbaiChainConfig contains the chain parameters to run a node on the Mumbai test network.
|
||||
MumbaiChainConfig = &ChainConfig{
|
||||
ChainID: big.NewInt(80001),
|
||||
HomesteadBlock: big.NewInt(0),
|
||||
DAOForkBlock: nil,
|
||||
DAOForkSupport: true,
|
||||
EIP150Hash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"),
|
||||
EIP150Block: big.NewInt(0),
|
||||
EIP155Block: big.NewInt(0),
|
||||
EIP158Block: big.NewInt(0),
|
||||
ByzantiumBlock: big.NewInt(0),
|
||||
ConstantinopleBlock: big.NewInt(0),
|
||||
PetersburgBlock: big.NewInt(0),
|
||||
IstanbulBlock: big.NewInt(2722000),
|
||||
MuirGlacierBlock: big.NewInt(2722000),
|
||||
BerlinBlock: big.NewInt(13996000),
|
||||
Bor: &BorConfig{
|
||||
Period: 2,
|
||||
ProducerDelay: 6,
|
||||
Sprint: 64,
|
||||
BackupMultiplier: 2,
|
||||
ValidatorContract: "0x0000000000000000000000000000000000001000",
|
||||
StateReceiverContract: "0x0000000000000000000000000000000000001001",
|
||||
},
|
||||
}
|
||||
|
||||
// MumbaiTrustedCheckpoint contains the light client trusted checkpoint for the Mumbai test network.
|
||||
MumbaiTrustedCheckpoint = &TrustedCheckpoint{
|
||||
SectionIndex: 160,
|
||||
SectionHead: common.HexToHash("0xb5a666c790dc35a5613d04ebba8ba47a850b45a15d9b95ad7745c35ae034b5a5"),
|
||||
CHTRoot: common.HexToHash("0x6b4e00df52bdc38fa6c26c8ef595c2ad6184963ea36ab08ee744af460aa735e1"),
|
||||
BloomRoot: common.HexToHash("0x8fa88f5e50190cb25243aeee262a1a9e4434a06f8d455885dcc1b5fc48c33836"),
|
||||
}
|
||||
|
||||
// MumbaiCheckpointOracle contains a set of configs for the Mumbai test network oracle.
|
||||
MumbaiCheckpointOracle = &CheckpointOracleConfig{
|
||||
Address: common.HexToAddress("0x18CA0E045F0D772a851BC7e48357Bcaab0a0795D"),
|
||||
Signers: []common.Address{
|
||||
common.HexToAddress("0x4769bcaD07e3b938B7f43EB7D278Bc7Cb9efFb38"), // Peter
|
||||
common.HexToAddress("0x78d1aD571A1A09D60D9BBf25894b44e4C8859595"), // Martin
|
||||
common.HexToAddress("0x286834935f4A8Cfb4FF4C77D5770C2775aE2b0E7"), // Zsolt
|
||||
common.HexToAddress("0xb86e2B0Ab5A4B1373e40c51A7C712c70Ba2f9f8E"), // Gary
|
||||
common.HexToAddress("0x0DF8fa387C602AE62559cC4aFa4972A7045d6707"), // Guillaume
|
||||
},
|
||||
Threshold: 2,
|
||||
}
|
||||
|
||||
// AllEthashProtocolChanges contains every protocol change (EIPs) introduced
|
||||
// and accepted by the Ethereum core developers into the Ethash consensus.
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in a new issue