From ae7c1e3e55610cc28bb4f79ede5660dd89c019c5 Mon Sep 17 00:00:00 2001 From: zelig Date: Sun, 14 Dec 2014 18:26:13 +0000 Subject: adapt to new backend - eth p2p pkgs - new Ethereum initialiser - no caps param - use nat type - add NatType func to map nat type string to p2p.NAT - add pubkey to client identity --- cmd/utils/cmd.go | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'cmd/utils/cmd.go') diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index db7bcd35e..24d5970bd 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -4,23 +4,23 @@ import ( "fmt" "io" "log" + "net" "os" "os/signal" "path" "path/filepath" "regexp" "runtime" - "time" "bitbucket.org/kardianos/osext" - "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/ethutil" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/miner" + "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/rpc" - "github.com/ethereum/go-ethereum/wire" "github.com/ethereum/go-ethereum/xeth" ) @@ -144,17 +144,32 @@ func NewDatabase() ethutil.Database { return db } -func NewClientIdentity(clientIdentifier, version, customIdentifier string) *wire.SimpleClientIdentity { - return wire.NewSimpleClientIdentity(clientIdentifier, version, customIdentifier) +func NewClientIdentity(clientIdentifier, version, customIdentifier string, pubkey string) *p2p.SimpleClientIdentity { + return p2p.NewSimpleClientIdentity(clientIdentifier, version, customIdentifier, pubkey) } -func NewEthereum(db ethutil.Database, clientIdentity wire.ClientIdentity, keyManager *crypto.KeyManager, usePnp bool, OutboundPort string, MaxPeer int) *eth.Ethereum { - ethereum, err := eth.New(db, clientIdentity, keyManager, eth.CapDefault, usePnp) +func NatType(natType string, gateway string) (nat p2p.NAT) { + switch natType { + case "UPNP": + nat = p2p.UPNP() + case "PMP": + ip := net.ParseIP(gateway) + if ip != nil { + clilogger.Fatalf("bad PMP gateway '%s'", gateway) + } + nat = p2p.PMP(ip) + case "": + default: + clilogger.Fatalf("unrecognised NAT type '%s'", natType) + } + return +} + +func NewEthereum(db ethutil.Database, clientIdentity p2p.ClientIdentity, keyManager *crypto.KeyManager, nat p2p.NAT, OutboundPort string, MaxPeer int) *eth.Ethereum { + ethereum, err := eth.New(db, clientIdentity, keyManager, nat, OutboundPort, MaxPeer) if err != nil { clilogger.Fatalln("eth start err:", err) } - ethereum.Port = OutboundPort - ethereum.MaxPeers = MaxPeer return ethereum } @@ -268,11 +283,6 @@ func StartMining(ethereum *eth.Ethereum) bool { if gminer == nil { gminer = miner.New(addr, ethereum) } - // Give it some time to connect with peers - time.Sleep(3 * time.Second) - for !ethereum.IsUpToDate() { - time.Sleep(5 * time.Second) - } gminer.Start() }() RegisterInterrupt(func(os.Signal) { -- cgit v1.2.3 From 61940b2275a8f3c77d906947b2d1126bb6c3b21d Mon Sep 17 00:00:00 2001 From: zelig Date: Sun, 14 Dec 2014 19:55:52 +0000 Subject: adapt cmd/cli to new backend - new flag nat for nat support UPNP|PMP - new flag pmp for PMP gateway IP - add NatType to utils/cmd to get p2p.NAT from nat type string - obsolete usepnp flag - get rid of IsUpToDate and sleep in miner start - ethereum constructor takes nat type, port, maxpeer - add pubkey arg to client identity --- cmd/utils/cmd.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'cmd/utils/cmd.go') diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index 24d5970bd..867ef5e37 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -154,13 +154,22 @@ func NatType(natType string, gateway string) (nat p2p.NAT) { nat = p2p.UPNP() case "PMP": ip := net.ParseIP(gateway) +<<<<<<< HEAD if ip != nil { clilogger.Fatalf("bad PMP gateway '%s'", gateway) +======= + if ip == nil { + clilogger.Fatalln("cannot resolve PMP gateway IP %s", gateway) +>>>>>>> adapt cmd/cli to new backend } nat = p2p.PMP(ip) case "": default: +<<<<<<< HEAD clilogger.Fatalf("unrecognised NAT type '%s'", natType) +======= + clilogger.Fatalln("unrecognised NAT type %s", natType) +>>>>>>> adapt cmd/cli to new backend } return } -- cgit v1.2.3 From 72290f67fee2be183981c9672d830040466187bd Mon Sep 17 00:00:00 2001 From: zelig Date: Sun, 14 Dec 2014 20:57:29 +0000 Subject: resolve merge conflict hell --- cmd/utils/cmd.go | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'cmd/utils/cmd.go') diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index 867ef5e37..3e3ac617a 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -154,22 +154,13 @@ func NatType(natType string, gateway string) (nat p2p.NAT) { nat = p2p.UPNP() case "PMP": ip := net.ParseIP(gateway) -<<<<<<< HEAD - if ip != nil { - clilogger.Fatalf("bad PMP gateway '%s'", gateway) -======= if ip == nil { - clilogger.Fatalln("cannot resolve PMP gateway IP %s", gateway) ->>>>>>> adapt cmd/cli to new backend + clilogger.Fatalf("cannot resolve PMP gateway IP %s", gateway) } nat = p2p.PMP(ip) case "": default: -<<<<<<< HEAD clilogger.Fatalf("unrecognised NAT type '%s'", natType) -======= - clilogger.Fatalln("unrecognised NAT type %s", natType) ->>>>>>> adapt cmd/cli to new backend } return } -- cgit v1.2.3 From 4cd79d8ddd7608d60344b13fe4bda7315429d1d9 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 23 Dec 2014 13:48:44 +0100 Subject: Refactored block & Transaction * Includes new rlp decoder --- cmd/utils/cmd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmd/utils/cmd.go') diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index 3e3ac617a..2b24ac532 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -325,7 +325,7 @@ func BlockDo(ethereum *eth.Ethereum, hash []byte) error { return fmt.Errorf("unknown block %x", hash) } - parent := ethereum.ChainManager().GetBlock(block.PrevHash) + parent := ethereum.ChainManager().GetBlock(block.ParentHash()) _, err := ethereum.BlockManager().TransitionState(parent.State(), parent, block) if err != nil { -- cgit v1.2.3 From 1054c155db8ac59b97b81fa7a7a20f2239eb1e82 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 23 Dec 2014 15:37:03 +0100 Subject: Moved import to utils --- cmd/utils/cmd.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'cmd/utils/cmd.go') diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index 2b24ac532..c0a5d1c97 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -13,6 +13,7 @@ import ( "runtime" "bitbucket.org/kardianos/osext" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/ethdb" @@ -20,6 +21,7 @@ import ( "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/miner" "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/xeth" ) @@ -335,3 +337,25 @@ func BlockDo(ethereum *eth.Ethereum, hash []byte) error { return nil } + +func ImportChain(ethereum *eth.Ethereum, fn string) error { + clilogger.Infof("importing chain '%s'\n", ImportChain) + fh, err := os.OpenFile(fn, os.O_RDONLY, os.ModePerm) + if err != nil { + return err + } + defer fh.Close() + + var chain types.Blocks + if err := rlp.Decode(fh, &chain); err != nil { + return err + } + + ethereum.ChainManager().Reset() + if err := ethereum.ChainManager().InsertChain(chain); err != nil { + return err + } + clilogger.Infof("imported %d blocks\n", len(chain)) + + return nil +} -- cgit v1.2.3 From 780abaec988df302e0c98f1a35e9af35b5623746 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 23 Dec 2014 18:35:36 +0100 Subject: Switched to new trie --- cmd/utils/cmd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmd/utils/cmd.go') diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index c0a5d1c97..466c51383 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -339,7 +339,7 @@ func BlockDo(ethereum *eth.Ethereum, hash []byte) error { } func ImportChain(ethereum *eth.Ethereum, fn string) error { - clilogger.Infof("importing chain '%s'\n", ImportChain) + clilogger.Infof("importing chain '%s'\n", fn) fh, err := os.OpenFile(fn, os.O_RDONLY, os.ModePerm) if err != nil { return err -- cgit v1.2.3