all: define London+baikal, undefine yolov3, add london override flag (#22822)
* all: define London+baikal, undefine yolov3, add london override flag * cmd, core, params: add baikal genesis definition
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							df20b3b982
						
					
				
				
					commit
					cc606be74c
				
			| @@ -63,7 +63,7 @@ It expects the genesis file as argument.`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 		Category: "BLOCKCHAIN COMMANDS", | ||||
| 		Description: ` | ||||
|   | ||||
| @@ -141,8 +141,8 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) { | ||||
| // makeFullNode loads geth configuration and creates the Ethereum backend. | ||||
| func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { | ||||
| 	stack, cfg := makeConfigNode(ctx) | ||||
| 	if ctx.GlobalIsSet(utils.OverrideBerlinFlag.Name) { | ||||
| 		cfg.Eth.OverrideBerlin = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideBerlinFlag.Name)) | ||||
| 	if ctx.GlobalIsSet(utils.OverrideLondonFlag.Name) { | ||||
| 		cfg.Eth.OverrideLondon = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideLondonFlag.Name)) | ||||
| 	} | ||||
| 	backend, eth := utils.RegisterEthService(stack, &cfg.Eth) | ||||
|  | ||||
|   | ||||
| @@ -134,8 +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.YoloV3Flag.Name) { | ||||
| 				path = filepath.Join(path, "yolo-v3") | ||||
| 			} else if ctx.GlobalBool(utils.BaikalFlag.Name) { | ||||
| 				path = filepath.Join(path, "baikal") | ||||
| 			} | ||||
| 		} | ||||
| 		endpoint = fmt.Sprintf("%s/geth.ipc", path) | ||||
|   | ||||
| @@ -75,7 +75,7 @@ Remove blockchain and state databases`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 		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.`, | ||||
| @@ -91,7 +91,7 @@ Remove blockchain and state databases`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 	} | ||||
| 	dbCompactCmd = cli.Command{ | ||||
| @@ -105,7 +105,7 @@ Remove blockchain and state databases`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 			utils.CacheFlag, | ||||
| 			utils.CacheDatabaseFlag, | ||||
| 		}, | ||||
| @@ -125,7 +125,7 @@ corruption if it is aborted during execution'!`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 		Description: "This command looks up the specified database key from the database.", | ||||
| 	} | ||||
| @@ -141,7 +141,7 @@ corruption if it is aborted during execution'!`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 		Description: `This command deletes the specified database key from the database.  | ||||
| WARNING: This is a low-level operation which may cause database corruption!`, | ||||
| @@ -158,7 +158,7 @@ WARNING: This is a low-level operation which may cause database corruption!`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 		Description: `This command sets a given database key to the given value.  | ||||
| WARNING: This is a low-level operation which may cause database corruption!`, | ||||
| @@ -175,7 +175,7 @@ WARNING: This is a low-level operation which may cause database corruption!`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 		Description: "This command looks up the specified database key from the database.", | ||||
| 	} | ||||
| @@ -191,7 +191,7 @@ WARNING: This is a low-level operation which may cause database corruption!`, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 		}, | ||||
| 		Description: "This command displays information about the freezer index.", | ||||
| 	} | ||||
|   | ||||
| @@ -66,7 +66,7 @@ var ( | ||||
| 		utils.NoUSBFlag, | ||||
| 		utils.USBFlag, | ||||
| 		utils.SmartCardDaemonPathFlag, | ||||
| 		utils.OverrideBerlinFlag, | ||||
| 		utils.OverrideLondonFlag, | ||||
| 		utils.EthashCacheDirFlag, | ||||
| 		utils.EthashCachesInMemoryFlag, | ||||
| 		utils.EthashCachesOnDiskFlag, | ||||
| @@ -138,7 +138,7 @@ var ( | ||||
| 		utils.RopstenFlag, | ||||
| 		utils.RinkebyFlag, | ||||
| 		utils.GoerliFlag, | ||||
| 		utils.YoloV3Flag, | ||||
| 		utils.BaikalFlag, | ||||
| 		utils.VMEnableDebugFlag, | ||||
| 		utils.NetworkIdFlag, | ||||
| 		utils.EthStatsURLFlag, | ||||
| @@ -275,8 +275,8 @@ func prepare(ctx *cli.Context) { | ||||
| 	case ctx.GlobalIsSet(utils.GoerliFlag.Name): | ||||
| 		log.Info("Starting Geth on Görli testnet...") | ||||
|  | ||||
| 	case ctx.GlobalIsSet(utils.YoloV3Flag.Name): | ||||
| 		log.Info("Starting Geth on YOLOv3 testnet...") | ||||
| 	case ctx.GlobalIsSet(utils.BaikalFlag.Name): | ||||
| 		log.Info("Starting Geth on Baikal testnet...") | ||||
|  | ||||
| 	case ctx.GlobalIsSet(utils.DeveloperFlag.Name): | ||||
| 		log.Info("Starting Geth in ephemeral dev mode...") | ||||
|   | ||||
| @@ -44,7 +44,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ | ||||
| 			utils.MainnetFlag, | ||||
| 			utils.GoerliFlag, | ||||
| 			utils.RinkebyFlag, | ||||
| 			utils.YoloV3Flag, | ||||
| 			utils.BaikalFlag, | ||||
| 			utils.RopstenFlag, | ||||
| 			utils.SyncModeFlag, | ||||
| 			utils.ExitWhenSyncedFlag, | ||||
|   | ||||
| @@ -240,8 +240,8 @@ func (w *wizard) manageGenesis() { | ||||
| 		w.conf.Genesis.Config.BerlinBlock = w.readDefaultBigInt(w.conf.Genesis.Config.BerlinBlock) | ||||
|  | ||||
| 		fmt.Println() | ||||
| 		fmt.Printf("Which block should YOLOv3 come into effect? (default = %v)\n", w.conf.Genesis.Config.YoloV3Block) | ||||
| 		w.conf.Genesis.Config.YoloV3Block = w.readDefaultBigInt(w.conf.Genesis.Config.YoloV3Block) | ||||
| 		fmt.Printf("Which block should London come into effect? (default = %v)\n", w.conf.Genesis.Config.LondonBlock) | ||||
| 		w.conf.Genesis.Config.LondonBlock = w.readDefaultBigInt(w.conf.Genesis.Config.LondonBlock) | ||||
|  | ||||
| 		out, _ := json.MarshalIndent(w.conf.Genesis.Config, "", "  ") | ||||
| 		fmt.Printf("Chain configuration updated:\n\n%s\n", out) | ||||
|   | ||||
| @@ -151,9 +151,9 @@ var ( | ||||
| 		Name:  "goerli", | ||||
| 		Usage: "Görli network: pre-configured proof-of-authority test network", | ||||
| 	} | ||||
| 	YoloV3Flag = cli.BoolFlag{ | ||||
| 		Name:  "yolov3", | ||||
| 		Usage: "YOLOv3 network: pre-configured proof-of-authority shortlived test network.", | ||||
| 	BaikalFlag = cli.BoolFlag{ | ||||
| 		Name:  "baikal", | ||||
| 		Usage: "Bailkal network: pre-configured proof-of-authority shortlived test network.", | ||||
| 	} | ||||
| 	RinkebyFlag = cli.BoolFlag{ | ||||
| 		Name:  "rinkeby", | ||||
| @@ -233,9 +233,9 @@ var ( | ||||
| 		Usage: "Megabytes of memory allocated to bloom-filter for pruning", | ||||
| 		Value: 2048, | ||||
| 	} | ||||
| 	OverrideBerlinFlag = cli.Uint64Flag{ | ||||
| 		Name:  "override.berlin", | ||||
| 		Usage: "Manually specify Berlin fork-block, overriding the bundled setting", | ||||
| 	OverrideLondonFlag = cli.Uint64Flag{ | ||||
| 		Name:  "override.london", | ||||
| 		Usage: "Manually specify London fork-block, overriding the bundled setting", | ||||
| 	} | ||||
| 	// Light server and client settings | ||||
| 	LightServeFlag = cli.IntFlag{ | ||||
| @@ -778,8 +778,8 @@ func MakeDataDir(ctx *cli.Context) string { | ||||
| 		if ctx.GlobalBool(GoerliFlag.Name) { | ||||
| 			return filepath.Join(path, "goerli") | ||||
| 		} | ||||
| 		if ctx.GlobalBool(YoloV3Flag.Name) { | ||||
| 			return filepath.Join(path, "yolo-v3") | ||||
| 		if ctx.GlobalBool(BaikalFlag.Name) { | ||||
| 			return filepath.Join(path, "baikal") | ||||
| 		} | ||||
| 		return path | ||||
| 	} | ||||
| @@ -833,8 +833,8 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { | ||||
| 		urls = params.RinkebyBootnodes | ||||
| 	case ctx.GlobalBool(GoerliFlag.Name): | ||||
| 		urls = params.GoerliBootnodes | ||||
| 	case ctx.GlobalBool(YoloV3Flag.Name): | ||||
| 		urls = params.YoloV3Bootnodes | ||||
| 	case ctx.GlobalBool(BaikalFlag.Name): | ||||
| 		urls = params.BaikalBootnodes | ||||
| 	case cfg.BootstrapNodes != nil: | ||||
| 		return // already set, don't apply defaults. | ||||
| 	} | ||||
| @@ -1275,8 +1275,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(YoloV3Flag.Name) && cfg.DataDir == node.DefaultDataDir(): | ||||
| 		cfg.DataDir = filepath.Join(node.DefaultDataDir(), "yolo-v3") | ||||
| 	case ctx.GlobalBool(BaikalFlag.Name) && cfg.DataDir == node.DefaultDataDir(): | ||||
| 		cfg.DataDir = filepath.Join(node.DefaultDataDir(), "baikal") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -1460,7 +1460,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, YoloV3Flag) | ||||
| 	CheckExclusive(ctx, MainnetFlag, DeveloperFlag, RopstenFlag, RinkebyFlag, GoerliFlag, BaikalFlag) | ||||
| 	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 { | ||||
| @@ -1620,11 +1620,11 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { | ||||
| 		} | ||||
| 		cfg.Genesis = core.DefaultGoerliGenesisBlock() | ||||
| 		SetDNSDiscoveryDefaults(cfg, params.GoerliGenesisHash) | ||||
| 	case ctx.GlobalBool(YoloV3Flag.Name): | ||||
| 	case ctx.GlobalBool(BaikalFlag.Name): | ||||
| 		if !ctx.GlobalIsSet(NetworkIdFlag.Name) { | ||||
| 			cfg.NetworkId = new(big.Int).SetBytes([]byte("yolov3x")).Uint64() // "yolov3x" | ||||
| 			cfg.NetworkId = 1642 // https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/client-integration-testnets/baikal.md | ||||
| 		} | ||||
| 		cfg.Genesis = core.DefaultYoloV3GenesisBlock() | ||||
| 		cfg.Genesis = core.DefaultBaikalGenesisBlock() | ||||
| 	case ctx.GlobalBool(DeveloperFlag.Name): | ||||
| 		if !ctx.GlobalIsSet(NetworkIdFlag.Name) { | ||||
| 			cfg.NetworkId = 1337 | ||||
| @@ -1813,8 +1813,8 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis { | ||||
| 		genesis = core.DefaultRinkebyGenesisBlock() | ||||
| 	case ctx.GlobalBool(GoerliFlag.Name): | ||||
| 		genesis = core.DefaultGoerliGenesisBlock() | ||||
| 	case ctx.GlobalBool(YoloV3Flag.Name): | ||||
| 		genesis = core.DefaultYoloV3GenesisBlock() | ||||
| 	case ctx.GlobalBool(BaikalFlag.Name): | ||||
| 		genesis = core.DefaultBaikalGenesisBlock() | ||||
| 	case ctx.GlobalBool(DeveloperFlag.Name): | ||||
| 		Fatalf("Developer chains are ephemeral") | ||||
| 	} | ||||
|   | ||||
| @@ -3049,7 +3049,7 @@ func TestEIP2718Transition(t *testing.T) { | ||||
| 		address = crypto.PubkeyToAddress(key.PublicKey) | ||||
| 		funds   = big.NewInt(1000000000) | ||||
| 		gspec   = &Genesis{ | ||||
| 			Config: params.YoloV3ChainConfig, | ||||
| 			Config: params.TestChainConfig, | ||||
| 			Alloc: GenesisAlloc{ | ||||
| 				address: {Balance: funds}, | ||||
| 				// The address 0xAAAA sloads 0x00 and 0x01 | ||||
|   | ||||
| @@ -156,7 +156,7 @@ func SetupGenesisBlock(db ethdb.Database, genesis *Genesis) (*params.ChainConfig | ||||
| 	return SetupGenesisBlockWithOverride(db, genesis, nil) | ||||
| } | ||||
|  | ||||
| func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, overrideBerlin *big.Int) (*params.ChainConfig, common.Hash, error) { | ||||
| func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, overrideLondon *big.Int) (*params.ChainConfig, common.Hash, error) { | ||||
| 	if genesis != nil && genesis.Config == nil { | ||||
| 		return params.AllEthashProtocolChanges, common.Hash{}, errGenesisNoConfig | ||||
| 	} | ||||
| @@ -202,8 +202,8 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, override | ||||
| 	} | ||||
| 	// Get the existing chain configuration. | ||||
| 	newcfg := genesis.configOrDefault(stored) | ||||
| 	if overrideBerlin != nil { | ||||
| 		newcfg.BerlinBlock = overrideBerlin | ||||
| 	if overrideLondon != nil { | ||||
| 		newcfg.LondonBlock = overrideLondon | ||||
| 	} | ||||
| 	if err := newcfg.CheckConfigForkOrder(); err != nil { | ||||
| 		return newcfg, common.Hash{}, err | ||||
| @@ -246,8 +246,8 @@ func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig { | ||||
| 		return params.RinkebyChainConfig | ||||
| 	case ghash == params.GoerliGenesisHash: | ||||
| 		return params.GoerliChainConfig | ||||
| 	case ghash == params.YoloV3GenesisHash: | ||||
| 		return params.YoloV3ChainConfig | ||||
| 	case ghash == params.BaikalGenesisHash: | ||||
| 		return params.BaikalChainConfig | ||||
| 	default: | ||||
| 		return params.AllEthashProtocolChanges | ||||
| 	} | ||||
| @@ -383,15 +383,15 @@ func DefaultGoerliGenesisBlock() *Genesis { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func DefaultYoloV3GenesisBlock() *Genesis { | ||||
| func DefaultBaikalGenesisBlock() *Genesis { | ||||
| 	// Full genesis: https://gist.github.com/holiman/c6ed9269dce28304ad176314caa75e97 | ||||
| 	return &Genesis{ | ||||
| 		Config:     params.YoloV3ChainConfig, | ||||
| 		Timestamp:  0x6027dd2e, | ||||
| 		ExtraData:  hexutil.MustDecode("0x00000000000000000000000000000000000000000000000000000000000000001041afbcb359d5a8dc58c15b2ff51354ff8a217d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), | ||||
| 		Config:     params.BaikalChainConfig, | ||||
| 		Timestamp:  0x6092ca7f, | ||||
| 		ExtraData:  hexutil.MustDecode("0x00000000000000000000000000000000000000000000000000000000000000005211cea3870c7ba7c6c44b185e62eecdb864cd8c560228ce57d31efbf64c200b2c200aacec78cf17a7148e784fe95a7a750335f8b9572ee28d72e7650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), | ||||
| 		GasLimit:   0x47b760, | ||||
| 		Difficulty: big.NewInt(1), | ||||
| 		Alloc:      decodePrealloc(yoloV3AllocData), | ||||
| 		Alloc:      decodePrealloc(baikalAllocData), | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -25,4 +25,4 @@ const mainnetAllocData = "\xfa\x04]X\u0793\r\x83b\x011\x8e\u0189\x9agT\x06\x908' | ||||
| const ropstenAllocData = "\xf9\x03\xa4\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x80\xc2\v\x80\xc2\f\x80\xc2\r\x80\xc2\x0e\x80\xc2\x0f\x80\xc2\x10\x80\xc2\x11\x80\xc2\x12\x80\xc2\x13\x80\xc2\x14\x80\xc2\x15\x80\xc2\x16\x80\xc2\x17\x80\xc2\x18\x80\xc2\x19\x80\xc2\x1a\x80\xc2\x1b\x80\xc2\x1c\x80\xc2\x1d\x80\xc2\x1e\x80\xc2\x1f\x80\xc2 \x80\xc2!\x80\xc2\"\x80\xc2#\x80\xc2$\x80\xc2%\x80\xc2&\x80\xc2'\x80\xc2(\x80\xc2)\x80\xc2*\x80\xc2+\x80\xc2,\x80\xc2-\x80\xc2.\x80\xc2/\x80\xc20\x80\xc21\x80\xc22\x80\xc23\x80\xc24\x80\xc25\x80\xc26\x80\xc27\x80\xc28\x80\xc29\x80\xc2:\x80\xc2;\x80\xc2<\x80\xc2=\x80\xc2>\x80\xc2?\x80\xc2@\x80\xc2A\x80\xc2B\x80\xc2C\x80\xc2D\x80\xc2E\x80\xc2F\x80\xc2G\x80\xc2H\x80\xc2I\x80\xc2J\x80\xc2K\x80\xc2L\x80\xc2M\x80\xc2N\x80\xc2O\x80\xc2P\x80\xc2Q\x80\xc2R\x80\xc2S\x80\xc2T\x80\xc2U\x80\xc2V\x80\xc2W\x80\xc2X\x80\xc2Y\x80\xc2Z\x80\xc2[\x80\xc2\\\x80\xc2]\x80\xc2^\x80\xc2_\x80\xc2`\x80\xc2a\x80\xc2b\x80\xc2c\x80\xc2d\x80\xc2e\x80\xc2f\x80\xc2g\x80\xc2h\x80\xc2i\x80\xc2j\x80\xc2k\x80\xc2l\x80\xc2m\x80\xc2n\x80\xc2o\x80\xc2p\x80\xc2q\x80\xc2r\x80\xc2s\x80\xc2t\x80\xc2u\x80\xc2v\x80\xc2w\x80\xc2x\x80\xc2y\x80\xc2z\x80\xc2{\x80\xc2|\x80\xc2}\x80\xc2~\x80\xc2\u007f\x80\u00c1\x80\x80\u00c1\x81\x80\u00c1\x82\x80\u00c1\x83\x80\u00c1\x84\x80\u00c1\x85\x80\u00c1\x86\x80\u00c1\x87\x80\u00c1\x88\x80\u00c1\x89\x80\u00c1\x8a\x80\u00c1\x8b\x80\u00c1\x8c\x80\u00c1\x8d\x80\u00c1\x8e\x80\u00c1\x8f\x80\u00c1\x90\x80\u00c1\x91\x80\u00c1\x92\x80\u00c1\x93\x80\u00c1\x94\x80\u00c1\x95\x80\u00c1\x96\x80\u00c1\x97\x80\u00c1\x98\x80\u00c1\x99\x80\u00c1\x9a\x80\u00c1\x9b\x80\u00c1\x9c\x80\u00c1\x9d\x80\u00c1\x9e\x80\u00c1\x9f\x80\u00c1\xa0\x80\u00c1\xa1\x80\u00c1\xa2\x80\u00c1\xa3\x80\u00c1\xa4\x80\u00c1\xa5\x80\u00c1\xa6\x80\u00c1\xa7\x80\u00c1\xa8\x80\u00c1\xa9\x80\u00c1\xaa\x80\u00c1\xab\x80\u00c1\xac\x80\u00c1\xad\x80\u00c1\xae\x80\u00c1\xaf\x80\u00c1\xb0\x80\u00c1\xb1\x80\u00c1\xb2\x80\u00c1\xb3\x80\u00c1\xb4\x80\u00c1\xb5\x80\u00c1\xb6\x80\u00c1\xb7\x80\u00c1\xb8\x80\u00c1\xb9\x80\u00c1\xba\x80\u00c1\xbb\x80\u00c1\xbc\x80\u00c1\xbd\x80\u00c1\xbe\x80\u00c1\xbf\x80\u00c1\xc0\x80\u00c1\xc1\x80\u00c1\u0080\u00c1\u00c0\u00c1\u0100\u00c1\u0140\u00c1\u0180\u00c1\u01c0\u00c1\u0200\u00c1\u0240\u00c1\u0280\u00c1\u02c0\u00c1\u0300\u00c1\u0340\u00c1\u0380\u00c1\u03c0\u00c1\u0400\u00c1\u0440\u00c1\u0480\u00c1\u04c0\u00c1\u0500\u00c1\u0540\u00c1\u0580\u00c1\u05c0\u00c1\u0600\u00c1\u0640\u00c1\u0680\u00c1\u06c0\u00c1\u0700\u00c1\u0740\u00c1\u0780\u00c1\u07c0\u00c1\xe0\x80\u00c1\xe1\x80\u00c1\xe2\x80\u00c1\xe3\x80\u00c1\xe4\x80\u00c1\xe5\x80\u00c1\xe6\x80\u00c1\xe7\x80\u00c1\xe8\x80\u00c1\xe9\x80\u00c1\xea\x80\u00c1\xeb\x80\u00c1\xec\x80\u00c1\xed\x80\u00c1\xee\x80\u00c1\xef\x80\u00c1\xf0\x80\u00c1\xf1\x80\u00c1\xf2\x80\u00c1\xf3\x80\u00c1\xf4\x80\u00c1\xf5\x80\u00c1\xf6\x80\u00c1\xf7\x80\u00c1\xf8\x80\u00c1\xf9\x80\u00c1\xfa\x80\u00c1\xfb\x80\u00c1\xfc\x80\u00c1\xfd\x80\u00c1\xfe\x80\u00c1\xff\x80\u3507KT\xa8\xbd\x15)f\xd6?pk\xae\x1f\xfe\xb0A\x19!\xe5\x8d\f\x9f,\x9c\xd0Ft\xed\xea@\x00\x00\x00" | ||||
| const rinkebyAllocData = "\xf9\x03\xb7\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xf6\x941\xb9\x8d\x14\x00{\xde\xe67)\x80\x86\x98\x8a\v\xbd1\x18E#\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ||||
| const goerliAllocData = "\xf9\x04\x06\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xe0\x94L*\xe4\x82Y5\x05\xf0\x16<\xde\xfc\a>\x81\xc6<\xdaA\a\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe0\x94\xa8\xe8\xf1G2e\x8eKQ\xe8q\x191\x05:\x8ai\xba\xf2\xb1\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe1\x94\u0665\x17\x9f\t\x1d\x85\x05\x1d<\x98'\x85\xef\xd1E\\\uc199\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe1\x94\u08bdBX\xd2v\x887\xba\xa2j(\xfeq\xdc\a\x9f\x84\u01cbJG\xe3\xc1$H\xf4\xad\x00\x00\x00" | ||||
| const yoloV3AllocData = "\xf9\x05o\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xf6\x94\x0e\x89\xe2\xae\xdb\x1c\xfc\u06d4$\xd4\x1a\x1f!\x8fA2s\x81r\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x10A\xaf\xbc\xb3Y\u0568\xdcX\xc1[/\xf5\x13T\xff\x8a!}\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94`\xad\xc0\xf8\x9aA\xaf#|\xe75T\xed\xe1p\xd73\xec\x14\xe0\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94y\x9d2\x9e_X4\x19\x16|\xd7\"\x96$\x85\x92n3\x8fJ\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94|\xf5\xb7\x9b\xfe)\x1ag\xab\x02\xb3\x93\xe4V\xcc\xc4\xc2f\xf7S\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8a\x8e\xaf\xb1\xcfb\xbf\xbe\xb1t\x17i\xda\xe1\xa9\xddG\x99a\x92\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8b\xa1\xf1\tU\x1b\xd42\x800\x12dZ\xc16\xdd\xd6M\xbar\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xb0*.\xda\x1b1\u007f\xbd\x16v\x01(\x83k\n\u015bV\x0e\x9d\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xdf\n\x88\xb2\xb6\x8cg7\x13\xa8\xec\x82`\x03go'.5s\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ||||
| const baikalAllocData = "\xf9\x05\x01\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xf6\x94\x0e\x89\xe2\xae\xdb\x1c\xfc\u06d4$\xd4\x1a\x1f!\x8fA2s\x81r\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94`\xad\xc0\xf8\x9aA\xaf#|\xe75T\xed\xe1p\xd73\xec\x14\xe0\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94y\x9d2\x9e_X4\x19\x16|\xd7\"\x96$\x85\x92n3\x8fJ\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94|\xf5\xb7\x9b\xfe)\x1ag\xab\x02\xb3\x93\xe4V\xcc\xc4\xc2f\xf7S\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8a\x8e\xaf\xb1\xcfb\xbf\xbe\xb1t\x17i\xda\xe1\xa9\xddG\x99a\x92\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\x8b\xa1\xf1\tU\x1b\xd42\x800\x12dZ\xc16\xdd\xd6M\xbar\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x94\xb0*.\xda\x1b1\u007f\xbd\x16v\x01(\x83k\n\u015bV\x0e\x9d\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ||||
|   | ||||
| @@ -186,8 +186,8 @@ func TestGenesisHashes(t *testing.T) { | ||||
| 			hash:    params.RinkebyGenesisHash, | ||||
| 		}, | ||||
| 		{ | ||||
| 			genesis: DefaultYoloV3GenesisBlock(), | ||||
| 			hash:    params.YoloV3GenesisHash, | ||||
| 			genesis: DefaultBaikalGenesisBlock(), | ||||
| 			hash:    params.BaikalGenesisHash, | ||||
| 		}, | ||||
| 	} | ||||
| 	for i, c := range cases { | ||||
|   | ||||
| @@ -991,7 +991,7 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) { | ||||
| // - Add precompiles to access list (2929) | ||||
| // - Add the contents of the optional tx access list (2930) | ||||
| // | ||||
| // This method should only be called if Yolov3/Berlin/2929+2930 is applicable at the current number. | ||||
| // This method should only be called if Berlin/2929+2930 is applicable at the current number. | ||||
| func (s *StateDB) PrepareAccessList(sender common.Address, dst *common.Address, precompiles []common.Address, list types.AccessList) { | ||||
| 	s.AddAddressToAccessList(sender) | ||||
| 	if dst != nil { | ||||
|   | ||||
| @@ -61,7 +61,7 @@ func MakeSigner(config *params.ChainConfig, blockNumber *big.Int) Signer { | ||||
| // have the current block number available, use MakeSigner instead. | ||||
| func LatestSigner(config *params.ChainConfig) Signer { | ||||
| 	if config.ChainID != nil { | ||||
| 		if config.BerlinBlock != nil || config.YoloV3Block != nil { | ||||
| 		if config.BerlinBlock != nil { | ||||
| 			return NewEIP2930Signer(config.ChainID) | ||||
| 		} | ||||
| 		if config.EIP155Block != nil { | ||||
|   | ||||
| @@ -66,7 +66,7 @@ func setDefaults(cfg *Config) { | ||||
| 			IstanbulBlock:       new(big.Int), | ||||
| 			MuirGlacierBlock:    new(big.Int), | ||||
| 			BerlinBlock:         new(big.Int), | ||||
| 			YoloV3Block:         nil, | ||||
| 			LondonBlock:         nil, | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -131,7 +131,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideBerlin) | ||||
| 	chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideLondon) | ||||
| 	if _, ok := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !ok { | ||||
| 		return nil, genesisErr | ||||
| 	} | ||||
|   | ||||
| @@ -200,7 +200,7 @@ type Config struct { | ||||
| 	CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"` | ||||
|  | ||||
| 	// Berlin block override (TODO: remove after the fork) | ||||
| 	OverrideBerlin *big.Int `toml:",omitempty"` | ||||
| 	OverrideLondon *big.Int `toml:",omitempty"` | ||||
| } | ||||
|  | ||||
| // CreateConsensusEngine creates a consensus engine for the given chain configuration. | ||||
|   | ||||
| @@ -88,7 +88,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) { | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideBerlin) | ||||
| 	chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideLondon) | ||||
| 	if _, isCompat := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !isCompat { | ||||
| 		return nil, genesisErr | ||||
| 	} | ||||
|   | ||||
| @@ -67,11 +67,11 @@ var GoerliBootnodes = []string{ | ||||
| 	"enode://a59e33ccd2b3e52d578f1fbd70c6f9babda2650f0760d6ff3b37742fdcdfdb3defba5d56d315b40c46b70198c7621e63ffa3f987389c7118634b0fefbbdfa7fd@51.15.119.157:40303", | ||||
| } | ||||
|  | ||||
| // YoloV3Bootnodes are the enode URLs of the P2P bootstrap nodes running on the | ||||
| // YOLOv3 ephemeral test network. | ||||
| // TODO: Set Yolov3 bootnodes | ||||
| var YoloV3Bootnodes = []string{ | ||||
| 	"enode://9e1096aa59862a6f164994cb5cb16f5124d6c992cdbf4535ff7dea43ea1512afe5448dca9df1b7ab0726129603f1a3336b631e4d7a1a44c94daddd03241587f9@3.9.20.133:30303", | ||||
| // BaikalBootnodes are the enode URLs of the P2P bootstrap nodes running on the | ||||
| // Baikal ephemeral test network. | ||||
| // TODO: Set Baikal bootnodes | ||||
| var BaikalBootnodes = []string{ | ||||
| 	"", | ||||
| } | ||||
|  | ||||
| var V5Bootnodes = []string{ | ||||
|   | ||||
| @@ -31,7 +31,7 @@ var ( | ||||
| 	RopstenGenesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d") | ||||
| 	RinkebyGenesisHash = common.HexToHash("0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177") | ||||
| 	GoerliGenesisHash  = common.HexToHash("0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a") | ||||
| 	YoloV3GenesisHash  = common.HexToHash("0xf1f2876e8500c77afcc03228757b39477eceffccf645b734967fe3c7e16967b7") | ||||
| 	BaikalGenesisHash  = common.HexToHash("0xa0bc5d43c72a990cedeb59d305702602b34c3ee8585e77d03c7a4fa64d79636e") | ||||
| ) | ||||
|  | ||||
| // TrustedCheckpoints associates each known checkpoint with the genesis hash of | ||||
| @@ -217,9 +217,8 @@ var ( | ||||
| 		Threshold: 2, | ||||
| 	} | ||||
|  | ||||
| 	// YoloV3ChainConfig contains the chain parameters to run a node on the YOLOv3 test network. | ||||
| 	YoloV3ChainConfig = &ChainConfig{ | ||||
| 		ChainID:             new(big.Int).SetBytes([]byte("yolov3x")), | ||||
| 	BaikalChainConfig = &ChainConfig{ | ||||
| 		ChainID:             big.NewInt(1642), | ||||
| 		HomesteadBlock:      big.NewInt(0), | ||||
| 		DAOForkBlock:        nil, | ||||
| 		DAOForkSupport:      true, | ||||
| @@ -231,10 +230,10 @@ var ( | ||||
| 		PetersburgBlock:     big.NewInt(0), | ||||
| 		IstanbulBlock:       big.NewInt(0), | ||||
| 		MuirGlacierBlock:    nil, | ||||
| 		BerlinBlock:         nil, // Don't enable Berlin directly, we're YOLOing it | ||||
| 		YoloV3Block:         big.NewInt(0), | ||||
| 		BerlinBlock:         big.NewInt(0), | ||||
| 		LondonBlock:         big.NewInt(0), | ||||
| 		Clique: &CliqueConfig{ | ||||
| 			Period: 15, | ||||
| 			Period: 30, | ||||
| 			Epoch:  30000, | ||||
| 		}, | ||||
| 	} | ||||
| @@ -331,8 +330,8 @@ type ChainConfig struct { | ||||
| 	IstanbulBlock       *big.Int `json:"istanbulBlock,omitempty"`       // Istanbul switch block (nil = no fork, 0 = already on istanbul) | ||||
| 	MuirGlacierBlock    *big.Int `json:"muirGlacierBlock,omitempty"`    // Eip-2384 (bomb delay) switch block (nil = no fork, 0 = already activated) | ||||
| 	BerlinBlock         *big.Int `json:"berlinBlock,omitempty"`         // Berlin switch block (nil = no fork, 0 = already on berlin) | ||||
| 	LondonBlock         *big.Int `json:"londonBlock,omitempty"`         // London switch block (nil = no fork, 0 = already on london) | ||||
|  | ||||
| 	YoloV3Block   *big.Int `json:"yoloV3Block,omitempty"`   // YOLO v3: Gas repricings TODO @holiman add EIP references | ||||
| 	EWASMBlock    *big.Int `json:"ewasmBlock,omitempty"`    // EWASM switch block (nil = no fork, 0 = already activated) | ||||
| 	CatalystBlock *big.Int `json:"catalystBlock,omitempty"` // Catalyst switch block (nil = no fork, 0 = already on catalyst) | ||||
|  | ||||
| @@ -371,7 +370,7 @@ func (c *ChainConfig) String() string { | ||||
| 	default: | ||||
| 		engine = "unknown" | ||||
| 	} | ||||
| 	return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, YOLO v3: %v, Engine: %v}", | ||||
| 	return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, London: %v, Engine: %v}", | ||||
| 		c.ChainID, | ||||
| 		c.HomesteadBlock, | ||||
| 		c.DAOForkBlock, | ||||
| @@ -385,7 +384,7 @@ func (c *ChainConfig) String() string { | ||||
| 		c.IstanbulBlock, | ||||
| 		c.MuirGlacierBlock, | ||||
| 		c.BerlinBlock, | ||||
| 		c.YoloV3Block, | ||||
| 		c.LondonBlock, | ||||
| 		engine, | ||||
| 	) | ||||
| } | ||||
| @@ -444,7 +443,12 @@ func (c *ChainConfig) IsIstanbul(num *big.Int) bool { | ||||
|  | ||||
| // IsBerlin returns whether num is either equal to the Berlin fork block or greater. | ||||
| func (c *ChainConfig) IsBerlin(num *big.Int) bool { | ||||
| 	return isForked(c.BerlinBlock, num) || isForked(c.YoloV3Block, num) | ||||
| 	return isForked(c.BerlinBlock, num) | ||||
| } | ||||
|  | ||||
| // IsLondon returns whether num is either equal to the London fork block or greater. | ||||
| func (c *ChainConfig) IsLondon(num *big.Int) bool { | ||||
| 	return isForked(c.LondonBlock, num) | ||||
| } | ||||
|  | ||||
| // IsCatalyst returns whether num is either equal to the Merge fork block or greater. | ||||
| @@ -496,6 +500,7 @@ func (c *ChainConfig) CheckConfigForkOrder() error { | ||||
| 		{name: "istanbulBlock", block: c.IstanbulBlock}, | ||||
| 		{name: "muirGlacierBlock", block: c.MuirGlacierBlock, optional: true}, | ||||
| 		{name: "berlinBlock", block: c.BerlinBlock}, | ||||
| 		{name: "londonBlock", block: c.LondonBlock}, | ||||
| 	} { | ||||
| 		if lastFork.name != "" { | ||||
| 			// Next one must be higher number | ||||
| @@ -562,8 +567,8 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, head *big.Int) *Confi | ||||
| 	if isForkIncompatible(c.BerlinBlock, newcfg.BerlinBlock, head) { | ||||
| 		return newCompatError("Berlin fork block", c.BerlinBlock, newcfg.BerlinBlock) | ||||
| 	} | ||||
| 	if isForkIncompatible(c.YoloV3Block, newcfg.YoloV3Block, head) { | ||||
| 		return newCompatError("YOLOv3 fork block", c.YoloV3Block, newcfg.YoloV3Block) | ||||
| 	if isForkIncompatible(c.LondonBlock, newcfg.LondonBlock, head) { | ||||
| 		return newCompatError("London fork block", c.LondonBlock, newcfg.LondonBlock) | ||||
| 	} | ||||
| 	if isForkIncompatible(c.EWASMBlock, newcfg.EWASMBlock, head) { | ||||
| 		return newCompatError("ewasm fork block", c.EWASMBlock, newcfg.EWASMBlock) | ||||
| @@ -635,7 +640,7 @@ type Rules struct { | ||||
| 	ChainID                                                 *big.Int | ||||
| 	IsHomestead, IsEIP150, IsEIP155, IsEIP158               bool | ||||
| 	IsByzantium, IsConstantinople, IsPetersburg, IsIstanbul bool | ||||
| 	IsBerlin, IsCatalyst                                    bool | ||||
| 	IsBerlin, IsLondon, IsCatalyst                          bool | ||||
| } | ||||
|  | ||||
| // Rules ensures c's ChainID is not nil. | ||||
| @@ -655,6 +660,7 @@ func (c *ChainConfig) Rules(num *big.Int) Rules { | ||||
| 		IsPetersburg:     c.IsPetersburg(num), | ||||
| 		IsIstanbul:       c.IsIstanbul(num), | ||||
| 		IsBerlin:         c.IsBerlin(num), | ||||
| 		IsLondon:         c.IsLondon(num), | ||||
| 		IsCatalyst:       c.IsCatalyst(num), | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -141,20 +141,6 @@ var Forks = map[string]*params.ChainConfig{ | ||||
| 		PetersburgBlock:     big.NewInt(0), | ||||
| 		IstanbulBlock:       big.NewInt(5), | ||||
| 	}, | ||||
| 	"YOLOv3": { | ||||
| 		ChainID:             big.NewInt(1), | ||||
| 		HomesteadBlock:      big.NewInt(0), | ||||
| 		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(0), | ||||
| 		YoloV3Block:         big.NewInt(0), | ||||
| 	}, | ||||
| 	// This specification is subject to change, but is for now identical to YOLOv3 | ||||
| 	// for cross-client testing purposes | ||||
| 	"Berlin": { | ||||
| 		ChainID:             big.NewInt(1), | ||||
| 		HomesteadBlock:      big.NewInt(0), | ||||
| @@ -167,6 +153,32 @@ var Forks = map[string]*params.ChainConfig{ | ||||
| 		IstanbulBlock:       big.NewInt(0), | ||||
| 		BerlinBlock:         big.NewInt(0), | ||||
| 	}, | ||||
| 	"BerlinToLondonAt5": { | ||||
| 		ChainID:             big.NewInt(1), | ||||
| 		HomesteadBlock:      big.NewInt(0), | ||||
| 		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(0), | ||||
| 		BerlinBlock:         big.NewInt(0), | ||||
| 		LondonBlock:         big.NewInt(5), | ||||
| 	}, | ||||
| 	"London": { | ||||
| 		ChainID:             big.NewInt(1), | ||||
| 		HomesteadBlock:      big.NewInt(0), | ||||
| 		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(0), | ||||
| 		BerlinBlock:         big.NewInt(0), | ||||
| 		LondonBlock:         big.NewInt(0), | ||||
| 	}, | ||||
| } | ||||
|  | ||||
| // Returns the set of defined fork names | ||||
|   | ||||
		Reference in New Issue
	
	Block a user