aboutsummaryrefslogtreecommitdiffstats
path: root/mobile/geth.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-03-23 23:36:38 +0800
committerGitHub <noreply@github.com>2017-03-23 23:36:38 +0800
commit8771c3061f340451d0966adcc547338a25f2231f (patch)
treec566cab81cf95a39f85fbe2c98a932af9495eb68 /mobile/geth.go
parent11e7a712f469fb24ddb88ecebcefab6ed8880eb8 (diff)
parent37dd9086ec491900311fc39837f4a62ef5fd3a4a (diff)
downloadgo-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.go50
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 = &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,