diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-03-23 23:36:38 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-23 23:36:38 +0800 |
commit | 8771c3061f340451d0966adcc547338a25f2231f (patch) | |
tree | c566cab81cf95a39f85fbe2c98a932af9495eb68 /mobile/geth.go | |
parent | 11e7a712f469fb24ddb88ecebcefab6ed8880eb8 (diff) | |
parent | 37dd9086ec491900311fc39837f4a62ef5fd3a4a (diff) | |
download | go-tangerine-8771c3061f340451d0966adcc547338a25f2231f.tar go-tangerine-8771c3061f340451d0966adcc547338a25f2231f.tar.gz go-tangerine-8771c3061f340451d0966adcc547338a25f2231f.tar.bz2 go-tangerine-8771c3061f340451d0966adcc547338a25f2231f.tar.lz go-tangerine-8771c3061f340451d0966adcc547338a25f2231f.tar.xz go-tangerine-8771c3061f340451d0966adcc547338a25f2231f.tar.zst go-tangerine-8771c3061f340451d0966adcc547338a25f2231f.zip |
Merge pull request #3794 from fjl/core-genesis-refactor
core: refactor genesis handling
Diffstat (limited to 'mobile/geth.go')
-rw-r--r-- | mobile/geth.go | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/mobile/geth.go b/mobile/geth.go index 62791652d..e070cec56 100644 --- a/mobile/geth.go +++ b/mobile/geth.go @@ -20,10 +20,12 @@ package geth import ( + "encoding/json" "fmt" "math/big" "path/filepath" + "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/ethstats" @@ -92,6 +94,18 @@ func NewNodeConfig() *NodeConfig { return &config } +// SetMainnet sets up the node for use on the Ethereum mainnet. +func (cfg *NodeConfig) SetMainnet() { + cfg.EthereumGenesis = "" + cfg.EthereumChainConfig = MainnetChainConfig() +} + +// SetTestnet sets up the node for use on the Ethereum testnet. +func (cfg *NodeConfig) SetTestnet() { + cfg.EthereumGenesis = TestnetGenesis() + cfg.EthereumChainConfig = TestnetChainConfig() +} + // Node represents a Geth Ethereum node instance. type Node struct { node *node.Node @@ -127,20 +141,34 @@ func NewNode(datadir string, config *NodeConfig) (stack *Node, _ error) { if err != nil { return nil, err } + + var genesis *core.Genesis + if config.EthereumGenesis != "" { + genesis = new(core.Genesis) + if err := json.Unmarshal([]byte(config.EthereumGenesis), genesis); err != nil { + return nil, fmt.Errorf("invalid EthereumGenesis: %v", err) + } + } + if config.EthereumChainConfig != nil { + if genesis == nil { + genesis = core.DefaultGenesisBlock() + } + genesis.Config = ¶ms.ChainConfig{ + ChainId: big.NewInt(config.EthereumChainConfig.ChainID), + HomesteadBlock: big.NewInt(config.EthereumChainConfig.HomesteadBlock), + DAOForkBlock: big.NewInt(config.EthereumChainConfig.DAOForkBlock), + DAOForkSupport: config.EthereumChainConfig.DAOForkSupport, + EIP150Block: big.NewInt(config.EthereumChainConfig.EIP150Block), + EIP150Hash: config.EthereumChainConfig.EIP150Hash.hash, + EIP155Block: big.NewInt(config.EthereumChainConfig.EIP155Block), + EIP158Block: big.NewInt(config.EthereumChainConfig.EIP158Block), + } + } + // Register the Ethereum protocol if requested if config.EthereumEnabled { ethConf := ð.Config{ - ChainConfig: ¶ms.ChainConfig{ - ChainId: big.NewInt(config.EthereumChainConfig.ChainID), - HomesteadBlock: big.NewInt(config.EthereumChainConfig.HomesteadBlock), - DAOForkBlock: big.NewInt(config.EthereumChainConfig.DAOForkBlock), - DAOForkSupport: config.EthereumChainConfig.DAOForkSupport, - EIP150Block: big.NewInt(config.EthereumChainConfig.EIP150Block), - EIP150Hash: config.EthereumChainConfig.EIP150Hash.hash, - EIP155Block: big.NewInt(config.EthereumChainConfig.EIP155Block), - EIP158Block: big.NewInt(config.EthereumChainConfig.EIP158Block), - }, - Genesis: config.EthereumGenesis, + Genesis: genesis, LightMode: true, DatabaseCache: config.EthereumDatabaseCache, NetworkId: config.EthereumNetworkID, |