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 | |
parent | 11e7a712f469fb24ddb88ecebcefab6ed8880eb8 (diff) | |
parent | 37dd9086ec491900311fc39837f4a62ef5fd3a4a (diff) | |
download | dexon-8771c3061f340451d0966adcc547338a25f2231f.tar dexon-8771c3061f340451d0966adcc547338a25f2231f.tar.gz dexon-8771c3061f340451d0966adcc547338a25f2231f.tar.bz2 dexon-8771c3061f340451d0966adcc547338a25f2231f.tar.lz dexon-8771c3061f340451d0966adcc547338a25f2231f.tar.xz dexon-8771c3061f340451d0966adcc547338a25f2231f.tar.zst dexon-8771c3061f340451d0966adcc547338a25f2231f.zip |
Merge pull request #3794 from fjl/core-genesis-refactor
core: refactor genesis handling
Diffstat (limited to 'mobile')
-rw-r--r-- | mobile/geth.go | 50 | ||||
-rw-r--r-- | mobile/params.go | 8 |
2 files changed, 46 insertions, 12 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, diff --git a/mobile/params.go b/mobile/params.go index 87747c7b0..6ca0c1b3a 100644 --- a/mobile/params.go +++ b/mobile/params.go @@ -19,6 +19,8 @@ package geth import ( + "encoding/json" + "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/p2p/discv5" "github.com/ethereum/go-ethereum/params" @@ -60,7 +62,11 @@ func TestnetChainConfig() *ChainConfig { // TestnetGenesis returns the JSON spec to use for the Ethereum test network. func TestnetGenesis() string { - return core.DefaultTestnetGenesisBlock() + enc, err := json.Marshal(core.DefaultTestnetGenesisBlock()) + if err != nil { + panic(err) + } + return string(enc) } // ChainConfig is the core config which determines the blockchain settings. |