diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 04b41b348..b52e16f55 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -23,6 +23,7 @@ import ( "math/big" "os" "reflect" + "time" "unicode" "gopkg.in/urfave/cli.v1" @@ -33,6 +34,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/usbwallet" "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/eth/catalyst" + "github.com/ethereum/go-ethereum/eth/downloader" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/log" @@ -133,6 +135,14 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) { } } + if ctx.GlobalIsSet(utils.BttcDonauFlag.Name) { + setDefaultBttcDonauGethConfig(ctx, &cfg) + } + + if ctx.GlobalIsSet(utils.BttcMainnetFlag.Name) { + setDefaultBttcMainnetGethConfig(ctx, &cfg) + } + // Apply flags. utils.SetNodeConfig(ctx, &cfg.Node) stack, err := node.New(&cfg.Node) @@ -328,3 +338,58 @@ func setAccountManagerBackends(stack *node.Node) error { return nil } + +func setDefaultBttcDonauGethConfig(ctx *cli.Context, config *gethConfig) { + config.Node.P2P.ListenAddr = fmt.Sprintf(":%d", 30303) + config.Node.HTTPHost = "0.0.0.0" + config.Node.HTTPVirtualHosts = []string{"*"} + config.Node.HTTPCors = []string{"*"} + config.Node.HTTPPort = 8545 + config.Node.IPCPath = utils.MakeDataDir(ctx) + "/bttc.ipc" + config.Node.HTTPModules = []string{"eth", "net", "web3", "txpool", "bor"} + config.Eth.SyncMode = downloader.FullSync + config.Eth.NetworkId = 1029 + config.Node.AllowUnprotectedTxs = true + config.Eth.RPCTxFeeCap = 0 + config.Eth.Miner.GasCeil = 20000000 + config.Eth.Miner.GasPrice = big.NewInt(9000000000000000) + //--miner.gastarget is depreceated, No longed used + config.Eth.GPO.MaxPrice = big.NewInt(15000000000000000) + config.Eth.TxPool.PriceLimit = 9000000000000000 + config.Eth.TxPool.NoLocals = true + config.Eth.TxPool.AccountSlots = 16 + config.Eth.TxPool.GlobalSlots = 131072 + config.Eth.TxPool.AccountQueue = 64 + config.Eth.TxPool.GlobalQueue = 131072 + config.Eth.TxPool.Lifetime = 90 * time.Minute + config.Node.P2P.MaxPeers = 200 + config.Metrics.Enabled = true + // --pprof is enabled in 'internal/debug/flags.go' +} + +func setDefaultBttcMainnetGethConfig(ctx *cli.Context, config *gethConfig) { + config.Node.P2P.ListenAddr = fmt.Sprintf(":%d", 30303) + config.Node.HTTPHost = "0.0.0.0" + config.Node.HTTPVirtualHosts = []string{"*"} + config.Node.HTTPCors = []string{"*"} + config.Node.HTTPPort = 8545 + config.Node.IPCPath = utils.MakeDataDir(ctx) + "/bttc.ipc" + config.Node.HTTPModules = []string{"eth", "net", "web3", "txpool", "bor"} + config.Eth.SyncMode = downloader.FullSync + config.Eth.NetworkId = 199 + config.Node.AllowUnprotectedTxs = true + config.Eth.RPCTxFeeCap = 0 + config.Eth.Miner.GasCeil = 20000000 + config.Eth.Miner.GasPrice = big.NewInt(300000000000000) + //--miner.gastarget is depreceated, No longed used + config.Eth.GPO.MaxPrice = big.NewInt(500000000000000) + config.Eth.TxPool.NoLocals = true + config.Eth.TxPool.AccountSlots = 16 + config.Eth.TxPool.GlobalSlots = 131072 + config.Eth.TxPool.AccountQueue = 64 + config.Eth.TxPool.GlobalQueue = 131072 + config.Eth.TxPool.Lifetime = 90 * time.Minute + config.Node.P2P.MaxPeers = 200 + config.Metrics.Enabled = true + // --pprof is enabled in 'internal/debug/flags.go' +} diff --git a/cmd/geth/main.go b/cmd/geth/main.go index a928d1c80..5f69a1984 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -140,6 +140,8 @@ var ( utils.RopstenFlag, utils.RinkebyFlag, utils.GoerliFlag, + utils.BttcDonauFlag, + utils.BttcMainnetFlag, utils.VMEnableDebugFlag, utils.NetworkIdFlag, utils.EthStatsURLFlag, @@ -282,6 +284,12 @@ func prepare(ctx *cli.Context) { case ctx.GlobalIsSet(utils.GoerliFlag.Name): log.Info("Starting Geth on Görli testnet...") + case ctx.GlobalIsSet(utils.BttcDonauFlag.Name): + log.Info("Starting bttc on bttc donau testnet...") + + case ctx.GlobalIsSet(utils.BttcMainnetFlag.Name): + log.Info("Starting bttc on bttc mainnet...") + case ctx.GlobalIsSet(utils.DeveloperFlag.Name): log.Info("Starting Geth in ephemeral dev mode...") diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go index f39e4f402..52b4a1606 100644 --- a/cmd/geth/usage.go +++ b/cmd/geth/usage.go @@ -43,6 +43,8 @@ var AppHelpFlagGroups = []flags.FlagGroup{ utils.NetworkIdFlag, utils.MainnetFlag, utils.GoerliFlag, + utils.BttcDonauFlag, + utils.BttcMainnetFlag, utils.RinkebyFlag, utils.RopstenFlag, utils.SyncModeFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 366be6db6..957ed7abd 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -155,6 +155,14 @@ var ( Name: "ropsten", Usage: "Ropsten network: pre-configured proof-of-work test network", } + BttcDonauFlag = cli.BoolFlag{ + Name: "bttc-donau", + Usage: "Bttc Donau network: pre-configured proof-of-stake test network", + } + BttcMainnetFlag = cli.BoolFlag{ + Name: "bttc-mainnet", + Usage: "Bttc mainnet", + } DeveloperFlag = cli.BoolFlag{ Name: "dev", Usage: "Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled", @@ -797,6 +805,12 @@ func MakeDataDir(ctx *cli.Context) string { if ctx.GlobalBool(GoerliFlag.Name) { return filepath.Join(path, "goerli") } + if (ctx.GlobalBool(BttcDonauFlag.Name) || ctx.GlobalBool(BttcMainnetFlag.Name)) && + path == node.DefaultDataDir() { + homeDir, _ := os.UserHomeDir() + return filepath.Join(homeDir, "/.bttc/data") + } + return path } Fatalf("Cannot determine default data directory, please set manually (--datadir)") @@ -849,6 +863,10 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls = params.RinkebyBootnodes case ctx.GlobalBool(GoerliFlag.Name): urls = params.GoerliBootnodes + case ctx.GlobalBool(BttcDonauFlag.Name): + urls = params.BttcDonauBootnodes + case ctx.GlobalBool(BttcMainnetFlag.Name): + urls = params.BttcMainnetBootnodes case cfg.BootstrapNodes != nil: return // already set, don't apply defaults. } @@ -1292,6 +1310,12 @@ 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(BttcDonauFlag.Name) && cfg.DataDir == node.DefaultDataDir(): + homeDir, _ := os.UserHomeDir() + cfg.DataDir = filepath.Join(homeDir, "/.bttc/data") + case ctx.GlobalBool(BttcMainnetFlag.Name) && cfg.DataDir == node.DefaultDataDir(): + homeDir, _ := os.UserHomeDir() + cfg.DataDir = filepath.Join(homeDir, "/.bttc/data") } } @@ -1477,7 +1501,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, GoerliFlag, BttcDonauFlag, BttcMainnetFlag) 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 +1527,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 +1658,18 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { } cfg.Genesis = core.DefaultGoerliGenesisBlock() SetDNSDiscoveryDefaults(cfg, params.GoerliGenesisHash) + case ctx.GlobalBool(BttcDonauFlag.Name): + if !ctx.GlobalIsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 1029 + } + cfg.Genesis = core.DefaultBttcDonauGenesisBlock() + SetDNSDiscoveryDefaults(cfg, params.BttcDonauGenesisHash) + case ctx.GlobalBool(BttcMainnetFlag.Name): + if !ctx.GlobalIsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 199 + } + cfg.Genesis = core.DefaultBttcMainnetGenesisBlock() + SetDNSDiscoveryDefaults(cfg, params.BttcMainnetGenesisHash) case ctx.GlobalBool(DeveloperFlag.Name): if !ctx.GlobalIsSet(NetworkIdFlag.Name) { cfg.NetworkId = 1337 @@ -1854,6 +1890,10 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis { genesis = core.DefaultRinkebyGenesisBlock() case ctx.GlobalBool(GoerliFlag.Name): genesis = core.DefaultGoerliGenesisBlock() + case ctx.GlobalBool(BttcDonauFlag.Name): + genesis = core.DefaultBttcDonauGenesisBlock() + case ctx.GlobalBool(BttcMainnetFlag.Name): + genesis = core.DefaultBttcMainnetGenesisBlock() case ctx.GlobalBool(DeveloperFlag.Name): Fatalf("Developer chains are ephemeral") } diff --git a/core/allocs/bttc-donau.json b/core/allocs/bttc-donau.json new file mode 100644 index 000000000..071b9cd5b --- /dev/null +++ b/core/allocs/bttc-donau.json @@ -0,0 +1,35 @@ +{ + "0000000000000000000000000000000000001000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c806360c8614d1161010f578063af26aa96116100a2578063d5b844eb11610071578063d5b844eb14610666578063dcf2793a14610684578063e3b7c924146106b6578063f59cf565146106d4576101f0565b8063af26aa96146105c7578063b71d7a69146105e7578063b7ab4db514610617578063c1b3c91914610636576101f0565b806370ba5707116100de57806370ba57071461052b57806398ab2b621461055b5780639d11b80714610579578063ae756451146105a9576101f0565b806360c8614d1461049c57806365b3a1e2146104bc57806366332354146104db578063687a9bd6146104f9576101f0565b80633434735f1161018757806344d6528f1161015657806344d6528f146103ee5780634dbc959f1461041e57806355614fcc1461043c578063582a8d081461046c576101f0565b80633434735f1461035257806335ddfeea1461037057806343ee8213146103a057806344c15cb1146103be576101f0565b806323f2a73f116101c357806323f2a73f146102a45780632bc06564146102d45780632de3a180146102f25780632eddf35214610322576101f0565b8063047a6c5b146101f55780630c35b1cb146102275780631270b5741461025857806323c2a2b414610288575b600080fd5b61020f600480360361020a9190810190612c0d565b610706565b60405161021e9392919061354c565b60405180910390f35b610241600480360361023c9190810190612c0d565b61075d565b60405161024f92919061336d565b60405180910390f35b610272600480360361026d9190810190612c36565b610939565b60405161027f91906133a4565b60405180910390f35b6102a2600480360361029d9190810190612d15565b610a91565b005b6102be60048036036102b99190810190612c36565b61112a565b6040516102cb91906133a4565b60405180910390f35b6102dc611281565b6040516102e991906134fa565b60405180910390f35b61030c60048036036103079190810190612b6a565b611286565b60405161031991906133bf565b60405180910390f35b61033c60048036036103379190810190612c0d565b611307565b60405161034991906134fa565b60405180910390f35b61035a611437565b6040516103679190613352565b60405180910390f35b61038a60048036036103859190810190612ba6565b61144f565b60405161039791906133a4565b60405180910390f35b6103a861151a565b6040516103b591906133bf565b60405180910390f35b6103d860048036036103d39190810190612c72565b611531565b6040516103e591906134fa565b60405180910390f35b61040860048036036104039190810190612c36565b611619565b60405161041591906134df565b60405180910390f35b610426611781565b60405161043391906134fa565b60405180910390f35b61045660048036036104519190810190612aef565b611791565b60405161046391906133a4565b60405180910390f35b61048660048036036104819190810190612b18565b6117ab565b60405161049391906133bf565b60405180910390f35b6104a4611829565b6040516104b39392919061354c565b60405180910390f35b6104c461189d565b6040516104d292919061336d565b60405180910390f35b6104e3611c57565b6040516104f091906134fa565b60405180910390f35b610513600480360361050e9190810190612cd9565b611c5c565b60405161052293929190613515565b60405180910390f35b61054560048036036105409190810190612aef565b611cc0565b60405161055291906133a4565b60405180910390f35b610563611cda565b60405161057091906133bf565b60405180910390f35b610593600480360361058e9190810190612c0d565b611cf1565b6040516105a091906134fa565b60405180910390f35b6105b1611e22565b6040516105be91906133bf565b60405180910390f35b6105cf611e39565b6040516105de9392919061354c565b60405180910390f35b61060160048036036105fc9190810190612c0d565b611e9a565b60405161060e91906134fa565b60405180910390f35b61061f611f9a565b60405161062d92919061336d565b60405180910390f35b610650600480360361064b9190810190612c0d565b611fae565b60405161065d91906134fa565b60405180910390f35b61066e611fcf565b60405161067b9190613583565b60405180910390f35b61069e60048036036106999190810190612cd9565b611fd4565b6040516106ad93929190613515565b60405180910390f35b6106be612038565b6040516106cb91906134fa565b60405180910390f35b6106ee60048036036106e99190810190612c0d565b61204a565b6040516106fd9392919061354c565b60405180910390f35b60008060006002600085815260200190815260200160002060000154600260008681526020019081526020016000206001015460026000878152602001908152602001600020600201549250925092509193909250565b60608060ff83116107795761077061189d565b91509150610934565b600061078484611e9a565b9050606060016000838152602001908152602001600020805490506040519080825280602002602001820160405280156107cd5781602001602082028038833980820191505090505b509050606060016000848152602001908152602001600020805490506040519080825280602002602001820160405280156108175781602001602082028038833980820191505090505b50905060008090505b60016000858152602001908152602001600020805490508110156109295760016000858152602001908152602001600020818154811061085c57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683828151811061089a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001600085815260200190815260200160002081815481106108f257fe5b90600052602060002090600302016001015482828151811061091057fe5b6020026020010181815250508080600101915050610820565b508181945094505050505b915091565b6000606060016000858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a0c578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610970565b50505050905060008090505b8151811015610a84578373ffffffffffffffffffffffffffffffffffffffff16828281518110610a4457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff161415610a7757600192505050610a8b565b8080600101915050610a18565b5060009150505b92915050565b73fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a906134bf565b60405180910390fd5b6000610b1d611781565b90506000811415610b3157610b30612074565b5b610b4560018261239590919063ffffffff16565b8814610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d9061343f565b60405180910390fd5b868611610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf9061349f565b60405180910390fd5b6000604060018989030181610bd957fe5b0614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c119061347f565b60405180910390fd5b8660026000838152602001908152602001600020600101541115610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9061341f565b60405180910390fd5b6000600260008a81526020019081526020016000206000015414610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc39061345f565b60405180910390fd5b604051806060016040528089815260200188815260200187815250600260008a8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600388908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008a815260200190815260200160002081610d6691906128e9565b506000600160008a815260200190815260200160002081610d8791906128e9565b506060610ddf610dda87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506123b4565b6123e2565b905060008090505b8151811015610f51576060610e0e838381518110610e0157fe5b60200260200101516123e2565b90506000808c81526020019081526020016000208054809190600101610e3491906128e9565b506040518060600160405280610e5d83600081518110610e5057fe5b60200260200101516124bf565b8152602001610e7f83600181518110610e7257fe5b60200260200101516124bf565b8152602001610ea183600281518110610e9457fe5b6020026020010151612530565b73ffffffffffffffffffffffffffffffffffffffff168152506000808d81526020019081526020016000208381548110610ed757fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610de7565b506060610fa9610fa486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506123b4565b6123e2565b905060008090505b815181101561111d576060610fd8838381518110610fcb57fe5b60200260200101516123e2565b9050600160008d81526020019081526020016000208054809190600101610fff91906128e9565b5060405180606001604052806110288360008151811061101b57fe5b60200260200101516124bf565b815260200161104a8360018151811061103d57fe5b60200260200101516124bf565b815260200161106c8360028151811061105f57fe5b6020026020010151612530565b73ffffffffffffffffffffffffffffffffffffffff16815250600160008e815260200190815260200160002083815481106110a357fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610fb1565b5050505050505050505050565b60006060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156111fc578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611160565b50505050905060008090505b8151811015611274578373ffffffffffffffffffffffffffffffffffffffff1682828151811061123457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff1614156112675760019250505061127b565b8080600101915050611208565b5060009150505b92915050565b604081565b60006002600160f81b84846040516020016112a3939291906132bf565b6040516020818303038152906040526040516112bf91906132fc565b602060405180830381855afa1580156112dc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506112ff9190810190612b41565b905092915050565b60006060600080848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113d9578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061133d565b505050509050600080905060008090505b825181101561142c5761141d83828151811061140257fe5b6020026020010151602001518361239590919063ffffffff16565b915080806001019150506113ea565b508092505050919050565b73fffffffffffffffffffffffffffffffffffffffe81565b600080600080859050600060218087518161146657fe5b04029050600081111561147f5761147c876117ab565b91505b6000602190505b818111611509576000600182038801519050818801519550806000602081106114ab57fe5b1a60f81b9450600060f81b857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156114f0576114e98685611286565b93506114fd565b6114fa8487611286565b93505b50602181019050611486565b508782149450505050509392505050565b6040516115269061333d565b604051809103902081565b60008060009050600080905060008090505b84518167ffffffffffffffff16101561160c57606061156e868367ffffffffffffffff166041612553565b9050600061158582896125df90919063ffffffff16565b905061158f61291b565b6115998a83611619565b90506115a58a8361112a565b80156115dc57508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16115b156115fe578194506115fb81602001518761239590919063ffffffff16565b95505b505050604181019050611543565b5081925050509392505050565b61162161291b565b6060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156116f1578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611655565b50505050905060008090505b8151811015611779578373ffffffffffffffffffffffffffffffffffffffff1682828151811061172957fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff16141561176c5781818151811061175d57fe5b60200260200101519250611779565b80806001019150506116fd565b505092915050565b600061178c43611e9a565b905090565b60006117a461179e611781565b8361112a565b9050919050565b60006002600060f81b836040516020016117c6929190613293565b6040516020818303038152906040526040516117e291906132fc565b602060405180830381855afa1580156117ff573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506118229190810190612b41565b9050919050565b60008060008061184a600161183c611781565b61239590919063ffffffff16565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b606080606060076040519080825280602002602001820160405280156118d25781602001602082028038833980820191505090505b5090507362c3adbece50a544aa3c45b53f86f672feb44ebc816000815181106118f757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507354ffc23455ade612e7d0e068b36d1f80f0885cc08160018151811061195357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073643d412bcc45d910f4514e2f597167d85856e08f816002815181106119af57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073e848f81560e480ee381365a3d98d1d4e5f24159a81600381518110611a0b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073f4c2f1d772488cc6d3ec3c703b9710fa2c0e227e81600481518110611a6757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073cb670b22515bcaeaa7b3ffb8149d303f00fb026e81600581518110611ac357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073671e21ec4f4ce86b31bf215978e42aa7f0db8d6b81600681518110611b1f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060606007604051908082528060200260200182016040528015611b8b5781602001602082028038833980820191505090505b509050600181600081518110611b9d57fe5b602002602001018181525050600181600181518110611bb857fe5b602002602001018181525050600181600281518110611bd357fe5b602002602001018181525050600181600381518110611bee57fe5b602002602001018181525050600181600481518110611c0957fe5b602002602001018181525050600181600581518110611c2457fe5b602002602001018181525050600181600681518110611c3f57fe5b60200260200101818152505081819350935050509091565b60ff81565b60016020528160005260406000208181548110611c7557fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b6000611cd3611ccd611781565b83610939565b9050919050565b604051611ce690613313565b604051809103902081565b6000606060016000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611dc4578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611d28565b505050509050600080905060008090505b8251811015611e1757611e08838281518110611ded57fe5b6020026020010151602001518361239590919063ffffffff16565b91508080600101915050611dd5565b508092505050919050565b604051611e2e90613328565b604051809103902081565b600080600080611e47611781565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b60008060038054905090505b6000811115611f5a57611eb7612952565b6002600060036001850381548110611ecb57fe5b906000526020600020015481526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905083816020015111158015611f2857506000816040015114155b8015611f38575080604001518411155b15611f4b57806000015192505050611f95565b50808060019003915050611ea6565b5060006003805490501115611f9057600360016003805490500381548110611f7e57fe5b90600052602060002001549050611f95565b600090505b919050565b606080611fa64361075d565b915091509091565b60038181548110611fbb57fe5b906000526020600020016000915090505481565b600281565b60006020528160005260406000208181548110611fed57fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60006040438161204457fe5b04905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b60608061207f61189d565b8092508193505050600080905060405180606001604052808281526020016000815260200160ff81525060026000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600381908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008381526020019081526020016000208161212891906128e9565b506000600160008381526020019081526020016000208161214991906128e9565b5060008090505b835181101561226b57600080838152602001908152602001600020805480919060010161217d91906128e9565b50604051806060016040528082815260200184838151811061219b57fe5b602002602001015181526020018583815181106121b457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681525060008084815260200190815260200160002082815481106121f257fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612150565b5060008090505b835181101561238f576001600083815260200190815260200160002080548091906001016122a091906128e9565b5060405180606001604052808281526020018483815181106122be57fe5b602002602001015181526020018583815181106122d757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681525060016000848152602001908152602001600020828154811061231657fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612272565b50505050565b6000808284019050838110156123aa57600080fd5b8091505092915050565b6123bc612973565b600060208301905060405180604001604052808451815260200182815250915050919050565b60606123ed826126e9565b6123f657600080fd5b600061240183612737565b905060608160405190808252806020026020018201604052801561243f57816020015b61242c61298d565b8152602001906001900390816124245790505b509050600061245185602001516127a8565b8560200151019050600080600090505b848110156124b25761247283612831565b915060405180604001604052808381526020018481525084828151811061249557fe5b602002602001018190525081830192508080600101915050612461565b5082945050505050919050565b60008082600001511180156124d957506021826000015111155b6124e257600080fd5b60006124f183602001516127a8565b9050600081846000015103905060008083866020015101905080519150602083101561252457826020036101000a820491505b81945050505050919050565b6000601582600001511461254357600080fd5b61254c826124bf565b9050919050565b60608183018451101561256557600080fd5b6060821560008114612582576040519150602082016040526125d3565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156125c057805183526020830192506020810190506125a3565b50868552601f19601f8301166040525050505b50809150509392505050565b60008060008060418551146125fa57600093505050506126e3565b602085015192506040850151915060ff6041860151169050601b8160ff16101561262557601b810190505b601b8160ff161415801561263d5750601c8160ff1614155b1561264e57600093505050506126e3565b60006001878386866040516000815260200160405260405161267394939291906133da565b6020604051602081039080840390855afa158015612695573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126db57600080fd5b809450505050505b92915050565b600080826000015114156127005760009050612732565b60008083602001519050805160001a915060c060ff168260ff16101561272b57600092505050612732565b6001925050505b919050565b6000808260000151141561274e57600090506127a3565b6000809050600061276284602001516127a8565b84602001510190506000846000015185602001510190505b8082101561279c5761278b82612831565b82019150828060010193505061277a565b8293505050505b919050565b600080825160001a9050608060ff168110156127c857600091505061282c565b60b860ff168110806127ed575060c060ff1681101580156127ec575060f860ff1681105b5b156127fc57600191505061282c565b60c060ff1681101561281c5760018060b80360ff1682030191505061282c565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561285257600191506128df565b60b860ff1681101561286f576001608060ff1682030191506128de565b60c060ff1681101561289f5760b78103600185019450806020036101000a855104600182018101935050506128dd565b60f860ff168110156128bc57600160c060ff1682030191506128dc565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b8154818355818111156129165760030281600302836000526020600020918201910161291591906129a7565b5b505050565b60405180606001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b604051806040016040528060008152602001600081525090565b6129fa91905b808211156129f65760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506003016129ad565b5090565b90565b600081359050612a0c8161377c565b92915050565b600081359050612a2181613793565b92915050565b600081519050612a3681613793565b92915050565b60008083601f840112612a4e57600080fd5b8235905067ffffffffffffffff811115612a6757600080fd5b602083019150836001820283011115612a7f57600080fd5b9250929050565b600082601f830112612a9757600080fd5b8135612aaa612aa5826135cb565b61359e565b91508082526020830160208301858383011115612ac657600080fd5b612ad1838284613726565b50505092915050565b600081359050612ae9816137aa565b92915050565b600060208284031215612b0157600080fd5b6000612b0f848285016129fd565b91505092915050565b600060208284031215612b2a57600080fd5b6000612b3884828501612a12565b91505092915050565b600060208284031215612b5357600080fd5b6000612b6184828501612a27565b91505092915050565b60008060408385031215612b7d57600080fd5b6000612b8b85828601612a12565b9250506020612b9c85828601612a12565b9150509250929050565b600080600060608486031215612bbb57600080fd5b6000612bc986828701612a12565b9350506020612bda86828701612a12565b925050604084013567ffffffffffffffff811115612bf757600080fd5b612c0386828701612a86565b9150509250925092565b600060208284031215612c1f57600080fd5b6000612c2d84828501612ada565b91505092915050565b60008060408385031215612c4957600080fd5b6000612c5785828601612ada565b9250506020612c68858286016129fd565b9150509250929050565b600080600060608486031215612c8757600080fd5b6000612c9586828701612ada565b9350506020612ca686828701612a12565b925050604084013567ffffffffffffffff811115612cc357600080fd5b612ccf86828701612a86565b9150509250925092565b60008060408385031215612cec57600080fd5b6000612cfa85828601612ada565b9250506020612d0b85828601612ada565b9150509250929050565b600080600080600080600060a0888a031215612d3057600080fd5b6000612d3e8a828b01612ada565b9750506020612d4f8a828b01612ada565b9650506040612d608a828b01612ada565b955050606088013567ffffffffffffffff811115612d7d57600080fd5b612d898a828b01612a3c565b9450945050608088013567ffffffffffffffff811115612da857600080fd5b612db48a828b01612a3c565b925092505092959891949750929550565b6000612dd18383612df5565b60208301905092915050565b6000612de98383613266565b60208301905092915050565b612dfe8161369b565b82525050565b612e0d8161369b565b82525050565b6000612e1e82613617565b612e288185613652565b9350612e33836135f7565b8060005b83811015612e64578151612e4b8882612dc5565b9750612e5683613638565b925050600181019050612e37565b5085935050505092915050565b6000612e7c82613622565b612e868185613663565b9350612e9183613607565b8060005b83811015612ec2578151612ea98882612ddd565b9750612eb483613645565b925050600181019050612e95565b5085935050505092915050565b612ed8816136ad565b82525050565b612eef612eea826136b9565b613768565b82525050565b612efe816136e5565b82525050565b612f15612f10826136e5565b613772565b82525050565b6000612f268261362d565b612f308185613674565b9350612f40818560208601613735565b80840191505092915050565b6000612f59600483613690565b91507f766f7465000000000000000000000000000000000000000000000000000000006000830152600482019050919050565b6000612f99600483613690565b91507f31303239000000000000000000000000000000000000000000000000000000006000830152600482019050919050565b6000612fd9602d8361367f565b91507f537461727420626c6f636b206d7573742062652067726561746572207468616e60008301527f2063757272656e74207370616e000000000000000000000000000000000000006020830152604082019050919050565b600061303f600f8361367f565b91507f496e76616c6964207370616e20696400000000000000000000000000000000006000830152602082019050919050565b600061307f600d83613690565b91507f64656c69766572792d31303239000000000000000000000000000000000000006000830152600d82019050919050565b60006130bf60138361367f565b91507f5370616e20616c726561647920657869737473000000000000000000000000006000830152602082019050919050565b60006130ff60458361367f565b91507f446966666572656e6365206265747765656e20737461727420616e6420656e6460008301527f20626c6f636b206d75737420626520696e206d756c7469706c6573206f66207360208301527f7072696e740000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600061318b602a8361367f565b91507f456e6420626c6f636b206d7573742062652067726561746572207468616e207360008301527f7461727420626c6f636b000000000000000000000000000000000000000000006020830152604082019050919050565b60006131f160128361367f565b91507f4e6f742053797374656d204164646573732100000000000000000000000000006000830152602082019050919050565b60608201600082015161323a6000850182613266565b50602082015161324d6020850182613266565b5060408201516132606040850182612df5565b50505050565b61326f8161370f565b82525050565b61327e8161370f565b82525050565b61328d81613719565b82525050565b600061329f8285612ede565b6001820191506132af8284612f04565b6020820191508190509392505050565b60006132cb8286612ede565b6001820191506132db8285612f04565b6020820191506132eb8284612f04565b602082019150819050949350505050565b60006133088284612f1b565b915081905092915050565b600061331e82612f4c565b9150819050919050565b600061333382612f8c565b9150819050919050565b600061334882613072565b9150819050919050565b60006020820190506133676000830184612e04565b92915050565b600060408201905081810360008301526133878185612e13565b9050818103602083015261339b8184612e71565b90509392505050565b60006020820190506133b96000830184612ecf565b92915050565b60006020820190506133d46000830184612ef5565b92915050565b60006080820190506133ef6000830187612ef5565b6133fc6020830186613284565b6134096040830185612ef5565b6134166060830184612ef5565b95945050505050565b6000602082019050818103600083015261343881612fcc565b9050919050565b6000602082019050818103600083015261345881613032565b9050919050565b60006020820190508181036000830152613478816130b2565b9050919050565b60006020820190508181036000830152613498816130f2565b9050919050565b600060208201905081810360008301526134b88161317e565b9050919050565b600060208201905081810360008301526134d8816131e4565b9050919050565b60006060820190506134f46000830184613224565b92915050565b600060208201905061350f6000830184613275565b92915050565b600060608201905061352a6000830186613275565b6135376020830185613275565b6135446040830184612e04565b949350505050565b60006060820190506135616000830186613275565b61356e6020830185613275565b61357b6040830184613275565b949350505050565b60006020820190506135986000830184613284565b92915050565b6000604051905081810181811067ffffffffffffffff821117156135c157600080fd5b8060405250919050565b600067ffffffffffffffff8211156135e257600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006136a6826136ef565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613753578082015181840152602081019050613738565b83811115613762576000848401525b50505050565b6000819050919050565b6000819050919050565b6137858161369b565b811461379057600080fd5b50565b61379c816136e5565b81146137a757600080fd5b50565b6137b38161370f565b81146137be57600080fd5b5056fea365627a7a723158208c5149f71bb72948c8f091b3b5d030bca71a1d95c15a810fa5cc9a16ac411d1c6c6578706572696d656e74616cf564736f6c63430005110040" + }, + "0000000000000000000000000000000000001001": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806319494a17146100465780633434735f146100e15780635407ca671461012b575b600080fd5b6100c76004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019064010000000081111561008357600080fd5b82018360208201111561009557600080fd5b803590602001918460018302840111640100000000831117156100b757600080fd5b9091929391929390505050610149565b604051808215151515815260200191505060405180910390f35b6100e961047a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610133610492565b6040518082815260200191505060405180910390f35b600073fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f742053797374656d2041646465737321000000000000000000000000000081525060200191505060405180910390fd5b606061025761025285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610498565b6104c6565b905060006102788260008151811061026b57fe5b60200260200101516105a3565b905080600160005401146102f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f537461746549647320617265206e6f742073657175656e7469616c000000000081525060200191505060405180910390fd5b600080815480929190600101919050555060006103248360018151811061031757fe5b6020026020010151610614565b905060606103458460028151811061033857fe5b6020026020010151610637565b9050610350826106c3565b1561046f576000624c4b409050606084836040516024018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103aa57808201518184015260208101905061038f565b50505050905090810190601f1680156103d75780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f26c53bea000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008082516020840160008887f1965050505b505050509392505050565b73fffffffffffffffffffffffffffffffffffffffe81565b60005481565b6104a0610943565b600060208301905060405180604001604052808451815260200182815250915050919050565b60606104d1826106dc565b6104da57600080fd5b60006104e58361072a565b905060608160405190808252806020026020018201604052801561052357816020015b61051061095d565b8152602001906001900390816105085790505b5090506000610535856020015161079b565b8560200151019050600080600090505b848110156105965761055683610824565b915060405180604001604052808381526020018481525084828151811061057957fe5b602002602001018190525081830192508080600101915050610545565b5082945050505050919050565b60008082600001511180156105bd57506021826000015111155b6105c657600080fd5b60006105d5836020015161079b565b9050600081846000015103905060008083866020015101905080519150602083101561060857826020036101000a820491505b81945050505050919050565b6000601582600001511461062757600080fd5b610630826105a3565b9050919050565b6060600082600001511161064a57600080fd5b6000610659836020015161079b565b905060008184600001510390506060816040519080825280601f01601f19166020018201604052801561069b5781602001600182028038833980820191505090505b50905060008160200190506106b78487602001510182856108dc565b81945050505050919050565b600080823b905060008163ffffffff1611915050919050565b600080826000015114156106f35760009050610725565b60008083602001519050805160001a915060c060ff168260ff16101561071e57600092505050610725565b6001925050505b919050565b600080826000015114156107415760009050610796565b60008090506000610755846020015161079b565b84602001510190506000846000015185602001510190505b8082101561078f5761077e82610824565b82019150828060010193505061076d565b8293505050505b919050565b600080825160001a9050608060ff168110156107bb57600091505061081f565b60b860ff168110806107e0575060c060ff1681101580156107df575060f860ff1681105b5b156107ef57600191505061081f565b60c060ff1681101561080f5760018060b80360ff1682030191505061081f565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561084557600191506108d2565b60b860ff16811015610862576001608060ff1682030191506108d1565b60c060ff168110156108925760b78103600185019450806020036101000a855104600182018101935050506108d0565b60f860ff168110156108af57600160c060ff1682030191506108cf565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b60008114156108ea5761093e565b5b602060ff16811061091a5782518252602060ff1683019250602060ff1682019150602060ff16810390506108eb565b6000600182602060ff16036101000a03905080198451168184511681811785525050505b505050565b604051806040016040528060008152602001600081525090565b60405180604001604052806000815260200160008152509056fea265627a7a72315820af228b81e19dac46d14c24d264bde25d8a461d559c4e3cc82a5f1660755df35e64736f6c63430005110032" + }, + "0000000000000000000000000000000000001010": { + "balance": "0x1ed09b7e473741b2481174c000000", + "code": "0x6080604052600436106101c25760003560e01c80638da5cb5b116100f7578063b789543c11610095578063e614d0d611610064578063e614d0d614610b65578063ed9ef52414610b90578063f2fde38b14610be1578063fc0c546a14610c32576101c2565b8063b789543c146109e6578063cc79f97b14610a69578063cf2c52cb14610a94578063e306f77914610b3a576101c2565b806395d89b41116100d157806395d89b4114610872578063a9059cbb14610902578063abceeba214610968578063acd06cb314610993576101c2565b80638da5cb5b1461075c5780638f32d59b146107b35780639025e64c146107e2576101c2565b806342fc47fb1161016457806370a082311161013e57806370a08231146105a3578063715018a614610608578063771282f61461061f57806377d32e941461064a576101c2565b806342fc47fb14610484578063485cc955146104db57806360f96a8f1461054c576101c2565b806319d27d9c116101a057806319d27d9c146102d3578063205c2878146103d75780632e1a7d4d14610425578063313ce56714610453576101c2565b806306fdde03146101c75780631499c5921461025757806318160ddd146102a8575b600080fd5b3480156101d357600080fd5b506101dc610c89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026357600080fd5b506102a66004803603602081101561027a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cc6565b005b3480156102b457600080fd5b506102bd610d34565b6040518082815260200191505060405180910390f35b3480156102df57600080fd5b50610395600480360360a08110156102f657600080fd5b810190808035906020019064010000000081111561031357600080fd5b82018360208201111561032557600080fd5b8035906020019184600183028401116401000000008311171561034757600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610423600480360360408110156103ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f21565b005b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050611140565b005b34801561045f57600080fd5b5061046861114d565b604051808260ff1660ff16815260200191505060405180910390f35b34801561049057600080fd5b50610499611156565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e757600080fd5b5061054a600480360360408110156104fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117c565b005b34801561055857600080fd5b5061056161124b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105af57600080fd5b506105f2600480360360208110156105c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611271565b6040518082815260200191505060405180910390f35b34801561061457600080fd5b5061061d611292565b005b34801561062b57600080fd5b50610634611362565b6040518082815260200191505060405180910390f35b34801561065657600080fd5b5061071a6004803603604081101561066d57600080fd5b81019080803590602001909291908035906020019064010000000081111561069457600080fd5b8201836020820111156106a657600080fd5b803590602001918460018302840111640100000000831117156106c857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611368565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076857600080fd5b506107716114ed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107bf57600080fd5b506107c8611516565b604051808215151515815260200191505060405180910390f35b3480156107ee57600080fd5b506107f761156d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561083757808201518184015260208101905061081c565b50505050905090810190601f1680156108645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087e57600080fd5b506108876115a6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108c75780820151818401526020810190506108ac565b50505050905090810190601f1680156108f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61094e6004803603604081101561091857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b604051808215151515815260200191505060405180910390f35b34801561097457600080fd5b5061097d611609565b6040518082815260200191505060405180910390f35b34801561099f57600080fd5b506109cc600480360360208110156109b657600080fd5b8101908080359060200190929190505050611696565b604051808215151515815260200191505060405180910390f35b3480156109f257600080fd5b50610a5360048036036080811015610a0957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506116b6565b6040518082815260200191505060405180910390f35b348015610a7557600080fd5b50610a7e6116d6565b6040518082815260200191505060405180910390f35b348015610aa057600080fd5b50610b3860048036036040811015610ab757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610af457600080fd5b820183602082011115610b0657600080fd5b80359060200191846001830284011164010000000083111715610b2857600080fd5b90919293919293905050506116dc565b005b348015610b4657600080fd5b50610b4f611722565b6040518082815260200191505060405180910390f35b348015610b7157600080fd5b50610b7a611728565b6040518082815260200191505060405180910390f35b348015610b9c57600080fd5b50610bdf60048036036020811015610bb357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b5565b005b348015610bed57600080fd5b50610c3060048036036020811015610c0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061190c565b005b348015610c3e57600080fd5b50610c47611929565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606040518060400160405280601081526020017f426974546f7272656e7420546f6b656e00000000000000000000000000000000815250905090565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b6000601260ff16600a0a662386f26fc1000002905090565b6000808511610d5a57600080fd5b6000831480610d695750824311155b610ddb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206973206578706972656400000000000000000000000081525060200191505060405180910390fd5b6000610df2610dec3388888861194f565b30611a25565b9050600015156005600083815260200190815260200160002060009054906101000a900460ff16151514610e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536967206465616374697661746564000000000000000000000000000000000081525060200191505060405180910390fd5b60016005600083815260200190815260200160002060006101000a81548160ff021916908315150217905550610f088189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611368565b9150610f15828488611bb3565b50509695505050505050565b60003390506000610f3182611271565b9050610f4883600654611f7090919063ffffffff16565b600681905550600083118015610f5d57508234145b610fcf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e7420616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f858461104b87611271565b60405180848152602001838152602001828152602001935050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f67b714876402c93362735688659e2283b4a37fb21bab24bc759ca759ae851fd8856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b61114a3382610f21565b50565b60006012905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900460ff16156111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123fc6023913960400191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124782611f90565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b61129a611516565b6112a357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b600080600080604185511461138357600093505050506114e7565b602085015192506040850151915060ff6041860151169050601b8160ff1610156113ae57601b810190505b601b8160ff16141580156113c65750601c8160ff1614155b156113d757600093505050506114e7565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611434573d6000803e3d6000fd5b505050602060405103519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f7220696e2065637265636f766572000000000000000000000000000081525060200191505060405180910390fd5b5050505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600281526020017f040500000000000000000000000000000000000000000000000000000000000081525081565b60606040518060400160405280600381526020017f4254540000000000000000000000000000000000000000000000000000000000815250905090565b60008134146115f55760009050611603565b611600338484611bb3565b90505b92915050565b6040518060800160405280605b81526020016124c6605b91396040516020018082805190602001908083835b602083106116585780518252602082019150602081019050602083039250611635565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020528060005260406000206000915054906101000a900460ff1681565b60006116cc6116c78686868661194f565b612088565b9050949350505050565b61040581565b6116e4611516565b6116ed57600080fd5b6000828260208110156116ff57600080fd5b8101908080359060200190929190505050905061171c848261209d565b50505050565b60015481565b604051806080016040528060528152602001612442605291396040516020018082805190602001908083835b602083106117775780518252602082019150602081019050602083039250611754565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b6117bd611516565b6117c657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806124946032913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1f9f3556dd336016cdf20adaead7d5c73665dba664b60e8c17e9a4eb91ce1d3960405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611914611516565b61191d57600080fd5b61192681611f90565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806040518060800160405280605b81526020016124c6605b91396040516020018082805190602001908083835b602083106119a1578051825260208201915060208101905060208303925061197e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060405181815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015284606082015283608082015260a0812092505081915050949350505050565b600080604051806080016040528060528152602001612442605291396040516020018082805190602001908083835b60208310611a775780518252602082019150602081019050602083039250611a54565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001206040518060400160405280600d81526020017f4d61746963204e6574776f726b00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012061040586604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050611baa8482612248565b91505092915050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c3357600080fd5b505afa158015611c47573d6000803e3d6000fd5b505050506040513d6020811015611c5d57600080fd5b8101908080519060200190929190505050905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cef57600080fd5b505afa158015611d03573d6000803e3d6000fd5b505050506040513d6020811015611d1957600080fd5b81019080805190602001909291905050509050611d37868686612289565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c48786863073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e3f57600080fd5b505afa158015611e53573d6000803e3d6000fd5b505050506040513d6020811015611e6957600080fd5b81019080805190602001909291905050503073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ef757600080fd5b505afa158015611f0b573d6000803e3d6000fd5b505050506040513d6020811015611f2157600080fd5b8101908080519060200190929190505050604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a46001925050509392505050565b600082821115611f7f57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fca57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061209682600154612248565b9050919050565b6000811180156120da5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061241f6023913960400191505060405180910390fd5b600061213a83611271565b905060008390508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612187573d6000803e3d6000fd5b5061219d836006546123dc90919063ffffffff16565b6006819055508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f6858561221f89611271565b60405180848152602001838152602001828152602001935050505060405180910390a350505050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528260028201528360228201526042812091505092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f63616e27742073656e6420746f204d524332300000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612371573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000808284019050838110156123f157600080fd5b809150509291505056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294368696c6420746f6b656e3a206e6577206368696c64206164647265737320697320746865207a65726f2061646472657373546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a72315820a58f58a3318c1ddf18952ae785b7534d39f80e5d3bfb41945528fa87b599c45664736f6c63430005110032" + }, + "62c3adBeCE50a544Aa3C45b53F86F672feb44Ebc": { + "balance": "0xf8277896582678ac000000" + }, + "54FFc23455ADE612E7d0E068b36D1F80f0885cC0": { + "balance": "0xf8277896582678ac000000" + }, + "643D412Bcc45d910F4514e2F597167D85856E08F": { + "balance": "0xf8277896582678ac000000" + }, + "e848F81560e480Ee381365a3d98d1d4E5F24159A": { + "balance": "0xf8277896582678ac000000" + }, + "F4c2F1d772488Cc6D3eC3C703B9710Fa2C0E227E": { + "balance": "0xf8277896582678ac000000" + }, + "Cb670b22515bCAEAA7b3Ffb8149D303F00FB026E": { + "balance": "0xf8277896582678ac000000" + }, + "671E21EC4f4Ce86B31Bf215978e42AA7F0db8D6b": { + "balance": "0xf8277896582678ac000000" + } +} \ No newline at end of file diff --git a/core/allocs/bttc-mainnet.json b/core/allocs/bttc-mainnet.json new file mode 100644 index 000000000..ed6975c72 --- /dev/null +++ b/core/allocs/bttc-mainnet.json @@ -0,0 +1,35 @@ +{ + "0000000000000000000000000000000000001000": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c806360c8614d1161010f578063af26aa96116100a2578063d5b844eb11610071578063d5b844eb14610666578063dcf2793a14610684578063e3b7c924146106b6578063f59cf565146106d4576101f0565b8063af26aa96146105c7578063b71d7a69146105e7578063b7ab4db514610617578063c1b3c91914610636576101f0565b806370ba5707116100de57806370ba57071461052b57806398ab2b621461055b5780639d11b80714610579578063ae756451146105a9576101f0565b806360c8614d1461049c57806365b3a1e2146104bc57806366332354146104db578063687a9bd6146104f9576101f0565b80633434735f1161018757806344d6528f1161015657806344d6528f146103ee5780634dbc959f1461041e57806355614fcc1461043c578063582a8d081461046c576101f0565b80633434735f1461035257806335ddfeea1461037057806343ee8213146103a057806344c15cb1146103be576101f0565b806323f2a73f116101c357806323f2a73f146102a45780632bc06564146102d45780632de3a180146102f25780632eddf35214610322576101f0565b8063047a6c5b146101f55780630c35b1cb146102275780631270b5741461025857806323c2a2b414610288575b600080fd5b61020f600480360361020a9190810190612c0d565b610706565b60405161021e9392919061354c565b60405180910390f35b610241600480360361023c9190810190612c0d565b61075d565b60405161024f92919061336d565b60405180910390f35b610272600480360361026d9190810190612c36565b610939565b60405161027f91906133a4565b60405180910390f35b6102a2600480360361029d9190810190612d15565b610a91565b005b6102be60048036036102b99190810190612c36565b61112a565b6040516102cb91906133a4565b60405180910390f35b6102dc611281565b6040516102e991906134fa565b60405180910390f35b61030c60048036036103079190810190612b6a565b611286565b60405161031991906133bf565b60405180910390f35b61033c60048036036103379190810190612c0d565b611307565b60405161034991906134fa565b60405180910390f35b61035a611437565b6040516103679190613352565b60405180910390f35b61038a60048036036103859190810190612ba6565b61144f565b60405161039791906133a4565b60405180910390f35b6103a861151a565b6040516103b591906133bf565b60405180910390f35b6103d860048036036103d39190810190612c72565b611531565b6040516103e591906134fa565b60405180910390f35b61040860048036036104039190810190612c36565b611619565b60405161041591906134df565b60405180910390f35b610426611781565b60405161043391906134fa565b60405180910390f35b61045660048036036104519190810190612aef565b611791565b60405161046391906133a4565b60405180910390f35b61048660048036036104819190810190612b18565b6117ab565b60405161049391906133bf565b60405180910390f35b6104a4611829565b6040516104b39392919061354c565b60405180910390f35b6104c461189d565b6040516104d292919061336d565b60405180910390f35b6104e3611c57565b6040516104f091906134fa565b60405180910390f35b610513600480360361050e9190810190612cd9565b611c5c565b60405161052293929190613515565b60405180910390f35b61054560048036036105409190810190612aef565b611cc0565b60405161055291906133a4565b60405180910390f35b610563611cda565b60405161057091906133bf565b60405180910390f35b610593600480360361058e9190810190612c0d565b611cf1565b6040516105a091906134fa565b60405180910390f35b6105b1611e22565b6040516105be91906133bf565b60405180910390f35b6105cf611e39565b6040516105de9392919061354c565b60405180910390f35b61060160048036036105fc9190810190612c0d565b611e9a565b60405161060e91906134fa565b60405180910390f35b61061f611f9a565b60405161062d92919061336d565b60405180910390f35b610650600480360361064b9190810190612c0d565b611fae565b60405161065d91906134fa565b60405180910390f35b61066e611fcf565b60405161067b9190613583565b60405180910390f35b61069e60048036036106999190810190612cd9565b611fd4565b6040516106ad93929190613515565b60405180910390f35b6106be612038565b6040516106cb91906134fa565b60405180910390f35b6106ee60048036036106e99190810190612c0d565b61204a565b6040516106fd9392919061354c565b60405180910390f35b60008060006002600085815260200190815260200160002060000154600260008681526020019081526020016000206001015460026000878152602001908152602001600020600201549250925092509193909250565b60608060ff83116107795761077061189d565b91509150610934565b600061078484611e9a565b9050606060016000838152602001908152602001600020805490506040519080825280602002602001820160405280156107cd5781602001602082028038833980820191505090505b509050606060016000848152602001908152602001600020805490506040519080825280602002602001820160405280156108175781602001602082028038833980820191505090505b50905060008090505b60016000858152602001908152602001600020805490508110156109295760016000858152602001908152602001600020818154811061085c57fe5b906000526020600020906003020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683828151811061089a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001600085815260200190815260200160002081815481106108f257fe5b90600052602060002090600302016001015482828151811061091057fe5b6020026020010181815250508080600101915050610820565b508181945094505050505b915091565b6000606060016000858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a0c578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610970565b50505050905060008090505b8151811015610a84578373ffffffffffffffffffffffffffffffffffffffff16828281518110610a4457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff161415610a7757600192505050610a8b565b8080600101915050610a18565b5060009150505b92915050565b73fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a906134bf565b60405180910390fd5b6000610b1d611781565b90506000811415610b3157610b30612074565b5b610b4560018261239590919063ffffffff16565b8814610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d9061343f565b60405180910390fd5b868611610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf9061349f565b60405180910390fd5b6000604060018989030181610bd957fe5b0614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c119061347f565b60405180910390fd5b8660026000838152602001908152602001600020600101541115610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9061341f565b60405180910390fd5b6000600260008a81526020019081526020016000206000015414610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc39061345f565b60405180910390fd5b604051806060016040528089815260200188815260200187815250600260008a8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600388908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008a815260200190815260200160002081610d6691906128e9565b506000600160008a815260200190815260200160002081610d8791906128e9565b506060610ddf610dda87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506123b4565b6123e2565b905060008090505b8151811015610f51576060610e0e838381518110610e0157fe5b60200260200101516123e2565b90506000808c81526020019081526020016000208054809190600101610e3491906128e9565b506040518060600160405280610e5d83600081518110610e5057fe5b60200260200101516124bf565b8152602001610e7f83600181518110610e7257fe5b60200260200101516124bf565b8152602001610ea183600281518110610e9457fe5b6020026020010151612530565b73ffffffffffffffffffffffffffffffffffffffff168152506000808d81526020019081526020016000208381548110610ed757fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610de7565b506060610fa9610fa486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506123b4565b6123e2565b905060008090505b815181101561111d576060610fd8838381518110610fcb57fe5b60200260200101516123e2565b9050600160008d81526020019081526020016000208054809190600101610fff91906128e9565b5060405180606001604052806110288360008151811061101b57fe5b60200260200101516124bf565b815260200161104a8360018151811061103d57fe5b60200260200101516124bf565b815260200161106c8360028151811061105f57fe5b6020026020010151612530565b73ffffffffffffffffffffffffffffffffffffffff16815250600160008e815260200190815260200160002083815481106110a357fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050508080600101915050610fb1565b5050505050505050505050565b60006060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156111fc578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611160565b50505050905060008090505b8151811015611274578373ffffffffffffffffffffffffffffffffffffffff1682828151811061123457fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff1614156112675760019250505061127b565b8080600101915050611208565b5060009150505b92915050565b604081565b60006002600160f81b84846040516020016112a3939291906132bf565b6040516020818303038152906040526040516112bf91906132fc565b602060405180830381855afa1580156112dc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506112ff9190810190612b41565b905092915050565b60006060600080848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113d9578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061133d565b505050509050600080905060008090505b825181101561142c5761141d83828151811061140257fe5b6020026020010151602001518361239590919063ffffffff16565b915080806001019150506113ea565b508092505050919050565b73fffffffffffffffffffffffffffffffffffffffe81565b600080600080859050600060218087518161146657fe5b04029050600081111561147f5761147c876117ab565b91505b6000602190505b818111611509576000600182038801519050818801519550806000602081106114ab57fe5b1a60f81b9450600060f81b857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156114f0576114e98685611286565b93506114fd565b6114fa8487611286565b93505b50602181019050611486565b508782149450505050509392505050565b6040516115269061333d565b604051809103902081565b60008060009050600080905060008090505b84518167ffffffffffffffff16101561160c57606061156e868367ffffffffffffffff166041612553565b9050600061158582896125df90919063ffffffff16565b905061158f61291b565b6115998a83611619565b90506115a58a8361112a565b80156115dc57508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16115b156115fe578194506115fb81602001518761239590919063ffffffff16565b95505b505050604181019050611543565b5081925050509392505050565b61162161291b565b6060600080858152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156116f1578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611655565b50505050905060008090505b8151811015611779578373ffffffffffffffffffffffffffffffffffffffff1682828151811061172957fe5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff16141561176c5781818151811061175d57fe5b60200260200101519250611779565b80806001019150506116fd565b505092915050565b600061178c43611e9a565b905090565b60006117a461179e611781565b8361112a565b9050919050565b60006002600060f81b836040516020016117c6929190613293565b6040516020818303038152906040526040516117e291906132fc565b602060405180830381855afa1580156117ff573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506118229190810190612b41565b9050919050565b60008060008061184a600161183c611781565b61239590919063ffffffff16565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b606080606060076040519080825280602002602001820160405280156118d25781602001602082028038833980820191505090505b50905073dcc05b56f58af80dba0f6751c223f231dcab3e1a816000815181106118f757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073d782c11d7f8be621bd726f9241acc0278ae2a4a28160018151811061195357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050734c95a52686a9b3ff9cf787b94b8549a988334c57816002815181106119af57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073f5094a6c2f33d9b218d3dc386323695c51f0df7981600381518110611a0b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fd0a288bad34306fd0295ca48d5f9ccb21da530481600481518110611a6757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073201eb831f3ac536a0b4dd7e14c61b14c314bc53781600581518110611ac357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050736e275592bd4af7192e9016b7c80d0db0a3ba190a81600681518110611b1f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060606007604051908082528060200260200182016040528015611b8b5781602001602082028038833980820191505090505b509050600181600081518110611b9d57fe5b602002602001018181525050600181600181518110611bb857fe5b602002602001018181525050600181600281518110611bd357fe5b602002602001018181525050600181600381518110611bee57fe5b602002602001018181525050600181600481518110611c0957fe5b602002602001018181525050600181600581518110611c2457fe5b602002602001018181525050600181600681518110611c3f57fe5b60200260200101818152505081819350935050509091565b60ff81565b60016020528160005260406000208181548110611c7557fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b6000611cd3611ccd611781565b83610939565b9050919050565b604051611ce690613328565b604051809103902081565b6000606060016000848152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611dc4578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611d28565b505050509050600080905060008090505b8251811015611e1757611e08838281518110611ded57fe5b6020026020010151602001518361239590919063ffffffff16565b91508080600101915050611dd5565b508092505050919050565b604051611e2e90613313565b604051809103902081565b600080600080611e47611781565b905060026000828152602001908152602001600020600001546002600083815260200190815260200160002060010154600260008481526020019081526020016000206002015493509350935050909192565b60008060038054905090505b6000811115611f5a57611eb7612952565b6002600060036001850381548110611ecb57fe5b906000526020600020015481526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905083816020015111158015611f2857506000816040015114155b8015611f38575080604001518411155b15611f4b57806000015192505050611f95565b50808060019003915050611ea6565b5060006003805490501115611f9057600360016003805490500381548110611f7e57fe5b90600052602060002001549050611f95565b600090505b919050565b606080611fa64361075d565b915091509091565b60038181548110611fbb57fe5b906000526020600020016000915090505481565b600281565b60006020528160005260406000208181548110611fed57fe5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60006040438161204457fe5b04905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b60608061207f61189d565b8092508193505050600080905060405180606001604052808281526020016000815260200160ff81525060026000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600381908060018154018082558091505090600182039060005260206000200160009091929091909150555060008060008381526020019081526020016000208161212891906128e9565b506000600160008381526020019081526020016000208161214991906128e9565b5060008090505b835181101561226b57600080838152602001908152602001600020805480919060010161217d91906128e9565b50604051806060016040528082815260200184838151811061219b57fe5b602002602001015181526020018583815181106121b457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681525060008084815260200190815260200160002082815481106121f257fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612150565b5060008090505b835181101561238f576001600083815260200190815260200160002080548091906001016122a091906128e9565b5060405180606001604052808281526020018483815181106122be57fe5b602002602001015181526020018583815181106122d757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681525060016000848152602001908152602001600020828154811061231657fe5b9060005260206000209060030201600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508080600101915050612272565b50505050565b6000808284019050838110156123aa57600080fd5b8091505092915050565b6123bc612973565b600060208301905060405180604001604052808451815260200182815250915050919050565b60606123ed826126e9565b6123f657600080fd5b600061240183612737565b905060608160405190808252806020026020018201604052801561243f57816020015b61242c61298d565b8152602001906001900390816124245790505b509050600061245185602001516127a8565b8560200151019050600080600090505b848110156124b25761247283612831565b915060405180604001604052808381526020018481525084828151811061249557fe5b602002602001018190525081830192508080600101915050612461565b5082945050505050919050565b60008082600001511180156124d957506021826000015111155b6124e257600080fd5b60006124f183602001516127a8565b9050600081846000015103905060008083866020015101905080519150602083101561252457826020036101000a820491505b81945050505050919050565b6000601582600001511461254357600080fd5b61254c826124bf565b9050919050565b60608183018451101561256557600080fd5b6060821560008114612582576040519150602082016040526125d3565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156125c057805183526020830192506020810190506125a3565b50868552601f19601f8301166040525050505b50809150509392505050565b60008060008060418551146125fa57600093505050506126e3565b602085015192506040850151915060ff6041860151169050601b8160ff16101561262557601b810190505b601b8160ff161415801561263d5750601c8160ff1614155b1561264e57600093505050506126e3565b60006001878386866040516000815260200160405260405161267394939291906133da565b6020604051602081039080840390855afa158015612695573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126db57600080fd5b809450505050505b92915050565b600080826000015114156127005760009050612732565b60008083602001519050805160001a915060c060ff168260ff16101561272b57600092505050612732565b6001925050505b919050565b6000808260000151141561274e57600090506127a3565b6000809050600061276284602001516127a8565b84602001510190506000846000015185602001510190505b8082101561279c5761278b82612831565b82019150828060010193505061277a565b8293505050505b919050565b600080825160001a9050608060ff168110156127c857600091505061282c565b60b860ff168110806127ed575060c060ff1681101580156127ec575060f860ff1681105b5b156127fc57600191505061282c565b60c060ff1681101561281c5760018060b80360ff1682030191505061282c565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561285257600191506128df565b60b860ff1681101561286f576001608060ff1682030191506128de565b60c060ff1681101561289f5760b78103600185019450806020036101000a855104600182018101935050506128dd565b60f860ff168110156128bc57600160c060ff1682030191506128dc565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b8154818355818111156129165760030281600302836000526020600020918201910161291591906129a7565b5b505050565b60405180606001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b604051806040016040528060008152602001600081525090565b6129fa91905b808211156129f65760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506003016129ad565b5090565b90565b600081359050612a0c8161377c565b92915050565b600081359050612a2181613793565b92915050565b600081519050612a3681613793565b92915050565b60008083601f840112612a4e57600080fd5b8235905067ffffffffffffffff811115612a6757600080fd5b602083019150836001820283011115612a7f57600080fd5b9250929050565b600082601f830112612a9757600080fd5b8135612aaa612aa5826135cb565b61359e565b91508082526020830160208301858383011115612ac657600080fd5b612ad1838284613726565b50505092915050565b600081359050612ae9816137aa565b92915050565b600060208284031215612b0157600080fd5b6000612b0f848285016129fd565b91505092915050565b600060208284031215612b2a57600080fd5b6000612b3884828501612a12565b91505092915050565b600060208284031215612b5357600080fd5b6000612b6184828501612a27565b91505092915050565b60008060408385031215612b7d57600080fd5b6000612b8b85828601612a12565b9250506020612b9c85828601612a12565b9150509250929050565b600080600060608486031215612bbb57600080fd5b6000612bc986828701612a12565b9350506020612bda86828701612a12565b925050604084013567ffffffffffffffff811115612bf757600080fd5b612c0386828701612a86565b9150509250925092565b600060208284031215612c1f57600080fd5b6000612c2d84828501612ada565b91505092915050565b60008060408385031215612c4957600080fd5b6000612c5785828601612ada565b9250506020612c68858286016129fd565b9150509250929050565b600080600060608486031215612c8757600080fd5b6000612c9586828701612ada565b9350506020612ca686828701612a12565b925050604084013567ffffffffffffffff811115612cc357600080fd5b612ccf86828701612a86565b9150509250925092565b60008060408385031215612cec57600080fd5b6000612cfa85828601612ada565b9250506020612d0b85828601612ada565b9150509250929050565b600080600080600080600060a0888a031215612d3057600080fd5b6000612d3e8a828b01612ada565b9750506020612d4f8a828b01612ada565b9650506040612d608a828b01612ada565b955050606088013567ffffffffffffffff811115612d7d57600080fd5b612d898a828b01612a3c565b9450945050608088013567ffffffffffffffff811115612da857600080fd5b612db48a828b01612a3c565b925092505092959891949750929550565b6000612dd18383612df5565b60208301905092915050565b6000612de98383613266565b60208301905092915050565b612dfe8161369b565b82525050565b612e0d8161369b565b82525050565b6000612e1e82613617565b612e288185613652565b9350612e33836135f7565b8060005b83811015612e64578151612e4b8882612dc5565b9750612e5683613638565b925050600181019050612e37565b5085935050505092915050565b6000612e7c82613622565b612e868185613663565b9350612e9183613607565b8060005b83811015612ec2578151612ea98882612ddd565b9750612eb483613645565b925050600181019050612e95565b5085935050505092915050565b612ed8816136ad565b82525050565b612eef612eea826136b9565b613768565b82525050565b612efe816136e5565b82525050565b612f15612f10826136e5565b613772565b82525050565b6000612f268261362d565b612f308185613674565b9350612f40818560208601613735565b80840191505092915050565b6000612f59600383613690565b91507f31393900000000000000000000000000000000000000000000000000000000006000830152600382019050919050565b6000612f99600483613690565b91507f766f7465000000000000000000000000000000000000000000000000000000006000830152600482019050919050565b6000612fd9602d8361367f565b91507f537461727420626c6f636b206d7573742062652067726561746572207468616e60008301527f2063757272656e74207370616e000000000000000000000000000000000000006020830152604082019050919050565b600061303f600c83613690565b91507f64656c69766572792d31393900000000000000000000000000000000000000006000830152600c82019050919050565b600061307f600f8361367f565b91507f496e76616c6964207370616e20696400000000000000000000000000000000006000830152602082019050919050565b60006130bf60138361367f565b91507f5370616e20616c726561647920657869737473000000000000000000000000006000830152602082019050919050565b60006130ff60458361367f565b91507f446966666572656e6365206265747765656e20737461727420616e6420656e6460008301527f20626c6f636b206d75737420626520696e206d756c7469706c6573206f66207360208301527f7072696e740000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600061318b602a8361367f565b91507f456e6420626c6f636b206d7573742062652067726561746572207468616e207360008301527f7461727420626c6f636b000000000000000000000000000000000000000000006020830152604082019050919050565b60006131f160128361367f565b91507f4e6f742053797374656d204164646573732100000000000000000000000000006000830152602082019050919050565b60608201600082015161323a6000850182613266565b50602082015161324d6020850182613266565b5060408201516132606040850182612df5565b50505050565b61326f8161370f565b82525050565b61327e8161370f565b82525050565b61328d81613719565b82525050565b600061329f8285612ede565b6001820191506132af8284612f04565b6020820191508190509392505050565b60006132cb8286612ede565b6001820191506132db8285612f04565b6020820191506132eb8284612f04565b602082019150819050949350505050565b60006133088284612f1b565b915081905092915050565b600061331e82612f4c565b9150819050919050565b600061333382612f8c565b9150819050919050565b600061334882613032565b9150819050919050565b60006020820190506133676000830184612e04565b92915050565b600060408201905081810360008301526133878185612e13565b9050818103602083015261339b8184612e71565b90509392505050565b60006020820190506133b96000830184612ecf565b92915050565b60006020820190506133d46000830184612ef5565b92915050565b60006080820190506133ef6000830187612ef5565b6133fc6020830186613284565b6134096040830185612ef5565b6134166060830184612ef5565b95945050505050565b6000602082019050818103600083015261343881612fcc565b9050919050565b6000602082019050818103600083015261345881613072565b9050919050565b60006020820190508181036000830152613478816130b2565b9050919050565b60006020820190508181036000830152613498816130f2565b9050919050565b600060208201905081810360008301526134b88161317e565b9050919050565b600060208201905081810360008301526134d8816131e4565b9050919050565b60006060820190506134f46000830184613224565b92915050565b600060208201905061350f6000830184613275565b92915050565b600060608201905061352a6000830186613275565b6135376020830185613275565b6135446040830184612e04565b949350505050565b60006060820190506135616000830186613275565b61356e6020830185613275565b61357b6040830184613275565b949350505050565b60006020820190506135986000830184613284565b92915050565b6000604051905081810181811067ffffffffffffffff821117156135c157600080fd5b8060405250919050565b600067ffffffffffffffff8211156135e257600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006136a6826136ef565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613753578082015181840152602081019050613738565b83811115613762576000848401525b50505050565b6000819050919050565b6000819050919050565b6137858161369b565b811461379057600080fd5b50565b61379c816136e5565b81146137a757600080fd5b50565b6137b38161370f565b81146137be57600080fd5b5056fea365627a7a72315820a9e8b74836af58544fe20193bc6f0f8139917b855698b256cd2f417f1e5adba96c6578706572696d656e74616cf564736f6c63430005110040" + }, + "0000000000000000000000000000000000001001": { + "balance": "0x0", + "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806319494a17146100465780633434735f146100e15780635407ca671461012b575b600080fd5b6100c76004803603604081101561005c57600080fd5b81019080803590602001909291908035906020019064010000000081111561008357600080fd5b82018360208201111561009557600080fd5b803590602001918460018302840111640100000000831117156100b757600080fd5b9091929391929390505050610149565b604051808215151515815260200191505060405180910390f35b6100e961047a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610133610492565b6040518082815260200191505060405180910390f35b600073fffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f742053797374656d2041646465737321000000000000000000000000000081525060200191505060405180910390fd5b606061025761025285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610498565b6104c6565b905060006102788260008151811061026b57fe5b60200260200101516105a3565b905080600160005401146102f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f537461746549647320617265206e6f742073657175656e7469616c000000000081525060200191505060405180910390fd5b600080815480929190600101919050555060006103248360018151811061031757fe5b6020026020010151610614565b905060606103458460028151811061033857fe5b6020026020010151610637565b9050610350826106c3565b1561046f576000624c4b409050606084836040516024018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103aa57808201518184015260208101905061038f565b50505050905090810190601f1680156103d75780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040527f26c53bea000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008082516020840160008887f1965050505b505050509392505050565b73fffffffffffffffffffffffffffffffffffffffe81565b60005481565b6104a0610943565b600060208301905060405180604001604052808451815260200182815250915050919050565b60606104d1826106dc565b6104da57600080fd5b60006104e58361072a565b905060608160405190808252806020026020018201604052801561052357816020015b61051061095d565b8152602001906001900390816105085790505b5090506000610535856020015161079b565b8560200151019050600080600090505b848110156105965761055683610824565b915060405180604001604052808381526020018481525084828151811061057957fe5b602002602001018190525081830192508080600101915050610545565b5082945050505050919050565b60008082600001511180156105bd57506021826000015111155b6105c657600080fd5b60006105d5836020015161079b565b9050600081846000015103905060008083866020015101905080519150602083101561060857826020036101000a820491505b81945050505050919050565b6000601582600001511461062757600080fd5b610630826105a3565b9050919050565b6060600082600001511161064a57600080fd5b6000610659836020015161079b565b905060008184600001510390506060816040519080825280601f01601f19166020018201604052801561069b5781602001600182028038833980820191505090505b50905060008160200190506106b78487602001510182856108dc565b81945050505050919050565b600080823b905060008163ffffffff1611915050919050565b600080826000015114156106f35760009050610725565b60008083602001519050805160001a915060c060ff168260ff16101561071e57600092505050610725565b6001925050505b919050565b600080826000015114156107415760009050610796565b60008090506000610755846020015161079b565b84602001510190506000846000015185602001510190505b8082101561078f5761077e82610824565b82019150828060010193505061076d565b8293505050505b919050565b600080825160001a9050608060ff168110156107bb57600091505061081f565b60b860ff168110806107e0575060c060ff1681101580156107df575060f860ff1681105b5b156107ef57600191505061081f565b60c060ff1681101561080f5760018060b80360ff1682030191505061081f565b60018060f80360ff168203019150505b919050565b6000806000835160001a9050608060ff1681101561084557600191506108d2565b60b860ff16811015610862576001608060ff1682030191506108d1565b60c060ff168110156108925760b78103600185019450806020036101000a855104600182018101935050506108d0565b60f860ff168110156108af57600160c060ff1682030191506108cf565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b60008114156108ea5761093e565b5b602060ff16811061091a5782518252602060ff1683019250602060ff1682019150602060ff16810390506108eb565b6000600182602060ff16036101000a03905080198451168184511681811785525050505b505050565b604051806040016040528060008152602001600081525090565b60405180604001604052806000815260200160008152509056fea265627a7a72315820af228b81e19dac46d14c24d264bde25d8a461d559c4e3cc82a5f1660755df35e64736f6c63430005110032" + }, + "0000000000000000000000000000000000001010": { + "balance": "0x1ed09b7e473741b2481174c000000", + "code": "0x6080604052600436106101c25760003560e01c80638da5cb5b116100f7578063b789543c11610095578063e614d0d611610064578063e614d0d614610b65578063ed9ef52414610b90578063f2fde38b14610be1578063fc0c546a14610c32576101c2565b8063b789543c146109e6578063cc79f97b14610a69578063cf2c52cb14610a94578063e306f77914610b3a576101c2565b806395d89b41116100d157806395d89b4114610872578063a9059cbb14610902578063abceeba214610968578063acd06cb314610993576101c2565b80638da5cb5b1461075c5780638f32d59b146107b35780639025e64c146107e2576101c2565b806342fc47fb1161016457806370a082311161013e57806370a08231146105a3578063715018a614610608578063771282f61461061f57806377d32e941461064a576101c2565b806342fc47fb14610484578063485cc955146104db57806360f96a8f1461054c576101c2565b806319d27d9c116101a057806319d27d9c146102d3578063205c2878146103d75780632e1a7d4d14610425578063313ce56714610453576101c2565b806306fdde03146101c75780631499c5921461025757806318160ddd146102a8575b600080fd5b3480156101d357600080fd5b506101dc610c89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026357600080fd5b506102a66004803603602081101561027a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cc6565b005b3480156102b457600080fd5b506102bd610d34565b6040518082815260200191505060405180910390f35b3480156102df57600080fd5b50610395600480360360a08110156102f657600080fd5b810190808035906020019064010000000081111561031357600080fd5b82018360208201111561032557600080fd5b8035906020019184600183028401116401000000008311171561034757600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610423600480360360408110156103ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f21565b005b6104516004803603602081101561043b57600080fd5b8101908080359060200190929190505050611140565b005b34801561045f57600080fd5b5061046861114d565b604051808260ff1660ff16815260200191505060405180910390f35b34801561049057600080fd5b50610499611156565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e757600080fd5b5061054a600480360360408110156104fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117c565b005b34801561055857600080fd5b5061056161124b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105af57600080fd5b506105f2600480360360208110156105c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611271565b6040518082815260200191505060405180910390f35b34801561061457600080fd5b5061061d611292565b005b34801561062b57600080fd5b50610634611362565b6040518082815260200191505060405180910390f35b34801561065657600080fd5b5061071a6004803603604081101561066d57600080fd5b81019080803590602001909291908035906020019064010000000081111561069457600080fd5b8201836020820111156106a657600080fd5b803590602001918460018302840111640100000000831117156106c857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611368565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076857600080fd5b506107716114ed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107bf57600080fd5b506107c8611516565b604051808215151515815260200191505060405180910390f35b3480156107ee57600080fd5b506107f761156d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561083757808201518184015260208101905061081c565b50505050905090810190601f1680156108645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087e57600080fd5b506108876115a6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108c75780820151818401526020810190506108ac565b50505050905090810190601f1680156108f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61094e6004803603604081101561091857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b604051808215151515815260200191505060405180910390f35b34801561097457600080fd5b5061097d611609565b6040518082815260200191505060405180910390f35b34801561099f57600080fd5b506109cc600480360360208110156109b657600080fd5b8101908080359060200190929190505050611696565b604051808215151515815260200191505060405180910390f35b3480156109f257600080fd5b50610a5360048036036080811015610a0957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506116b6565b6040518082815260200191505060405180910390f35b348015610a7557600080fd5b50610a7e6116d6565b6040518082815260200191505060405180910390f35b348015610aa057600080fd5b50610b3860048036036040811015610ab757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610af457600080fd5b820183602082011115610b0657600080fd5b80359060200191846001830284011164010000000083111715610b2857600080fd5b90919293919293905050506116db565b005b348015610b4657600080fd5b50610b4f611721565b6040518082815260200191505060405180910390f35b348015610b7157600080fd5b50610b7a611727565b6040518082815260200191505060405180910390f35b348015610b9c57600080fd5b50610bdf60048036036020811015610bb357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b4565b005b348015610bed57600080fd5b50610c3060048036036020811015610c0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061190b565b005b348015610c3e57600080fd5b50610c47611928565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606040518060400160405280601081526020017f426974546f7272656e7420546f6b656e00000000000000000000000000000000815250905090565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f44697361626c656420666561747572650000000000000000000000000000000081525060200191505060405180910390fd5b6000601260ff16600a0a662386f26fc1000002905090565b6000808511610d5a57600080fd5b6000831480610d695750824311155b610ddb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e6174757265206973206578706972656400000000000000000000000081525060200191505060405180910390fd5b6000610df2610dec3388888861194e565b30611a24565b9050600015156005600083815260200190815260200160002060009054906101000a900460ff16151514610e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f536967206465616374697661746564000000000000000000000000000000000081525060200191505060405180910390fd5b60016005600083815260200190815260200160002060006101000a81548160ff021916908315150217905550610f088189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611368565b9150610f15828488611bb1565b50509695505050505050565b60003390506000610f3182611271565b9050610f4883600654611f6e90919063ffffffff16565b600681905550600083118015610f5d57508234145b610fcf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e7420616d6f756e740000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f858461104b87611271565b60405180848152602001838152602001828152602001935050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f67b714876402c93362735688659e2283b4a37fb21bab24bc759ca759ae851fd8856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b61114a3382610f21565b50565b60006012905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900460ff16156111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123fa6023913960400191505060405180910390fd5b6001600760006101000a81548160ff02191690831515021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124782611f8e565b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b61129a611516565b6112a357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065481565b600080600080604185511461138357600093505050506114e7565b602085015192506040850151915060ff6041860151169050601b8160ff1610156113ae57601b810190505b601b8160ff16141580156113c65750601c8160ff1614155b156113d757600093505050506114e7565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611434573d6000803e3d6000fd5b505050602060405103519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4572726f7220696e2065637265636f766572000000000000000000000000000081525060200191505060405180910390fd5b5050505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600181526020017fc70000000000000000000000000000000000000000000000000000000000000081525081565b60606040518060400160405280600381526020017f4254540000000000000000000000000000000000000000000000000000000000815250905090565b60008134146115f55760009050611603565b611600338484611bb1565b90505b92915050565b6040518060800160405280605b81526020016124c4605b91396040516020018082805190602001908083835b602083106116585780518252602082019150602081019050602083039250611635565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020528060005260406000206000915054906101000a900460ff1681565b60006116cc6116c78686868661194e565b612086565b9050949350505050565b60c781565b6116e3611516565b6116ec57600080fd5b6000828260208110156116fe57600080fd5b8101908080359060200190929190505050905061171b848261209b565b50505050565b60015481565b604051806080016040528060528152602001612440605291396040516020018082805190602001908083835b602083106117765780518252602082019150602081019050602083039250611753565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b6117bc611516565b6117c557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561184b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806124926032913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1f9f3556dd336016cdf20adaead7d5c73665dba664b60e8c17e9a4eb91ce1d3960405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611913611516565b61191c57600080fd5b61192581611f8e565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806040518060800160405280605b81526020016124c4605b91396040516020018082805190602001908083835b602083106119a0578051825260208201915060208101905060208303925061197d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060405181815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015284606082015283608082015260a0812092505081915050949350505050565b600080604051806080016040528060528152602001612440605291396040516020018082805190602001908083835b60208310611a765780518252602082019150602081019050602083039250611a53565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001206040518060400160405280600d81526020017f4d61746963204e6574776f726b00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012060c786604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050611ba88482612246565b91505092915050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c3157600080fd5b505afa158015611c45573d6000803e3d6000fd5b505050506040513d6020811015611c5b57600080fd5b8101908080519060200190929190505050905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ced57600080fd5b505afa158015611d01573d6000803e3d6000fd5b505050506040513d6020811015611d1757600080fd5b81019080805190602001909291905050509050611d35868686612287565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c48786863073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e3d57600080fd5b505afa158015611e51573d6000803e3d6000fd5b505050506040513d6020811015611e6757600080fd5b81019080805190602001909291905050503073ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b8101908080519060200190929190505050604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a46001925050509392505050565b600082821115611f7d57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fc857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061209482600154612246565b9050919050565b6000811180156120d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061241d6023913960400191505060405180910390fd5b600061213883611271565b905060008390508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612185573d6000803e3d6000fd5b5061219b836006546123da90919063ffffffff16565b6006819055508373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f6858561221d89611271565b60405180848152602001838152602001828152602001935050505060405180910390a350505050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528260028201528360228201526042812091505092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612329576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f63616e27742073656e6420746f204d524332300000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561236f573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000808284019050838110156123ef57600080fd5b809150509291505056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294368696c6420746f6b656e3a206e6577206368696c64206164647265737320697320746865207a65726f2061646472657373546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a72315820413bd4c9230205e501837fa77364b552ee683e4f547fb8bd5048aebb8cc6b75364736f6c63430005110032" + }, + "DcC05b56f58AF80Dba0F6751C223f231dcAb3e1a": { + "balance": "0xf8277896582678ac000000" + }, + "D782c11D7F8BE621bd726f9241aCc0278aE2a4a2": { + "balance": "0xf8277896582678ac000000" + }, + "4c95a52686a9b3FF9Cf787b94b8549a988334c57": { + "balance": "0xf8277896582678ac000000" + }, + "f5094a6c2f33D9B218D3dc386323695C51F0dF79": { + "balance": "0xf8277896582678ac000000" + }, + "fd0a288baD34306fd0295CA48d5f9Ccb21DA5304": { + "balance": "0xf8277896582678ac000000" + }, + "201EB831f3aC536a0B4dD7e14C61B14c314Bc537": { + "balance": "0xf8277896582678ac000000" + }, + "6e275592bD4AF7192e9016b7C80D0db0A3bA190A": { + "balance": "0xf8277896582678ac000000" + } +} \ No newline at end of file diff --git a/core/genesis.go b/core/genesis.go index c1f226c34..6ac2bdc5a 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -18,6 +18,7 @@ package core import ( "bytes" + "embed" "encoding/hex" "encoding/json" "errors" @@ -42,6 +43,9 @@ import ( //go:generate gencodec -type Genesis -field-override genesisSpecMarshaling -out gen_genesis.go //go:generate gencodec -type GenesisAccount -field-override genesisAccountMarshaling -out gen_genesis_account.go +//go:embed allocs +var allocs embed.FS + var errGenesisNoConfig = errors.New("genesis has no chain configuration") // Genesis specifies the header fields, state of a genesis block. It also defines hard @@ -248,6 +252,10 @@ func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig { return params.RinkebyChainConfig case ghash == params.GoerliGenesisHash: return params.GoerliChainConfig + case ghash == params.BttcDonauGenesisHash: + return params.BttcDonauChainConfig + case ghash == params.BttcMainnetGenesisHash: + return params.BttcMainnetChainConfig default: return params.AllEthashProtocolChanges } @@ -397,6 +405,40 @@ func DefaultGoerliGenesisBlock() *Genesis { } } +// DefaultBttcDonauGenesisBlock returns the Bttc Donau network genesis block. +func DefaultBttcDonauGenesisBlock() *Genesis { + return &Genesis{ + Config: params.BttcDonauChainConfig, + Nonce: 0x0, + Timestamp: 0x5ce28211, + GasLimit: 0x989680, + Difficulty: big.NewInt(1), + Mixhash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + Coinbase: common.HexToAddress("0x0000000000000000000000000000000000000000"), + Alloc: readPrealloc("allocs/bttc-donau.json"), + Number: 0x0, + GasUsed: 0x0, + ParentHash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + } +} + +//DefaultBttcMainnet returns the Bor Mainnet network gensis block. +func DefaultBttcMainnetGenesisBlock() *Genesis { + return &Genesis{ + Config: params.BttcMainnetChainConfig, + Nonce: 0x0, + Timestamp: 0x5ce28211, + GasLimit: 0x989680, + Difficulty: big.NewInt(1), + Mixhash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + Coinbase: common.HexToAddress("0x0000000000000000000000000000000000000000"), + Alloc: readPrealloc("allocs/bttc-mainnet.json"), + Number: 0x0, + GasUsed: 0x0, + ParentHash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + } +} + // DeveloperGenesisBlock returns the 'geth --dev' genesis block. func DeveloperGenesisBlock(period uint64, faucet common.Address) *Genesis { // Override the default period to the user requested one @@ -439,3 +481,18 @@ func decodePrealloc(data string) GenesisAlloc { } return ga } + +func readPrealloc(filename string) GenesisAlloc { + f, err := allocs.Open(filename) + if err != nil { + panic(fmt.Sprintf("Could not open genesis preallocation for %s: %v", filename, err)) + } + defer f.Close() + decoder := json.NewDecoder(f) + ga := make(GenesisAlloc) + err = decoder.Decode(&ga) + if err != nil { + panic(fmt.Sprintf("Could not parse genesis preallocation for %s: %v", filename, err)) + } + return ga +} diff --git a/internal/debug/flags.go b/internal/debug/flags.go index 126ee09a7..4831f88e1 100644 --- a/internal/debug/flags.go +++ b/internal/debug/flags.go @@ -246,6 +246,12 @@ func Setup(ctx *cli.Context) error { // This context value ("metrics.addr") represents the utils.MetricsHTTPFlag.Name. // It cannot be imported because it will cause a cyclical dependency. StartPProf(address, !ctx.GlobalIsSet("metrics.addr")) + } else if ctx.GlobalIsSet("bttc-donau") { + address := fmt.Sprintf("%s:%d", "0.0.0.0", 7071) + StartPProf(address, !ctx.GlobalIsSet("metrics.addr")) + } else if ctx.GlobalIsSet("bttc-mainnet") { + address := fmt.Sprintf("%s:%d", "0.0.0.0", 7071) + StartPProf(address, !ctx.GlobalIsSet("metrics.addr")) } return nil } diff --git a/params/bootnodes.go b/params/bootnodes.go index bc291449e..ad2771733 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -67,6 +67,22 @@ var GoerliBootnodes = []string{ "enode://a59e33ccd2b3e52d578f1fbd70c6f9babda2650f0760d6ff3b37742fdcdfdb3defba5d56d315b40c46b70198c7621e63ffa3f987389c7118634b0fefbbdfa7fd@51.15.119.157:40303", } +// BttcDonauBootnodes are the enode URLs of the P2P bootstrap nodes running on the +// Bttc Donau test network. +var BttcDonauBootnodes = []string{ + "enode://2e6a732ba9d0fcf102a4f4bda7d76f28095c9f03ee56bc89dc5c2235cd527c914b6063b0c76598cc37287f0594ae4022df550c592b3ba2a56a9f02810edbeee1@52.53.72.234:30303", + "enode://3d7da6d583072fbbe733135047010698e8b6a24c9315ce953b09dddbfabb2476c8b720b2ff2beb2ec73ef111b691c7dcd87f5e42bcba4a7bc385b7f728b2ab44@54.176.105.93:30303", +} + +// BttcMainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the +// Bttc main network. +var BttcMainnetBootnodes = []string{ + "enode://8ef920be1d44ad7c41a517a6420e43511f2e30d1c35a4bb05954c9f413b1712dae6e9e05f56595966470506891ff05d203e233c2e8f6df8c72621537a3d783e9@54.157.35.210:30303", + "enode://f3a2534ac30db7387f84c1262bce9a0737c46a8b5627f8193d412a4bde415c191191bbf984f51e04e5d974e62b70fab148f38522c5e2917ca1f1860361f14cc9@107.20.250.182:30303", + "enode://268cc5c4062b4c30f7ae972322ec119465655d9b3f7220df4614f2890b5cef6ac350d65890f8ecebfe6c5ce0af635f7ae420db84de7677c54b35ed1ce6bb4fbd@54.219.27.155:30303", + "enode://a9aa7a7ec5b34485c73436d311d86c55f900db4008058231a2fd2fb8ee7ad1b68d7d5a64acbf1f62b8d5f25388b492d16befb686d6146b374a85a6ea7d5a95c9@54.241.235.101:30303", +} + var V5Bootnodes = []string{ // Teku team's bootnode "enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA", diff --git a/params/config.go b/params/config.go index 230288bb3..9e712161c 100644 --- a/params/config.go +++ b/params/config.go @@ -27,10 +27,12 @@ import ( // Genesis hashes to enforce below configs on. var ( - MainnetGenesisHash = common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3") - RopstenGenesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d") - RinkebyGenesisHash = common.HexToHash("0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177") - GoerliGenesisHash = common.HexToHash("0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a") + MainnetGenesisHash = common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3") + RopstenGenesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d") + RinkebyGenesisHash = common.HexToHash("0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177") + GoerliGenesisHash = common.HexToHash("0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a") + BttcDonauGenesisHash = common.HexToHash("0x9b0a7d8dcbdef00594103f1addbe206daa55f2e422ace24419b7680b3fb34cf5") + BttcMainnetGenesisHash = common.HexToHash("0x021eb3b7c4161d91f6f92632ebe6e28aa440dd23e3016c086d0fad4b119fcdc1") ) // TrustedCheckpoints associates each known checkpoint with the genesis hash of @@ -220,6 +222,85 @@ var ( Threshold: 2, } + // BttcDonauChainConfig contains the chain parameters to run a node on the Bttc Donau test network. + BttcDonauChainConfig = &ChainConfig{ + ChainID: big.NewInt(1029), + 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(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + Bor: &BorConfig{ + Period: 2, + ProducerDelay: 6, + Sprint: 64, + BackupMultiplier: 2, + ValidatorContract: "0x0000000000000000000000000000000000001000", + StateReceiverContract: "0x0000000000000000000000000000000000001001", + OverrideStateSyncRecords: map[string]int{ + "14949120": 8, + "14949184": 0, + "14953472": 0, + "14953536": 5, + "14953600": 0, + "14953664": 0, + "14953728": 0, + "14953792": 0, + "14953856": 0, + }, + BlockAlloc: map[string]interface{}{ + // write as interface since that is how it is decoded in genesis + "1416202": map[string]interface{}{ + "0000000000000000000000000000000000001010": map[string]interface{}{ + "balance": "0x0", + "code": "0x6080604052600436106101c25760003560e01c80638da5cb5b116100f7578063b789543c11610095578063e614d0d611610064578063e614d0d614610720578063ed9ef52414610735578063f2fde38b14610768578063fc0c546a1461079b576101c2565b8063b789543c14610624578063cc79f97b14610669578063cf2c52cb1461067e578063e306f7791461070b576101c2565b806395d89b41116100d157806395d89b41146105a4578063a9059cbb146105b9578063abceeba2146105e5578063acd06cb3146105fa576101c2565b80638da5cb5b146105515780638f32d59b146105665780639025e64c1461058f576101c2565b806342fc47fb1161016457806370a082311161013e57806370a082311461043a578063715018a61461046d578063771282f61461048257806377d32e9414610497576101c2565b806342fc47fb146103d5578063485cc955146103ea57806360f96a8f14610425576101c2565b806319d27d9c116101a057806319d27d9c146102ad578063205c2878146103615780632e1a7d4d1461038d578063313ce567146103aa576101c2565b806306fdde03146101c75780631499c5921461025157806318160ddd14610286575b600080fd5b3480156101d357600080fd5b506101dc6107b0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b506102846004803603602081101561027457600080fd5b50356001600160a01b03166107da565b005b34801561029257600080fd5b5061029b61081a565b60408051918252519081900360200190f35b3480156102b957600080fd5b50610345600480360360a08110156102d057600080fd5b8101906020810181356401000000008111156102eb57600080fd5b8201836020820111156102fd57600080fd5b8035906020019184600183028401116401000000008311171561031f57600080fd5b9193509150803590602081013590604081013590606001356001600160a01b031661082d565b604080516001600160a01b039092168252519081900360200190f35b6102846004803603604081101561037757600080fd5b506001600160a01b03813516906020013561086f565b610284600480360360208110156103a357600080fd5b50356109ca565b3480156103b657600080fd5b506103bf6109d7565b6040805160ff9092168252519081900360200190f35b3480156103e157600080fd5b506103456109dc565b3480156103f657600080fd5b506102846004803603604081101561040d57600080fd5b506001600160a01b03813581169160200135166109eb565b34801561043157600080fd5b50610345610a64565b34801561044657600080fd5b5061029b6004803603602081101561045d57600080fd5b50356001600160a01b0316610a73565b34801561047957600080fd5b50610284610a80565b34801561048e57600080fd5b5061029b610adb565b3480156104a357600080fd5b50610345600480360360408110156104ba57600080fd5b813591908101906040810160208201356401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184600183028401116401000000008311171561051057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ae1945050505050565b34801561055d57600080fd5b50610345610c05565b34801561057257600080fd5b5061057b610c14565b604080519115158252519081900360200190f35b34801561059b57600080fd5b506101dc610c25565b3480156105b057600080fd5b506101dc610c44565b61057b600480360360408110156105cf57600080fd5b506001600160a01b038135169060200135610c61565b3480156105f157600080fd5b5061029b610c84565b34801561060657600080fd5b5061057b6004803603602081101561061d57600080fd5b5035610d0d565b34801561063057600080fd5b5061029b6004803603608081101561064757600080fd5b506001600160a01b038135169060208101359060408101359060600135610d22565b34801561067557600080fd5b5061029b610d41565b34801561068a57600080fd5b50610284600480360360408110156106a157600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156106cc57600080fd5b8201836020820111156106de57600080fd5b8035906020019184600183028401116401000000008311171561070057600080fd5b509092509050610d46565b34801561071757600080fd5b5061029b610d7d565b34801561072c57600080fd5b5061029b610d83565b34801561074157600080fd5b506102846004803603602081101561075857600080fd5b50356001600160a01b0316610dcd565b34801561077457600080fd5b506102846004803603602081101561078b57600080fd5b50356001600160a01b0316610e7f565b3480156107a757600080fd5b50610345610e99565b60408051808201909152601081526f2134ba2a37b93932b73a102a37b5b2b760811b602082015290565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b604482015290519081900360640190fd5b6e01ed09bead87c0378d8e640000000090565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b6044820152905160009181900360640190fd5b33600061087b82610a73565b600654909150610891908463ffffffff610ea816565b60065582158015906108a257508234145b6108e9576040805162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6002546001600160a01b0380841691167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f858461092587610a73565b60408051938452602084019290925282820152519081900360600190a36040805184815290516000916001600160a01b038716917f67b714876402c93362735688659e2283b4a37fb21bab24bc759ca759ae851fd89181900360200190a36040805184815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350505050565b6109d4338261086f565b50565b601290565b6003546001600160a01b031681565b60075460ff1615610a2d5760405162461bcd60e51b815260040180806020018281038252602381526020018061145e6023913960400191505060405180910390fd5b6007805460ff19166001179055600280546001600160a01b0383166001600160a01b0319909116179055610a6082610ebd565b5050565b6004546001600160a01b031681565b6001600160a01b03163190565b610a88610c14565b610a9157600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065481565b6000806000808451604114610afc5760009350505050610bff565b50505060208201516040830151604184015160ff16601b811015610b1e57601b015b8060ff16601b14158015610b3657508060ff16601c14155b15610b475760009350505050610bff565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015610b9e573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b038416610bfb576040805162461bcd60e51b815260206004820152601260248201527122b93937b91034b71032b1b932b1b7bb32b960711b604482015290519081900360640190fd5b5050505b92915050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6040518060400160405280600381526020016231393960e81b81525081565b60408051808201909152600381526210951560ea1b602082015290565b6000813414610c7257506000610bff565b610c7d338484610f2b565b9392505050565b6040518060800160405280605b8152602001611528605b91396040516020018082805190602001908083835b60208310610ccf5780518252601f199092019160209182019101610cb0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020526000908152604090205460ff1681565b6000610d38610d3386868686611178565b611231565b95945050505050565b60c781565b610d4e610c14565b610d5757600080fd5b600082826020811015610d6957600080fd5b50359050610d77848261123f565b50505050565b60015481565b6040518060800160405280605281526020016114a46052913960405160200180828051906020019080838360208310610ccf5780518252601f199092019160209182019101610cb0565b610dd5610c14565b610dde57600080fd5b6001600160a01b038116610e235760405162461bcd60e51b81526004018080602001828103825260328152602001806114f66032913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f1f9f3556dd336016cdf20adaead7d5c73665dba664b60e8c17e9a4eb91ce1d3990600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b610e87610c14565b610e9057600080fd5b6109d481610ebd565b6002546001600160a01b031681565b600082821115610eb757600080fd5b50900390565b6001600160a01b038116610ed057600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516370a0823160e01b81526001600160a01b03851660048201529051600091829130916370a08231916024808301926020929190829003018186803b158015610f7657600080fd5b505afa158015610f8a573d6000803e3d6000fd5b505050506040513d6020811015610fa057600080fd5b5051604080516370a0823160e01b81526001600160a01b0387166004820152905191925060009130916370a08231916024808301926020929190829003018186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d602081101561101857600080fd5b5051905061102786868661134e565b600254604080516370a0823160e01b81526001600160a01b03898116600483018190529251818a1694909116917fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c49189918891889130916370a0823191602480820192602092909190829003018186803b1580156110a457600080fd5b505afa1580156110b8573d6000803e3d6000fd5b505050506040513d60208110156110ce57600080fd5b5051604080516370a0823160e01b81526001600160a01b038f166004820152905130916370a08231916024808301926020929190829003018186803b15801561111657600080fd5b505afa15801561112a573d6000803e3d6000fd5b505050506040513d602081101561114057600080fd5b50516040805195865260208601949094528484019290925260608401526080830152519081900360a00190a450600195945050505050565b6000806040518060800160405280605b8152602001611528605b91396040516020018082805190602001908083835b602083106111c65780518252601f1990920191602091820191016111a7565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835280855282519282019290922082526001600160a01b039b909b169a81019a909a5250880196909652505050606084019190915260808301525060a0902090565b6000610bff82600154611429565b60008111801561125757506001600160a01b03821615155b6112925760405162461bcd60e51b81526004018080602001828103825260238152602001806114816023913960400191505060405180910390fd5b600061129d83610a73565b60405190915083906001600160a01b0382169084156108fc029085906000818181858888f193505050501580156112d8573d6000803e3d6000fd5b506006546112ec908463ffffffff61144b16565b6006556002546001600160a01b0380861691167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f6858561132b89610a73565b60408051938452602084019290925282820152519081900360600190a350505050565b6001600160a01b0382163014156113a2576040805162461bcd60e51b8152602060048201526013602482015272063616e27742073656e6420746f204d5243323606c1b604482015290519081900360640190fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156113d8573d6000803e3d6000fd5b50816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60405161190160f01b8152600281019190915260228101919091526042902090565b600082820183811015610c7d57600080fdfe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294368696c6420746f6b656e3a206e6577206368696c64206164647265737320697320746865207a65726f2061646472657373546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a7231582091f7e4735e67d86529beed9cb4c19fb24880cdcddb5e21c26589b5602ba0926d64736f6c63430005110032", + }, + }, + }, + }, + } + + BttcMainnetChainConfig = &ChainConfig{ + ChainID: big.NewInt(199), + 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(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + Bor: &BorConfig{ + Period: 2, + ProducerDelay: 6, + Sprint: 64, + BackupMultiplier: 2, + ValidatorContract: "0x0000000000000000000000000000000000001000", + StateReceiverContract: "0x0000000000000000000000000000000000001001", + BlockAlloc: map[string]interface{}{ + // write as interface since that is how it is decoded in genesis + "841500": map[string]interface{}{ + "0000000000000000000000000000000000001010": map[string]interface{}{ + "balance": "0x0", + "code": "0x6080604052600436106101c25760003560e01c80638da5cb5b116100f7578063b789543c11610095578063e614d0d611610064578063e614d0d614610720578063ed9ef52414610735578063f2fde38b14610768578063fc0c546a1461079b576101c2565b8063b789543c14610624578063cc79f97b14610669578063cf2c52cb1461067e578063e306f7791461070b576101c2565b806395d89b41116100d157806395d89b41146105a4578063a9059cbb146105b9578063abceeba2146105e5578063acd06cb3146105fa576101c2565b80638da5cb5b146105515780638f32d59b146105665780639025e64c1461058f576101c2565b806342fc47fb1161016457806370a082311161013e57806370a082311461043a578063715018a61461046d578063771282f61461048257806377d32e9414610497576101c2565b806342fc47fb146103d5578063485cc955146103ea57806360f96a8f14610425576101c2565b806319d27d9c116101a057806319d27d9c146102ad578063205c2878146103615780632e1a7d4d1461038d578063313ce567146103aa576101c2565b806306fdde03146101c75780631499c5921461025157806318160ddd14610286575b600080fd5b3480156101d357600080fd5b506101dc6107b0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b506102846004803603602081101561027457600080fd5b50356001600160a01b03166107da565b005b34801561029257600080fd5b5061029b61081a565b60408051918252519081900360200190f35b3480156102b957600080fd5b50610345600480360360a08110156102d057600080fd5b8101906020810181356401000000008111156102eb57600080fd5b8201836020820111156102fd57600080fd5b8035906020019184600183028401116401000000008311171561031f57600080fd5b9193509150803590602081013590604081013590606001356001600160a01b031661082d565b604080516001600160a01b039092168252519081900360200190f35b6102846004803603604081101561037757600080fd5b506001600160a01b03813516906020013561086f565b610284600480360360208110156103a357600080fd5b50356109ca565b3480156103b657600080fd5b506103bf6109d7565b6040805160ff9092168252519081900360200190f35b3480156103e157600080fd5b506103456109dc565b3480156103f657600080fd5b506102846004803603604081101561040d57600080fd5b506001600160a01b03813581169160200135166109eb565b34801561043157600080fd5b50610345610a64565b34801561044657600080fd5b5061029b6004803603602081101561045d57600080fd5b50356001600160a01b0316610a73565b34801561047957600080fd5b50610284610a80565b34801561048e57600080fd5b5061029b610adb565b3480156104a357600080fd5b50610345600480360360408110156104ba57600080fd5b813591908101906040810160208201356401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184600183028401116401000000008311171561051057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ae1945050505050565b34801561055d57600080fd5b50610345610c05565b34801561057257600080fd5b5061057b610c14565b604080519115158252519081900360200190f35b34801561059b57600080fd5b506101dc610c25565b3480156105b057600080fd5b506101dc610c44565b61057b600480360360408110156105cf57600080fd5b506001600160a01b038135169060200135610c61565b3480156105f157600080fd5b5061029b610c84565b34801561060657600080fd5b5061057b6004803603602081101561061d57600080fd5b5035610d0d565b34801561063057600080fd5b5061029b6004803603608081101561064757600080fd5b506001600160a01b038135169060208101359060408101359060600135610d22565b34801561067557600080fd5b5061029b610d41565b34801561068a57600080fd5b50610284600480360360408110156106a157600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156106cc57600080fd5b8201836020820111156106de57600080fd5b8035906020019184600183028401116401000000008311171561070057600080fd5b509092509050610d46565b34801561071757600080fd5b5061029b610d7d565b34801561072c57600080fd5b5061029b610d83565b34801561074157600080fd5b506102846004803603602081101561075857600080fd5b50356001600160a01b0316610dcd565b34801561077457600080fd5b506102846004803603602081101561078b57600080fd5b50356001600160a01b0316610e7f565b3480156107a757600080fd5b50610345610e99565b60408051808201909152601081526f2134ba2a37b93932b73a102a37b5b2b760811b602082015290565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b604482015290519081900360640190fd5b6e01ed09bead87c0378d8e640000000090565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b6044820152905160009181900360640190fd5b33600061087b82610a73565b600654909150610891908463ffffffff610ea816565b60065582158015906108a257508234145b6108e9576040805162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6002546001600160a01b0380841691167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f858461092587610a73565b60408051938452602084019290925282820152519081900360600190a36040805184815290516000916001600160a01b038716917f67b714876402c93362735688659e2283b4a37fb21bab24bc759ca759ae851fd89181900360200190a36040805184815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350505050565b6109d4338261086f565b50565b601290565b6003546001600160a01b031681565b60075460ff1615610a2d5760405162461bcd60e51b815260040180806020018281038252602381526020018061145e6023913960400191505060405180910390fd5b6007805460ff19166001179055600280546001600160a01b0383166001600160a01b0319909116179055610a6082610ebd565b5050565b6004546001600160a01b031681565b6001600160a01b03163190565b610a88610c14565b610a9157600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065481565b6000806000808451604114610afc5760009350505050610bff565b50505060208201516040830151604184015160ff16601b811015610b1e57601b015b8060ff16601b14158015610b3657508060ff16601c14155b15610b475760009350505050610bff565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015610b9e573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b038416610bfb576040805162461bcd60e51b815260206004820152601260248201527122b93937b91034b71032b1b932b1b7bb32b960711b604482015290519081900360640190fd5b5050505b92915050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6040518060400160405280600381526020016231393960e81b81525081565b60408051808201909152600381526210951560ea1b602082015290565b6000813414610c7257506000610bff565b610c7d338484610f2b565b9392505050565b6040518060800160405280605b8152602001611528605b91396040516020018082805190602001908083835b60208310610ccf5780518252601f199092019160209182019101610cb0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020526000908152604090205460ff1681565b6000610d38610d3386868686611178565b611231565b95945050505050565b60c781565b610d4e610c14565b610d5757600080fd5b600082826020811015610d6957600080fd5b50359050610d77848261123f565b50505050565b60015481565b6040518060800160405280605281526020016114a46052913960405160200180828051906020019080838360208310610ccf5780518252601f199092019160209182019101610cb0565b610dd5610c14565b610dde57600080fd5b6001600160a01b038116610e235760405162461bcd60e51b81526004018080602001828103825260328152602001806114f66032913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f1f9f3556dd336016cdf20adaead7d5c73665dba664b60e8c17e9a4eb91ce1d3990600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b610e87610c14565b610e9057600080fd5b6109d481610ebd565b6002546001600160a01b031681565b600082821115610eb757600080fd5b50900390565b6001600160a01b038116610ed057600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516370a0823160e01b81526001600160a01b03851660048201529051600091829130916370a08231916024808301926020929190829003018186803b158015610f7657600080fd5b505afa158015610f8a573d6000803e3d6000fd5b505050506040513d6020811015610fa057600080fd5b5051604080516370a0823160e01b81526001600160a01b0387166004820152905191925060009130916370a08231916024808301926020929190829003018186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d602081101561101857600080fd5b5051905061102786868661134e565b600254604080516370a0823160e01b81526001600160a01b03898116600483018190529251818a1694909116917fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c49189918891889130916370a0823191602480820192602092909190829003018186803b1580156110a457600080fd5b505afa1580156110b8573d6000803e3d6000fd5b505050506040513d60208110156110ce57600080fd5b5051604080516370a0823160e01b81526001600160a01b038f166004820152905130916370a08231916024808301926020929190829003018186803b15801561111657600080fd5b505afa15801561112a573d6000803e3d6000fd5b505050506040513d602081101561114057600080fd5b50516040805195865260208601949094528484019290925260608401526080830152519081900360a00190a450600195945050505050565b6000806040518060800160405280605b8152602001611528605b91396040516020018082805190602001908083835b602083106111c65780518252601f1990920191602091820191016111a7565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835280855282519282019290922082526001600160a01b039b909b169a81019a909a5250880196909652505050606084019190915260808301525060a0902090565b6000610bff82600154611429565b60008111801561125757506001600160a01b03821615155b6112925760405162461bcd60e51b81526004018080602001828103825260238152602001806114816023913960400191505060405180910390fd5b600061129d83610a73565b60405190915083906001600160a01b0382169084156108fc029085906000818181858888f193505050501580156112d8573d6000803e3d6000fd5b506006546112ec908463ffffffff61144b16565b6006556002546001600160a01b0380861691167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f6858561132b89610a73565b60408051938452602084019290925282820152519081900360600190a350505050565b6001600160a01b0382163014156113a2576040805162461bcd60e51b8152602060048201526013602482015272063616e27742073656e6420746f204d5243323606c1b604482015290519081900360640190fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156113d8573d6000803e3d6000fd5b50816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60405161190160f01b8152600281019190915260228101919091526042902090565b600082820183811015610c7d57600080fdfe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294368696c6420746f6b656e3a206e6577206368696c64206164647265737320697320746865207a65726f2061646472657373546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a7231582091f7e4735e67d86529beed9cb4c19fb24880cdcddb5e21c26589b5602ba0926d64736f6c63430005110032", + }, + }, + }, + }, + } // AllEthashProtocolChanges contains every protocol change (EIPs) introduced // and accepted by the Ethereum core developers into the Ethash consensus. //