commit
						59a86d3171
					
				| @ -3,6 +3,8 @@ package eth | |||||||
| import ( | import ( | ||||||
| 	"crypto/ecdsa" | 	"crypto/ecdsa" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | 	"io/ioutil" | ||||||
|  | 	"path" | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"github.com/ethereum/go-ethereum/core" | 	"github.com/ethereum/go-ethereum/core" | ||||||
| @ -25,7 +27,10 @@ var ( | |||||||
| 	jsonlogger = ethlogger.NewJsonLogger() | 	jsonlogger = ethlogger.NewJsonLogger() | ||||||
| 
 | 
 | ||||||
| 	defaultBootNodes = []*discover.Node{ | 	defaultBootNodes = []*discover.Node{ | ||||||
|  | 		// ETH/DEV cmd/bootnode
 | ||||||
| 		discover.MustParseNode("enode://6cdd090303f394a1cac34ecc9f7cda18127eafa2a3a06de39f6d920b0e583e062a7362097c7c65ee490a758b442acd5c80c6fce4b148c6a391e946b45131365b@54.169.166.226:30303"), | 		discover.MustParseNode("enode://6cdd090303f394a1cac34ecc9f7cda18127eafa2a3a06de39f6d920b0e583e062a7362097c7c65ee490a758b442acd5c80c6fce4b148c6a391e946b45131365b@54.169.166.226:30303"), | ||||||
|  | 		// ETH/DEV cpp-ethereum (poc-8.ethdev.com)
 | ||||||
|  | 		discover.MustParseNode("enode://4a44599974518ea5b0f14c31c4463692ac0329cb84851f3435e6d1b18ee4eae4aa495f846a0fa1219bd58035671881d44423876e57db2abd57254d0197da0ebe@5.1.83.226:30303"), | ||||||
| 	} | 	} | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| @ -77,6 +82,27 @@ func (cfg *Config) parseBootNodes() []*discover.Node { | |||||||
| 	return ns | 	return ns | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (cfg *Config) nodeKey() (*ecdsa.PrivateKey, error) { | ||||||
|  | 	// use explicit key from command line args if set
 | ||||||
|  | 	if cfg.NodeKey != nil { | ||||||
|  | 		return cfg.NodeKey, nil | ||||||
|  | 	} | ||||||
|  | 	// use persistent key if present
 | ||||||
|  | 	keyfile := path.Join(cfg.DataDir, "nodekey") | ||||||
|  | 	key, err := crypto.LoadECDSA(keyfile) | ||||||
|  | 	if err == nil { | ||||||
|  | 		return key, nil | ||||||
|  | 	} | ||||||
|  | 	// no persistent key, generate and store a new one
 | ||||||
|  | 	if key, err = crypto.GenerateKey(); err != nil { | ||||||
|  | 		return nil, fmt.Errorf("could not generate server key: %v", err) | ||||||
|  | 	} | ||||||
|  | 	if err := ioutil.WriteFile(keyfile, crypto.FromECDSA(key), 0600); err != nil { | ||||||
|  | 		logger.Errorln("could not persist nodekey: ", err) | ||||||
|  | 	} | ||||||
|  | 	return key, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| type Ethereum struct { | type Ethereum struct { | ||||||
| 	// Channel for shutting down the ethereum
 | 	// Channel for shutting down the ethereum
 | ||||||
| 	shutdownChan chan bool | 	shutdownChan chan bool | ||||||
| @ -161,18 +187,16 @@ func New(config *Config) (*Ethereum, error) { | |||||||
| 	insertChain := eth.chainManager.InsertChain | 	insertChain := eth.chainManager.InsertChain | ||||||
| 	eth.blockPool = NewBlockPool(hasBlock, insertChain, ezp.Verify) | 	eth.blockPool = NewBlockPool(hasBlock, insertChain, ezp.Verify) | ||||||
| 
 | 
 | ||||||
|  | 	netprv, err := config.nodeKey() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
| 	ethProto := EthProtocol(eth.txPool, eth.chainManager, eth.blockPool) | 	ethProto := EthProtocol(eth.txPool, eth.chainManager, eth.blockPool) | ||||||
| 	protocols := []p2p.Protocol{ethProto} | 	protocols := []p2p.Protocol{ethProto} | ||||||
| 	if config.Shh { | 	if config.Shh { | ||||||
| 		protocols = append(protocols, eth.whisper.Protocol()) | 		protocols = append(protocols, eth.whisper.Protocol()) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	netprv := config.NodeKey |  | ||||||
| 	if netprv == nil { |  | ||||||
| 		if netprv, err = crypto.GenerateKey(); err != nil { |  | ||||||
| 			return nil, fmt.Errorf("could not generate server key: %v", err) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	eth.net = &p2p.Server{ | 	eth.net = &p2p.Server{ | ||||||
| 		PrivateKey:     netprv, | 		PrivateKey:     netprv, | ||||||
| 		Name:           config.Name, | 		Name:           config.Name, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user