core: implemented new ropsten testnet
This commit is contained in:
parent
aad4890082
commit
a8ca75738a
@ -191,14 +191,15 @@ func testDAOForkBlockNewChain(t *testing.T, testnet bool, genesis string, votes
|
|||||||
|
|
||||||
genesisHash := common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3")
|
genesisHash := common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3")
|
||||||
if testnet {
|
if testnet {
|
||||||
genesisHash = common.HexToHash("0x0cd786a2425d16f152c658316c423e6ce1181e15c3295826d7c9904cba9ce303")
|
genesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d")
|
||||||
}
|
}
|
||||||
if genesis != "" {
|
if genesis != "" {
|
||||||
genesisHash = daoGenesisHash
|
genesisHash = daoGenesisHash
|
||||||
}
|
}
|
||||||
config, err := core.GetChainConfig(db, genesisHash)
|
config, err := core.GetChainConfig(db, genesisHash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to retrieve chain config: %v", err)
|
t.Errorf("failed to retrieve chain config: %v", err)
|
||||||
|
return // we want to return here, the other checks can't make it past this point (nil panic).
|
||||||
}
|
}
|
||||||
// Validate the DAO hard-fork block number against the expected value
|
// Validate the DAO hard-fork block number against the expected value
|
||||||
if config.DAOForkBlock == nil {
|
if config.DAOForkBlock == nil {
|
||||||
|
@ -750,9 +750,9 @@ func RegisterEthService(ctx *cli.Context, stack *node.Node, extra []byte) {
|
|||||||
|
|
||||||
case ctx.GlobalBool(TestNetFlag.Name):
|
case ctx.GlobalBool(TestNetFlag.Name):
|
||||||
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
||||||
ethConf.NetworkId = 2
|
ethConf.NetworkId = 3
|
||||||
}
|
}
|
||||||
ethConf.Genesis = core.TestNetGenesisBlock()
|
ethConf.Genesis = core.DefaultTestnetGenesisBlock()
|
||||||
|
|
||||||
case ctx.GlobalBool(DevModeFlag.Name):
|
case ctx.GlobalBool(DevModeFlag.Name):
|
||||||
ethConf.Genesis = core.OlympicGenesisBlock()
|
ethConf.Genesis = core.OlympicGenesisBlock()
|
||||||
@ -845,34 +845,20 @@ func MakeChainConfigFromDb(ctx *cli.Context, db ethdb.Database) *params.ChainCon
|
|||||||
(genesis.Hash() == params.TestNetGenesisHash && ctx.GlobalBool(TestNetFlag.Name))
|
(genesis.Hash() == params.TestNetGenesisHash && ctx.GlobalBool(TestNetFlag.Name))
|
||||||
|
|
||||||
if defaults {
|
if defaults {
|
||||||
// Homestead fork
|
|
||||||
if ctx.GlobalBool(TestNetFlag.Name) {
|
if ctx.GlobalBool(TestNetFlag.Name) {
|
||||||
config.HomesteadBlock = params.TestNetHomesteadBlock
|
config = params.TestnetChainConfig
|
||||||
} else {
|
} else {
|
||||||
|
// Homestead fork
|
||||||
config.HomesteadBlock = params.MainNetHomesteadBlock
|
config.HomesteadBlock = params.MainNetHomesteadBlock
|
||||||
}
|
// DAO fork
|
||||||
// DAO fork
|
|
||||||
if ctx.GlobalBool(TestNetFlag.Name) {
|
|
||||||
config.DAOForkBlock = params.TestNetDAOForkBlock
|
|
||||||
} else {
|
|
||||||
config.DAOForkBlock = params.MainNetDAOForkBlock
|
config.DAOForkBlock = params.MainNetDAOForkBlock
|
||||||
}
|
config.DAOForkSupport = true
|
||||||
config.DAOForkSupport = true
|
|
||||||
|
|
||||||
// DoS reprice fork
|
// DoS reprice fork
|
||||||
if ctx.GlobalBool(TestNetFlag.Name) {
|
|
||||||
config.EIP150Block = params.TestNetHomesteadGasRepriceBlock
|
|
||||||
config.EIP150Hash = params.TestNetHomesteadGasRepriceHash
|
|
||||||
} else {
|
|
||||||
config.EIP150Block = params.MainNetHomesteadGasRepriceBlock
|
config.EIP150Block = params.MainNetHomesteadGasRepriceBlock
|
||||||
config.EIP150Hash = params.MainNetHomesteadGasRepriceHash
|
config.EIP150Hash = params.MainNetHomesteadGasRepriceHash
|
||||||
}
|
|
||||||
// DoS state cleanup fork
|
// DoS state cleanup fork
|
||||||
if ctx.GlobalBool(TestNetFlag.Name) {
|
|
||||||
config.EIP155Block = params.TestNetSpuriousDragon
|
|
||||||
config.EIP158Block = params.TestNetSpuriousDragon
|
|
||||||
config.ChainId = params.TestNetChainID
|
|
||||||
} else {
|
|
||||||
config.EIP155Block = params.MainNetSpuriousDragon
|
config.EIP155Block = params.MainNetSpuriousDragon
|
||||||
config.EIP158Block = params.MainNetSpuriousDragon
|
config.EIP158Block = params.MainNetSpuriousDragon
|
||||||
config.ChainId = params.MainNetChainID
|
config.ChainId = params.MainNetChainID
|
||||||
|
File diff suppressed because one or more lines are too long
@ -17,6 +17,7 @@
|
|||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"compress/bzip2"
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
@ -43,7 +44,7 @@ func WriteGenesisBlock(chainDb ethdb.Database, reader io.Reader) (*types.Block,
|
|||||||
}
|
}
|
||||||
|
|
||||||
var genesis struct {
|
var genesis struct {
|
||||||
ChainConfig params.ChainConfig `json:"config"`
|
ChainConfig *params.ChainConfig `json:"config"`
|
||||||
Nonce string
|
Nonce string
|
||||||
Timestamp string
|
Timestamp string
|
||||||
ParentHash string
|
ParentHash string
|
||||||
@ -115,7 +116,7 @@ func WriteGenesisBlock(chainDb ethdb.Database, reader io.Reader) (*types.Block,
|
|||||||
if err := WriteHeadBlockHash(chainDb, block.Hash()); err != nil {
|
if err := WriteHeadBlockHash(chainDb, block.Hash()); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err := WriteChainConfig(chainDb, block.Hash(), &genesis.ChainConfig); err != nil {
|
if err := WriteChainConfig(chainDb, block.Hash(), genesis.ChainConfig); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +175,7 @@ func WriteDefaultGenesisBlock(chainDb ethdb.Database) (*types.Block, error) {
|
|||||||
// WriteTestNetGenesisBlock assembles the Morden test network genesis block and
|
// WriteTestNetGenesisBlock assembles the Morden test network genesis block and
|
||||||
// writes it - along with all associated state - into a chain database.
|
// writes it - along with all associated state - into a chain database.
|
||||||
func WriteTestNetGenesisBlock(chainDb ethdb.Database) (*types.Block, error) {
|
func WriteTestNetGenesisBlock(chainDb ethdb.Database) (*types.Block, error) {
|
||||||
return WriteGenesisBlock(chainDb, strings.NewReader(TestNetGenesisBlock()))
|
return WriteGenesisBlock(chainDb, strings.NewReader(DefaultTestnetGenesisBlock()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteOlympicGenesisBlock assembles the Olympic genesis block and writes it
|
// WriteOlympicGenesisBlock assembles the Olympic genesis block and writes it
|
||||||
@ -197,6 +198,15 @@ func DefaultGenesisBlock() string {
|
|||||||
return string(blob)
|
return string(blob)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DefaultTestnetGenesisBlock() string {
|
||||||
|
reader := bzip2.NewReader(base64.NewDecoder(base64.StdEncoding, strings.NewReader(defaultTestnetGenesisBlock)))
|
||||||
|
blob, err := ioutil.ReadAll(reader)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("failed to load default genesis: %v", err))
|
||||||
|
}
|
||||||
|
return string(blob)
|
||||||
|
}
|
||||||
|
|
||||||
// OlympicGenesisBlock assembles a JSON string representing the Olympic genesis
|
// OlympicGenesisBlock assembles a JSON string representing the Olympic genesis
|
||||||
// block.
|
// block.
|
||||||
func OlympicGenesisBlock() string {
|
func OlympicGenesisBlock() string {
|
||||||
@ -220,25 +230,3 @@ func OlympicGenesisBlock() string {
|
|||||||
}
|
}
|
||||||
}`, types.EncodeNonce(42), params.GenesisGasLimit.Bytes(), params.GenesisDifficulty.Bytes())
|
}`, types.EncodeNonce(42), params.GenesisGasLimit.Bytes(), params.GenesisDifficulty.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestNetGenesisBlock assembles a JSON string representing the Morden test net
|
|
||||||
// genenis block.
|
|
||||||
func TestNetGenesisBlock() string {
|
|
||||||
return fmt.Sprintf(`{
|
|
||||||
"nonce": "0x%x",
|
|
||||||
"difficulty": "0x20000",
|
|
||||||
"mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
|
|
||||||
"coinbase": "0x0000000000000000000000000000000000000000",
|
|
||||||
"timestamp": "0x00",
|
|
||||||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
||||||
"extraData": "0x",
|
|
||||||
"gasLimit": "0x2FEFD8",
|
|
||||||
"alloc": {
|
|
||||||
"0000000000000000000000000000000000000001": { "balance": "1" },
|
|
||||||
"0000000000000000000000000000000000000002": { "balance": "1" },
|
|
||||||
"0000000000000000000000000000000000000003": { "balance": "1" },
|
|
||||||
"0000000000000000000000000000000000000004": { "balance": "1" },
|
|
||||||
"102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376" }
|
|
||||||
}
|
|
||||||
}`, types.EncodeNonce(0x6d6f7264656e))
|
|
||||||
}
|
|
||||||
|
@ -235,7 +235,6 @@ func (self *LightState) newStateObject(addr common.Address) *StateObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stateObject := NewStateObject(addr, self.odr)
|
stateObject := NewStateObject(addr, self.odr)
|
||||||
stateObject.SetNonce(0)
|
|
||||||
self.stateObjects[addr.Str()] = stateObject
|
self.stateObjects[addr.Str()] = stateObject
|
||||||
|
|
||||||
return stateObject
|
return stateObject
|
||||||
|
@ -60,7 +60,7 @@ func TestnetChainConfig() *ChainConfig {
|
|||||||
|
|
||||||
// TestnetGenesis returns the JSON spec to use for the Ethereum test network.
|
// TestnetGenesis returns the JSON spec to use for the Ethereum test network.
|
||||||
func TestnetGenesis() string {
|
func TestnetGenesis() string {
|
||||||
return core.TestNetGenesisBlock()
|
return core.DefaultTestnetGenesisBlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChainConfig is the core config which determines the blockchain settings.
|
// ChainConfig is the core config which determines the blockchain settings.
|
||||||
|
@ -36,14 +36,14 @@ var MainnetChainConfig = &ChainConfig{
|
|||||||
|
|
||||||
// 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.
|
||||||
var TestnetChainConfig = &ChainConfig{
|
var TestnetChainConfig = &ChainConfig{
|
||||||
ChainId: TestNetChainID,
|
ChainId: big.NewInt(3),
|
||||||
HomesteadBlock: TestNetHomesteadBlock,
|
HomesteadBlock: big.NewInt(0),
|
||||||
DAOForkBlock: TestNetDAOForkBlock,
|
DAOForkBlock: nil,
|
||||||
DAOForkSupport: false,
|
DAOForkSupport: true,
|
||||||
EIP150Block: TestNetHomesteadGasRepriceBlock,
|
EIP150Block: big.NewInt(0),
|
||||||
EIP150Hash: TestNetHomesteadGasRepriceHash,
|
EIP150Hash: common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d"),
|
||||||
EIP155Block: TestNetSpuriousDragon,
|
EIP155Block: big.NewInt(10),
|
||||||
EIP158Block: TestNetSpuriousDragon,
|
EIP158Block: big.NewInt(10),
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChainConfig is the core config which determines the blockchain settings.
|
// ChainConfig is the core config which determines the blockchain settings.
|
||||||
|
@ -23,21 +23,21 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
TestNetGenesisHash = common.HexToHash("0x0cd786a2425d16f152c658316c423e6ce1181e15c3295826d7c9904cba9ce303") // Testnet genesis hash to enforce below configs on
|
TestNetGenesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d") // Testnet genesis hash to enforce below configs on
|
||||||
MainNetGenesisHash = common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3") // Mainnet genesis hash to enforce below configs on
|
MainNetGenesisHash = common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3") // Mainnet genesis hash to enforce below configs on
|
||||||
|
|
||||||
TestNetHomesteadBlock = big.NewInt(494000) // Testnet homestead block
|
TestNetHomesteadBlock = big.NewInt(0) // Testnet homestead block
|
||||||
MainNetHomesteadBlock = big.NewInt(1150000) // Mainnet homestead block
|
MainNetHomesteadBlock = big.NewInt(1150000) // Mainnet homestead block
|
||||||
|
|
||||||
TestNetHomesteadGasRepriceBlock = big.NewInt(1783000) // Testnet gas reprice block
|
TestNetHomesteadGasRepriceBlock = big.NewInt(0) // Testnet gas reprice block
|
||||||
MainNetHomesteadGasRepriceBlock = big.NewInt(2463000) // Mainnet gas reprice block
|
MainNetHomesteadGasRepriceBlock = big.NewInt(2463000) // Mainnet gas reprice block
|
||||||
|
|
||||||
TestNetHomesteadGasRepriceHash = common.HexToHash("0xf376243aeff1f256d970714c3de9fd78fa4e63cf63e32a51fe1169e375d98145") // Testnet gas reprice block hash (used by fast sync)
|
TestNetHomesteadGasRepriceHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d") // Testnet gas reprice block hash (used by fast sync)
|
||||||
MainNetHomesteadGasRepriceHash = common.HexToHash("0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0") // Mainnet gas reprice block hash (used by fast sync)
|
MainNetHomesteadGasRepriceHash = common.HexToHash("0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0") // Mainnet gas reprice block hash (used by fast sync)
|
||||||
|
|
||||||
TestNetSpuriousDragon = big.NewInt(1885000)
|
TestNetSpuriousDragon = big.NewInt(10)
|
||||||
MainNetSpuriousDragon = big.NewInt(2675000)
|
MainNetSpuriousDragon = big.NewInt(2675000)
|
||||||
|
|
||||||
TestNetChainID = big.NewInt(2) // Test net default chain ID
|
TestNetChainID = big.NewInt(3) // Test net default chain ID
|
||||||
MainNetChainID = big.NewInt(1) // main net default chain ID
|
MainNetChainID = big.NewInt(1) // main net default chain ID
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user