aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Wilcke <geffobscura@gmail.com>2015-08-03 23:48:24 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2015-08-04 00:15:48 +0800
commitdcdb7059cc69ee4e77518b8dd92d5c7037aa3c8d (patch)
tree6c3e0c5b59ce2ec6515b4ce96d84421b9b635d94
parente7f4232b10034d291d1757b96e6277908618223c (diff)
downloaddexon-dcdb7059cc69ee4e77518b8dd92d5c7037aa3c8d.tar.gz
dexon-dcdb7059cc69ee4e77518b8dd92d5c7037aa3c8d.tar.zst
dexon-dcdb7059cc69ee4e77518b8dd92d5c7037aa3c8d.zip
cmd, core, eth: support for the olympic network
Added a --olympic flag which initialiser the olympic protocol settings
-rw-r--r--cmd/geth/main.go4
-rw-r--r--cmd/utils/cmd.go17
-rw-r--r--cmd/utils/flags.go12
-rw-r--r--eth/backend.go9
4 files changed, 42 insertions, 0 deletions
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index 68a2c79e2..511e0df9d 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -280,6 +280,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
utils.BootnodesFlag,
utils.DataDirFlag,
utils.BlockchainVersionFlag,
+ utils.OlympicFlag,
utils.CacheFlag,
utils.JSpathFlag,
utils.ListenPortFlag,
@@ -346,6 +347,9 @@ func main() {
func run(ctx *cli.Context) {
utils.CheckLegalese(ctx.GlobalString(utils.DataDirFlag.Name))
+ if ctx.GlobalBool(utils.OlympicFlag.Name) {
+ utils.InitOlympic()
+ }
cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
ethereum, err := eth.New(cfg)
diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go
index d9c4b6da5..f8f7f6376 100644
--- a/cmd/utils/cmd.go
+++ b/cmd/utils/cmd.go
@@ -21,6 +21,7 @@ import (
"bufio"
"fmt"
"io"
+ "math/big"
"os"
"os/signal"
"regexp"
@@ -32,6 +33,7 @@ import (
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
+ "github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rlp"
"github.com/peterh/liner"
)
@@ -143,6 +145,15 @@ func StartEthereum(ethereum *eth.Ethereum) {
}()
}
+func InitOlympic() {
+ params.DurationLimit = big.NewInt(8)
+ params.GenesisGasLimit = big.NewInt(3141592)
+ params.MinGasLimit = big.NewInt(125000)
+ params.MaximumExtraDataSize = big.NewInt(1024)
+ NetworkIdFlag.Value = 0
+ core.BlockReward = big.NewInt(1.5e+18)
+}
+
func FormatTransactionData(data string) []byte {
d := common.StringToByteFunc(data, func(s string) (ret []byte) {
slice := regexp.MustCompile("\\n|\\s").Split(s, 1000000000)
@@ -203,6 +214,11 @@ func ImportChain(chain *core.ChainManager, fn string) error {
} else if err != nil {
return fmt.Errorf("at block %d: %v", n, err)
}
+ // don't import first block
+ if b.NumberU64() == 0 {
+ i--
+ continue
+ }
blocks[i] = &b
n++
}
@@ -218,6 +234,7 @@ func ImportChain(chain *core.ChainManager, fn string) error {
batch, blocks[0].Hash().Bytes()[:4], blocks[i-1].Hash().Bytes()[:4])
continue
}
+
if _, err := chain.InsertChain(blocks[:i]); err != nil {
return fmt.Errorf("invalid block %d: %v", n, err)
}
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index b66fe24cc..d283329f1 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -131,6 +131,10 @@ var (
Usage: "Megabytes of memory allocated to internal caching",
Value: 0,
}
+ OlympicFlag = cli.BoolFlag{
+ Name: "olympic",
+ Usage: "Use olympic style protocol",
+ }
// miner settings
MinerThreadsFlag = cli.IntFlag{
@@ -402,6 +406,7 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name),
MaxPendingPeers: ctx.GlobalInt(MaxPendingPeersFlag.Name),
Port: ctx.GlobalString(ListenPortFlag.Name),
+ Olympic: ctx.GlobalBool(OlympicFlag.Name),
NAT: MakeNAT(ctx),
NatSpec: ctx.GlobalBool(NatspecEnabledFlag.Name),
Discovery: !ctx.GlobalBool(NoDiscoverFlag.Name),
@@ -444,6 +449,13 @@ func MakeChain(ctx *cli.Context) (chain *core.ChainManager, blockDB, stateDB, ex
if extraDB, err = ethdb.NewLDBDatabase(filepath.Join(datadir, "extra"), cache); err != nil {
Fatalf("Could not open database: %v", err)
}
+ if ctx.GlobalBool(OlympicFlag.Name) {
+ InitOlympic()
+ _, err := core.WriteTestNetGenesisBlock(stateDB, blockDB, 42)
+ if err != nil {
+ glog.Fatalln(err)
+ }
+ }
eventMux := new(event.TypeMux)
pow := ethash.New()
diff --git a/eth/backend.go b/eth/backend.go
index bed6231ed..4795000e0 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -78,6 +78,7 @@ type Config struct {
GenesisNonce int
GenesisFile string
GenesisBlock *types.Block // used by block tests
+ Olympic bool
BlockChainVersion int
SkipBcVersionCheck bool // e.g. blockchain export
@@ -302,6 +303,14 @@ func New(config *Config) (*Ethereum, error) {
glog.V(logger.Info).Infof("Successfully wrote genesis block. New genesis hash = %x\n", block.Hash())
}
+ if config.Olympic {
+ _, err := core.WriteTestNetGenesisBlock(stateDb, blockDb, 42)
+ if err != nil {
+ return nil, err
+ }
+ glog.V(logger.Error).Infoln("Starting Olympic network")
+ }
+
// This is for testing only.
if config.GenesisBlock != nil {
core.WriteBlock(blockDb, config.GenesisBlock)