aboutsummaryrefslogtreecommitdiffstats
path: root/mobile
diff options
context:
space:
mode:
Diffstat (limited to 'mobile')
-rw-r--r--mobile/geth.go50
-rw-r--r--mobile/params.go8
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 = &params.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 := &eth.Config{
- ChainConfig: &params.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.