diff --git a/cmd/utils/bootnodes.go b/cmd/utils/bootnodes.go index 23ac6c2faa..1947030fc4 100644 --- a/cmd/utils/bootnodes.go +++ b/cmd/utils/bootnodes.go @@ -46,14 +46,18 @@ var TestnetBootnodes = []*discover.Node{ // MainnetChainConfig is the chain parameters to run a node on the main network. var MainnetChainConfig = &core.ChainConfig{ - HomesteadBlock: params.MainNetHomesteadBlock, - DAOForkBlock: params.MainNetDAOForkBlock, - DAOForkSupport: true, + HomesteadBlock: params.MainNetHomesteadBlock, + DAOForkBlock: params.MainNetDAOForkBlock, + DAOForkSupport: true, + HomesteadGasRepriceBlock: params.MainNetHomesteadGasRepriceBlock, + HomesteadGasRepriceHash: params.MainNetHomesteadGasRepriceHash, } // TestnetChainConfig is the chain parameters to run a node on the test network. var TestnetChainConfig = &core.ChainConfig{ - HomesteadBlock: params.TestNetHomesteadBlock, - DAOForkBlock: params.TestNetDAOForkBlock, - DAOForkSupport: false, + HomesteadBlock: params.TestNetHomesteadBlock, + DAOForkBlock: params.TestNetDAOForkBlock, + DAOForkSupport: false, + HomesteadGasRepriceBlock: params.TestNetHomesteadGasRepriceBlock, + HomesteadGasRepriceHash: params.TestNetHomesteadGasRepriceHash, } diff --git a/mobile/core.go b/mobile/core.go index 72acfbf875..a49a4e6600 100644 --- a/mobile/core.go +++ b/mobile/core.go @@ -23,32 +23,46 @@ import ( "github.com/ethereum/go-ethereum/params" ) -// MainnetChainConfig is the chain configurations for the main Ethereum network. -var MainnetChainConfig = &ChainConfig{ - HomesteadBlock: params.MainNetHomesteadBlock.Int64(), - DAOForkBlock: params.MainNetDAOForkBlock.Int64(), - DAOForkSupport: true, +// MainnetChainConfig returns the chain configurations for the main Ethereum network. +func MainnetChainConfig() *ChainConfig { + return &ChainConfig{ + HomesteadBlock: params.MainNetHomesteadBlock.Int64(), + DAOForkBlock: params.MainNetDAOForkBlock.Int64(), + DAOForkSupport: true, + HomesteadGasRepriceBlock: params.MainNetHomesteadGasRepriceBlock.Int64(), + HomesteadGasRepriceHash: Hash{params.MainNetHomesteadGasRepriceHash}, + } } -// MainnetGenesis is the JSON spec to use for the main Ethereum network. It is -// actually empty since that defaults to the hard coded binary genesis block. -var MainnetGenesis = "" +// MainnetGenesis returns the JSON spec to use for the main Ethereum network. It +// is actually empty since that defaults to the hard coded binary genesis block. +func MainnetGenesis() string { + return "" +} -// TestnetChainConfig is the chain configurations for the Ethereum test network. -var TestnetChainConfig = &ChainConfig{ - HomesteadBlock: params.TestNetHomesteadBlock.Int64(), - DAOForkBlock: 0, - DAOForkSupport: false, +// TestnetChainConfig returns the chain configurations for the Ethereum test network. +func TestnetChainConfig() *ChainConfig { + return &ChainConfig{ + HomesteadBlock: params.TestNetHomesteadBlock.Int64(), + DAOForkBlock: 0, + DAOForkSupport: false, + HomesteadGasRepriceBlock: params.TestNetHomesteadGasRepriceBlock.Int64(), + HomesteadGasRepriceHash: Hash{params.TestNetHomesteadGasRepriceHash}, + } } -// TestnetGenesis is the JSON spec to use for the Ethereum test network. -var TestnetGenesis = core.TestNetGenesisBlock() +// TestnetGenesis returns the JSON spec to use for the Ethereum test network. +func TestnetGenesis() string { + return core.TestNetGenesisBlock() +} // ChainConfig is the core config which determines the blockchain settings. type ChainConfig struct { - HomesteadBlock int64 // Homestead switch block - DAOForkBlock int64 // TheDAO hard-fork switch block - DAOForkSupport bool // Whether the nodes supports or opposes the DAO hard-fork + HomesteadBlock int64 // Homestead switch block + DAOForkBlock int64 // TheDAO hard-fork switch block + DAOForkSupport bool // Whether the nodes supports or opposes the DAO hard-fork + HomesteadGasRepriceBlock int64 // Homestead gas reprice switch block + HomesteadGasRepriceHash Hash // Homestead gas reprice switch block hash } // NewChainConfig creates a new chain configuration that transitions immediately diff --git a/mobile/geth.go b/mobile/geth.go index 969919ba8c..85ac7fec5d 100644 --- a/mobile/geth.go +++ b/mobile/geth.go @@ -24,12 +24,13 @@ import ( "math/big" "path/filepath" - "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/les" + "github.com/ethereum/go-ethereum/light" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p/nat" "github.com/ethereum/go-ethereum/whisper/whisperv2" @@ -107,9 +108,11 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) { } // Create the empty networking stack nodeConf := &node.Config{ + Name: clientIdentifier, DataDir: datadir, KeyStoreDir: filepath.Join(datadir, "keystore"), // Mobile should never use internal keystores! - Name: common.MakeName(clientIdentifier, utils.Version), + NoDiscovery: true, + DiscoveryV5: true, BootstrapNodes: config.BootstrapNodes.nodes, ListenAddr: ":0", NAT: nat.Any(), @@ -123,12 +126,14 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) { if config.EthereumEnabled { ethConf := ð.Config{ ChainConfig: &core.ChainConfig{ - HomesteadBlock: big.NewInt(config.EthereumChainConfig.HomesteadBlock), - DAOForkBlock: big.NewInt(config.EthereumChainConfig.DAOForkBlock), - DAOForkSupport: config.EthereumChainConfig.DAOForkSupport, + HomesteadBlock: big.NewInt(config.EthereumChainConfig.HomesteadBlock), + DAOForkBlock: big.NewInt(config.EthereumChainConfig.DAOForkBlock), + DAOForkSupport: config.EthereumChainConfig.DAOForkSupport, + HomesteadGasRepriceBlock: big.NewInt(config.EthereumChainConfig.HomesteadGasRepriceBlock), + HomesteadGasRepriceHash: config.EthereumChainConfig.HomesteadGasRepriceHash.hash, }, Genesis: config.EthereumGenesis, - FastSync: true, + LightMode: true, DatabaseCache: config.EthereumDatabaseCache, NetworkId: config.EthereumNetworkID, GasPrice: new(big.Int).Mul(big.NewInt(20), common.Shannon), @@ -141,9 +146,10 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) { } if config.EthereumTestnetNonces { state.StartingNonce = 1048576 // (2**20) + light.StartingNonce = 1048576 // (2**20) } if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) { - return eth.New(ctx, ethConf) + return les.New(ctx, ethConf) }); err != nil { return nil, fmt.Errorf("ethereum init: %v", err) }