Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
59a86d31
Commit
59a86d31
authored
Feb 22, 2015
by
Jeffrey Wilcke
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #359 from fjl/p2p-identity
Persistent Node Key
parents
8620dc05
e9689286
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
6 deletions
+30
-6
backend.go
eth/backend.go
+30
-6
No files found.
eth/backend.go
View file @
59a86d31
...
...
@@ -3,6 +3,8 @@ package eth
import
(
"crypto/ecdsa"
"fmt"
"io/ioutil"
"path"
"strings"
"github.com/ethereum/go-ethereum/core"
...
...
@@ -25,7 +27,10 @@ var (
jsonlogger
=
ethlogger
.
NewJsonLogger
()
defaultBootNodes
=
[]
*
discover
.
Node
{
// ETH/DEV cmd/bootnode
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
}
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
{
// Channel for shutting down the ethereum
shutdownChan
chan
bool
...
...
@@ -161,18 +187,16 @@ func New(config *Config) (*Ethereum, error) {
insertChain
:=
eth
.
chainManager
.
InsertChain
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
)
protocols
:=
[]
p2p
.
Protocol
{
ethProto
}
if
config
.
Shh
{
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
{
PrivateKey
:
netprv
,
Name
:
config
.
Name
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment