diff options
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. |