cmd/utils, mobile: update to reprice HF and light client

This commit is contained in:
Péter Szilágyi 2016-11-09 16:19:19 +02:00
parent 322502b441
commit de4b39a1a3
No known key found for this signature in database
GPG Key ID: 119A76381CCB7DD2
3 changed files with 56 additions and 32 deletions

View File

@ -49,6 +49,8 @@ var MainnetChainConfig = &core.ChainConfig{
HomesteadBlock: params.MainNetHomesteadBlock, HomesteadBlock: params.MainNetHomesteadBlock,
DAOForkBlock: params.MainNetDAOForkBlock, DAOForkBlock: params.MainNetDAOForkBlock,
DAOForkSupport: true, DAOForkSupport: true,
HomesteadGasRepriceBlock: params.MainNetHomesteadGasRepriceBlock,
HomesteadGasRepriceHash: params.MainNetHomesteadGasRepriceHash,
} }
// TestnetChainConfig is the chain parameters to run a node on the test network. // TestnetChainConfig is the chain parameters to run a node on the test network.
@ -56,4 +58,6 @@ var TestnetChainConfig = &core.ChainConfig{
HomesteadBlock: params.TestNetHomesteadBlock, HomesteadBlock: params.TestNetHomesteadBlock,
DAOForkBlock: params.TestNetDAOForkBlock, DAOForkBlock: params.TestNetDAOForkBlock,
DAOForkSupport: false, DAOForkSupport: false,
HomesteadGasRepriceBlock: params.TestNetHomesteadGasRepriceBlock,
HomesteadGasRepriceHash: params.TestNetHomesteadGasRepriceHash,
} }

View File

@ -23,32 +23,46 @@ import (
"github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/params"
) )
// MainnetChainConfig is the chain configurations for the main Ethereum network. // MainnetChainConfig returns the chain configurations for the main Ethereum network.
var MainnetChainConfig = &ChainConfig{ func MainnetChainConfig() *ChainConfig {
return &ChainConfig{
HomesteadBlock: params.MainNetHomesteadBlock.Int64(), HomesteadBlock: params.MainNetHomesteadBlock.Int64(),
DAOForkBlock: params.MainNetDAOForkBlock.Int64(), DAOForkBlock: params.MainNetDAOForkBlock.Int64(),
DAOForkSupport: true, DAOForkSupport: true,
HomesteadGasRepriceBlock: params.MainNetHomesteadGasRepriceBlock.Int64(),
HomesteadGasRepriceHash: Hash{params.MainNetHomesteadGasRepriceHash},
}
} }
// MainnetGenesis is the JSON spec to use for the main Ethereum network. It is // MainnetGenesis returns the JSON spec to use for the main Ethereum network. It
// actually empty since that defaults to the hard coded binary genesis block. // is actually empty since that defaults to the hard coded binary genesis block.
var MainnetGenesis = "" func MainnetGenesis() string {
return ""
}
// TestnetChainConfig is the chain configurations for the Ethereum test network. // TestnetChainConfig returns the chain configurations for the Ethereum test network.
var TestnetChainConfig = &ChainConfig{ func TestnetChainConfig() *ChainConfig {
return &ChainConfig{
HomesteadBlock: params.TestNetHomesteadBlock.Int64(), HomesteadBlock: params.TestNetHomesteadBlock.Int64(),
DAOForkBlock: 0, DAOForkBlock: 0,
DAOForkSupport: false, DAOForkSupport: false,
HomesteadGasRepriceBlock: params.TestNetHomesteadGasRepriceBlock.Int64(),
HomesteadGasRepriceHash: Hash{params.TestNetHomesteadGasRepriceHash},
}
} }
// TestnetGenesis is the JSON spec to use for the Ethereum test network. // TestnetGenesis returns the JSON spec to use for the Ethereum test network.
var TestnetGenesis = core.TestNetGenesisBlock() func TestnetGenesis() string {
return core.TestNetGenesisBlock()
}
// ChainConfig is the core config which determines the blockchain settings. // ChainConfig is the core config which determines the blockchain settings.
type ChainConfig struct { type ChainConfig struct {
HomesteadBlock int64 // Homestead switch block HomesteadBlock int64 // Homestead switch block
DAOForkBlock int64 // TheDAO hard-fork switch block DAOForkBlock int64 // TheDAO hard-fork switch block
DAOForkSupport bool // Whether the nodes supports or opposes the DAO hard-fork 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 // NewChainConfig creates a new chain configuration that transitions immediately

View File

@ -24,12 +24,13 @@ import (
"math/big" "math/big"
"path/filepath" "path/filepath"
"github.com/ethereum/go-ethereum/cmd/utils"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/ethclient" "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/node"
"github.com/ethereum/go-ethereum/p2p/nat" "github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/whisper/whisperv2" "github.com/ethereum/go-ethereum/whisper/whisperv2"
@ -107,9 +108,11 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) {
} }
// Create the empty networking stack // Create the empty networking stack
nodeConf := &node.Config{ nodeConf := &node.Config{
Name: clientIdentifier,
DataDir: datadir, DataDir: datadir,
KeyStoreDir: filepath.Join(datadir, "keystore"), // Mobile should never use internal keystores! 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, BootstrapNodes: config.BootstrapNodes.nodes,
ListenAddr: ":0", ListenAddr: ":0",
NAT: nat.Any(), NAT: nat.Any(),
@ -126,9 +129,11 @@ func NewNode(datadir string, config *NodeConfig) (*Node, error) {
HomesteadBlock: big.NewInt(config.EthereumChainConfig.HomesteadBlock), HomesteadBlock: big.NewInt(config.EthereumChainConfig.HomesteadBlock),
DAOForkBlock: big.NewInt(config.EthereumChainConfig.DAOForkBlock), DAOForkBlock: big.NewInt(config.EthereumChainConfig.DAOForkBlock),
DAOForkSupport: config.EthereumChainConfig.DAOForkSupport, DAOForkSupport: config.EthereumChainConfig.DAOForkSupport,
HomesteadGasRepriceBlock: big.NewInt(config.EthereumChainConfig.HomesteadGasRepriceBlock),
HomesteadGasRepriceHash: config.EthereumChainConfig.HomesteadGasRepriceHash.hash,
}, },
Genesis: config.EthereumGenesis, Genesis: config.EthereumGenesis,
FastSync: true, LightMode: true,
DatabaseCache: config.EthereumDatabaseCache, DatabaseCache: config.EthereumDatabaseCache,
NetworkId: config.EthereumNetworkID, NetworkId: config.EthereumNetworkID,
GasPrice: new(big.Int).Mul(big.NewInt(20), common.Shannon), 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 { if config.EthereumTestnetNonces {
state.StartingNonce = 1048576 // (2**20) state.StartingNonce = 1048576 // (2**20)
light.StartingNonce = 1048576 // (2**20)
} }
if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) { if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) {
return eth.New(ctx, ethConf) return les.New(ctx, ethConf)
}); err != nil { }); err != nil {
return nil, fmt.Errorf("ethereum init: %v", err) return nil, fmt.Errorf("ethereum init: %v", err)
} }