diff options
-rw-r--r-- | cmd/geth/js.go | 19 | ||||
-rw-r--r-- | cmd/geth/main.go | 4 | ||||
-rw-r--r-- | cmd/utils/cmd.go | 17 | ||||
-rw-r--r-- | cmd/utils/flags.go | 12 | ||||
-rw-r--r-- | eth/backend.go | 9 |
5 files changed, 59 insertions, 2 deletions
diff --git a/cmd/geth/js.go b/cmd/geth/js.go index b856e837b..bf56423ec 100644 --- a/cmd/geth/js.go +++ b/cmd/geth/js.go @@ -23,6 +23,7 @@ import ( "os" "os/signal" "path/filepath" + "regexp" "strings" "sort" @@ -44,6 +45,10 @@ import ( "github.com/robertkrimen/otto" ) +var passwordRegexp = regexp.MustCompile("personal.[nu]") + +const passwordRepl = "" + type prompter interface { AppendHistory(string) Prompt(p string) (string, error) @@ -413,8 +418,10 @@ func (self *jsre) interactive() { str += input + "\n" self.setIndent() if indentCount <= 0 { - hist := str[:len(str)-1] - self.AppendHistory(hist) + hist := hidepassword(str[:len(str)-1]) + if len(hist) > 0 { + self.AppendHistory(hist) + } self.parseInput(str) str = "" } @@ -422,6 +429,14 @@ func (self *jsre) interactive() { } } +func hidepassword(input string) string { + if passwordRegexp.MatchString(input) { + return passwordRepl + } else { + return input + } +} + func (self *jsre) withHistory(op func(*os.File)) { datadir := common.DefaultDataDir() if self.ethereum != nil { diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 9dc37f3a8..00dd8f753 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -281,6 +281,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, @@ -347,6 +348,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) |