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
aa0538db
Commit
aa0538db
authored
Oct 09, 2015
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eth: clean out light node notions from eth
parent
a9d8dfc8
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
39 additions
and
106 deletions
+39
-106
main.go
cmd/geth/main.go
+1
-3
flags.go
cmd/utils/flags.go
+4
-35
backend.go
eth/backend.go
+2
-2
queue.go
eth/downloader/queue.go
+6
-4
handler.go
eth/handler.go
+6
-11
handler_test.go
eth/handler_test.go
+11
-16
helper_test.go
eth/helper_test.go
+4
-4
protocol.go
eth/protocol.go
+2
-25
protocol_test.go
eth/protocol_test.go
+3
-6
No files found.
cmd/geth/main.go
View file @
aa0538db
...
@@ -304,8 +304,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
...
@@ -304,8 +304,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
utils
.
DataDirFlag
,
utils
.
DataDirFlag
,
utils
.
BlockchainVersionFlag
,
utils
.
BlockchainVersionFlag
,
utils
.
OlympicFlag
,
utils
.
OlympicFlag
,
utils
.
EthModeFlag
,
utils
.
FastSyncFlag
,
utils
.
EthVersionFlag
,
utils
.
CacheFlag
,
utils
.
CacheFlag
,
utils
.
JSpathFlag
,
utils
.
JSpathFlag
,
utils
.
ListenPortFlag
,
utils
.
ListenPortFlag
,
...
@@ -361,7 +360,6 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
...
@@ -361,7 +360,6 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
utils
.
SetupLogger
(
ctx
)
utils
.
SetupLogger
(
ctx
)
utils
.
SetupNetwork
(
ctx
)
utils
.
SetupNetwork
(
ctx
)
utils
.
SetupVM
(
ctx
)
utils
.
SetupVM
(
ctx
)
utils
.
SetupEth
(
ctx
)
if
ctx
.
GlobalBool
(
utils
.
PProfEanbledFlag
.
Name
)
{
if
ctx
.
GlobalBool
(
utils
.
PProfEanbledFlag
.
Name
)
{
utils
.
StartPProf
(
ctx
)
utils
.
StartPProf
(
ctx
)
}
}
...
...
cmd/utils/flags.go
View file @
aa0538db
...
@@ -28,7 +28,6 @@ import (
...
@@ -28,7 +28,6 @@ import (
"path/filepath"
"path/filepath"
"runtime"
"runtime"
"strconv"
"strconv"
"strings"
"github.com/codegangsta/cli"
"github.com/codegangsta/cli"
"github.com/ethereum/ethash"
"github.com/ethereum/ethash"
...
@@ -149,15 +148,9 @@ var (
...
@@ -149,15 +148,9 @@ var (
Name
:
"olympic"
,
Name
:
"olympic"
,
Usage
:
"Use olympic style protocol"
,
Usage
:
"Use olympic style protocol"
,
}
}
EthModeFlag
=
cli
.
StringFlag
{
FastSyncFlag
=
cli
.
BoolFlag
{
Name
:
"mode"
,
Name
:
"fast"
,
Value
:
"archive"
,
Usage
:
"Enables fast syncing through state downloads"
,
Usage
:
"Client mode of operation (archive, full, light)"
,
}
EthVersionFlag
=
cli
.
IntFlag
{
Name
:
"eth"
,
Value
:
63
,
Usage
:
"Highest eth protocol to advertise (temporary, dev option)"
,
}
}
// miner settings
// miner settings
...
@@ -431,25 +424,13 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
...
@@ -431,25 +424,13 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
if
err
!=
nil
{
if
err
!=
nil
{
glog
.
V
(
logger
.
Error
)
.
Infoln
(
"WARNING: No etherbase set and no accounts found as default"
)
glog
.
V
(
logger
.
Error
)
.
Infoln
(
"WARNING: No etherbase set and no accounts found as default"
)
}
}
// Resolve the mode of opeation from the string flag
var
clientMode
eth
.
Mode
switch
strings
.
ToLower
(
ctx
.
GlobalString
(
EthModeFlag
.
Name
))
{
case
"archive"
:
clientMode
=
eth
.
ArchiveMode
case
"full"
:
clientMode
=
eth
.
FullMode
case
"light"
:
clientMode
=
eth
.
LightMode
default
:
glog
.
Fatalf
(
"Unknown node type requested: %s"
,
ctx
.
GlobalString
(
EthModeFlag
.
Name
))
}
// Assemble the entire eth configuration and return
// Assemble the entire eth configuration and return
cfg
:=
&
eth
.
Config
{
cfg
:=
&
eth
.
Config
{
Name
:
common
.
MakeName
(
clientID
,
version
),
Name
:
common
.
MakeName
(
clientID
,
version
),
DataDir
:
MustDataDir
(
ctx
),
DataDir
:
MustDataDir
(
ctx
),
GenesisNonce
:
ctx
.
GlobalInt
(
GenesisNonceFlag
.
Name
),
GenesisNonce
:
ctx
.
GlobalInt
(
GenesisNonceFlag
.
Name
),
GenesisFile
:
ctx
.
GlobalString
(
GenesisFileFlag
.
Name
),
GenesisFile
:
ctx
.
GlobalString
(
GenesisFileFlag
.
Name
),
Mode
:
clientMode
,
FastSync
:
ctx
.
GlobalBool
(
FastSyncFlag
.
Name
)
,
BlockChainVersion
:
ctx
.
GlobalInt
(
BlockchainVersionFlag
.
Name
),
BlockChainVersion
:
ctx
.
GlobalInt
(
BlockchainVersionFlag
.
Name
),
DatabaseCache
:
ctx
.
GlobalInt
(
CacheFlag
.
Name
),
DatabaseCache
:
ctx
.
GlobalInt
(
CacheFlag
.
Name
),
SkipBcVersionCheck
:
false
,
SkipBcVersionCheck
:
false
,
...
@@ -550,18 +531,6 @@ func SetupVM(ctx *cli.Context) {
...
@@ -550,18 +531,6 @@ func SetupVM(ctx *cli.Context) {
vm
.
SetJITCacheSize
(
ctx
.
GlobalInt
(
VMJitCacheFlag
.
Name
))
vm
.
SetJITCacheSize
(
ctx
.
GlobalInt
(
VMJitCacheFlag
.
Name
))
}
}
// SetupEth configures the eth packages global settings
func
SetupEth
(
ctx
*
cli
.
Context
)
{
version
:=
ctx
.
GlobalInt
(
EthVersionFlag
.
Name
)
for
len
(
eth
.
ProtocolVersions
)
>
0
&&
eth
.
ProtocolVersions
[
0
]
>
uint
(
version
)
{
eth
.
ProtocolVersions
=
eth
.
ProtocolVersions
[
1
:
]
eth
.
ProtocolLengths
=
eth
.
ProtocolLengths
[
1
:
]
}
if
len
(
eth
.
ProtocolVersions
)
==
0
{
Fatalf
(
"No valid eth protocols remaining"
)
}
}
// MakeChain creates a chain manager from set command line flags.
// MakeChain creates a chain manager from set command line flags.
func
MakeChain
(
ctx
*
cli
.
Context
)
(
chain
*
core
.
BlockChain
,
chainDb
ethdb
.
Database
)
{
func
MakeChain
(
ctx
*
cli
.
Context
)
(
chain
*
core
.
BlockChain
,
chainDb
ethdb
.
Database
)
{
datadir
:=
MustDataDir
(
ctx
)
datadir
:=
MustDataDir
(
ctx
)
...
...
eth/backend.go
View file @
aa0538db
...
@@ -88,8 +88,8 @@ type Config struct {
...
@@ -88,8 +88,8 @@ type Config struct {
GenesisNonce
int
GenesisNonce
int
GenesisFile
string
GenesisFile
string
GenesisBlock
*
types
.
Block
// used by block tests
GenesisBlock
*
types
.
Block
// used by block tests
FastSync
bool
Olympic
bool
Olympic
bool
Mode
Mode
BlockChainVersion
int
BlockChainVersion
int
SkipBcVersionCheck
bool
// e.g. blockchain export
SkipBcVersionCheck
bool
// e.g. blockchain export
...
@@ -399,7 +399,7 @@ func New(config *Config) (*Ethereum, error) {
...
@@ -399,7 +399,7 @@ func New(config *Config) (*Ethereum, error) {
eth
.
blockProcessor
=
core
.
NewBlockProcessor
(
chainDb
,
eth
.
pow
,
eth
.
blockchain
,
eth
.
EventMux
())
eth
.
blockProcessor
=
core
.
NewBlockProcessor
(
chainDb
,
eth
.
pow
,
eth
.
blockchain
,
eth
.
EventMux
())
eth
.
blockchain
.
SetProcessor
(
eth
.
blockProcessor
)
eth
.
blockchain
.
SetProcessor
(
eth
.
blockProcessor
)
if
eth
.
protocolManager
,
err
=
NewProtocolManager
(
config
.
Mode
,
config
.
NetworkId
,
eth
.
eventMux
,
eth
.
txPool
,
eth
.
pow
,
eth
.
blockchain
,
chainDb
);
err
!=
nil
{
if
eth
.
protocolManager
,
err
=
NewProtocolManager
(
config
.
FastSync
,
config
.
NetworkId
,
eth
.
eventMux
,
eth
.
txPool
,
eth
.
pow
,
eth
.
blockchain
,
chainDb
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
eth
.
miner
=
miner
.
New
(
eth
,
eth
.
EventMux
(),
eth
.
pow
)
eth
.
miner
=
miner
.
New
(
eth
,
eth
.
EventMux
(),
eth
.
pow
)
...
...
eth/downloader/queue.go
View file @
aa0538db
...
@@ -422,10 +422,12 @@ func (q *queue) ReserveNodeData(p *peer, count int) *fetchRequest {
...
@@ -422,10 +422,12 @@ func (q *queue) ReserveNodeData(p *peer, count int) *fetchRequest {
q
.
stateSchedLock
.
Lock
()
q
.
stateSchedLock
.
Lock
()
defer
q
.
stateSchedLock
.
Unlock
()
defer
q
.
stateSchedLock
.
Unlock
()
for
_
,
hash
:=
range
q
.
stateScheduler
.
Missing
(
max
)
{
if
q
.
stateScheduler
!=
nil
{
q
.
stateTaskPool
[
hash
]
=
q
.
stateTaskIndex
for
_
,
hash
:=
range
q
.
stateScheduler
.
Missing
(
max
)
{
q
.
stateTaskQueue
.
Push
(
hash
,
-
float32
(
q
.
stateTaskIndex
))
q
.
stateTaskPool
[
hash
]
=
q
.
stateTaskIndex
q
.
stateTaskIndex
++
q
.
stateTaskQueue
.
Push
(
hash
,
-
float32
(
q
.
stateTaskIndex
))
q
.
stateTaskIndex
++
}
}
}
}
}
return
q
.
reserveHashes
(
p
,
count
,
q
.
stateTaskQueue
,
generator
,
q
.
statePendPool
,
count
)
return
q
.
reserveHashes
(
p
,
count
,
q
.
stateTaskQueue
,
generator
,
q
.
statePendPool
,
count
)
...
...
eth/handler.go
View file @
aa0538db
...
@@ -55,7 +55,7 @@ type hashFetcherFn func(common.Hash) error
...
@@ -55,7 +55,7 @@ type hashFetcherFn func(common.Hash) error
type
blockFetcherFn
func
([]
common
.
Hash
)
error
type
blockFetcherFn
func
([]
common
.
Hash
)
error
type
ProtocolManager
struct
{
type
ProtocolManager
struct
{
mode
Mode
fastSync
bool
txpool
txPool
txpool
txPool
blockchain
*
core
.
BlockChain
blockchain
*
core
.
BlockChain
chaindb
ethdb
.
Database
chaindb
ethdb
.
Database
...
@@ -83,10 +83,10 @@ type ProtocolManager struct {
...
@@ -83,10 +83,10 @@ type ProtocolManager struct {
// NewProtocolManager returns a new ethereum sub protocol manager. The Ethereum sub protocol manages peers capable
// NewProtocolManager returns a new ethereum sub protocol manager. The Ethereum sub protocol manages peers capable
// with the ethereum network.
// with the ethereum network.
func
NewProtocolManager
(
mode
Mode
,
networkId
int
,
mux
*
event
.
TypeMux
,
txpool
txPool
,
pow
pow
.
PoW
,
blockchain
*
core
.
BlockChain
,
chaindb
ethdb
.
Database
)
(
*
ProtocolManager
,
error
)
{
func
NewProtocolManager
(
fastSync
bool
,
networkId
int
,
mux
*
event
.
TypeMux
,
txpool
txPool
,
pow
pow
.
PoW
,
blockchain
*
core
.
BlockChain
,
chaindb
ethdb
.
Database
)
(
*
ProtocolManager
,
error
)
{
// Create the protocol manager with the base fields
// Create the protocol manager with the base fields
manager
:=
&
ProtocolManager
{
manager
:=
&
ProtocolManager
{
mode
:
mode
,
fastSync
:
fastSync
,
eventMux
:
mux
,
eventMux
:
mux
,
txpool
:
txpool
,
txpool
:
txpool
,
blockchain
:
blockchain
,
blockchain
:
blockchain
,
...
@@ -100,7 +100,7 @@ func NewProtocolManager(mode Mode, networkId int, mux *event.TypeMux, txpool txP
...
@@ -100,7 +100,7 @@ func NewProtocolManager(mode Mode, networkId int, mux *event.TypeMux, txpool txP
manager
.
SubProtocols
=
make
([]
p2p
.
Protocol
,
0
,
len
(
ProtocolVersions
))
manager
.
SubProtocols
=
make
([]
p2p
.
Protocol
,
0
,
len
(
ProtocolVersions
))
for
i
,
version
:=
range
ProtocolVersions
{
for
i
,
version
:=
range
ProtocolVersions
{
// Skip protocol version if incompatible with the mode of operation
// Skip protocol version if incompatible with the mode of operation
if
minimumProtocolVersion
[
mode
]
>
version
{
if
fastSync
&&
version
<
eth63
{
continue
continue
}
}
// Compatible, initialize the sub-protocol
// Compatible, initialize the sub-protocol
...
@@ -120,14 +120,9 @@ func NewProtocolManager(mode Mode, networkId int, mux *event.TypeMux, txpool txP
...
@@ -120,14 +120,9 @@ func NewProtocolManager(mode Mode, networkId int, mux *event.TypeMux, txpool txP
return
nil
,
errIncompatibleConfig
return
nil
,
errIncompatibleConfig
}
}
// Construct the different synchronisation mechanisms
// Construct the different synchronisation mechanisms
var
syncMode
downloader
.
SyncMode
syncMode
:=
downloader
.
FullSync
switch
mode
{
if
fastSync
{
case
ArchiveMode
:
syncMode
=
downloader
.
FullSync
case
FullMode
:
syncMode
=
downloader
.
FastSync
syncMode
=
downloader
.
FastSync
case
LightMode
:
syncMode
=
downloader
.
LightSync
}
}
manager
.
downloader
=
downloader
.
New
(
syncMode
,
chaindb
,
manager
.
eventMux
,
blockchain
.
HasHeader
,
blockchain
.
HasBlock
,
blockchain
.
GetHeader
,
manager
.
downloader
=
downloader
.
New
(
syncMode
,
chaindb
,
manager
.
eventMux
,
blockchain
.
HasHeader
,
blockchain
.
HasBlock
,
blockchain
.
GetHeader
,
blockchain
.
GetBlock
,
blockchain
.
CurrentHeader
,
blockchain
.
CurrentBlock
,
blockchain
.
CurrentFastBlock
,
blockchain
.
FastSyncCommitHead
,
blockchain
.
GetBlock
,
blockchain
.
CurrentHeader
,
blockchain
.
CurrentBlock
,
blockchain
.
CurrentFastBlock
,
blockchain
.
FastSyncCommitHead
,
...
...
eth/handler_test.go
View file @
aa0538db
...
@@ -22,12 +22,11 @@ func TestProtocolCompatibility(t *testing.T) {
...
@@ -22,12 +22,11 @@ func TestProtocolCompatibility(t *testing.T) {
// Define the compatibility chart
// Define the compatibility chart
tests
:=
[]
struct
{
tests
:=
[]
struct
{
version
uint
version
uint
mode
Mode
fastSync
bool
compatible
bool
compatible
bool
}{
}{
{
61
,
ArchiveMode
,
true
},
{
62
,
ArchiveMode
,
true
},
{
63
,
ArchiveMode
,
true
},
{
64
,
ArchiveMode
,
true
},
{
61
,
false
,
true
},
{
62
,
false
,
true
},
{
63
,
false
,
true
},
{
61
,
FullMode
,
false
},
{
62
,
FullMode
,
false
},
{
63
,
FullMode
,
true
},
{
64
,
FullMode
,
true
},
{
61
,
true
,
false
},
{
62
,
true
,
false
},
{
63
,
true
,
true
},
{
61
,
LightMode
,
false
},
{
62
,
LightMode
,
false
},
{
63
,
LightMode
,
false
},
{
64
,
LightMode
,
true
},
}
}
// Make sure anything we screw up is restored
// Make sure anything we screw up is restored
backup
:=
ProtocolVersions
backup
:=
ProtocolVersions
...
@@ -37,7 +36,7 @@ func TestProtocolCompatibility(t *testing.T) {
...
@@ -37,7 +36,7 @@ func TestProtocolCompatibility(t *testing.T) {
for
i
,
tt
:=
range
tests
{
for
i
,
tt
:=
range
tests
{
ProtocolVersions
=
[]
uint
{
tt
.
version
}
ProtocolVersions
=
[]
uint
{
tt
.
version
}
pm
,
err
:=
newTestProtocolManager
(
tt
.
mode
,
0
,
nil
,
nil
)
pm
,
err
:=
newTestProtocolManager
(
tt
.
fastSync
,
0
,
nil
,
nil
)
if
pm
!=
nil
{
if
pm
!=
nil
{
defer
pm
.
Stop
()
defer
pm
.
Stop
()
}
}
...
@@ -52,7 +51,7 @@ func TestProtocolCompatibility(t *testing.T) {
...
@@ -52,7 +51,7 @@ func TestProtocolCompatibility(t *testing.T) {
func
TestGetBlockHashes61
(
t
*
testing
.
T
)
{
testGetBlockHashes
(
t
,
61
)
}
func
TestGetBlockHashes61
(
t
*
testing
.
T
)
{
testGetBlockHashes
(
t
,
61
)
}
func
testGetBlockHashes
(
t
*
testing
.
T
,
protocol
int
)
{
func
testGetBlockHashes
(
t
*
testing
.
T
,
protocol
int
)
{
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
peer
.
close
()
defer
peer
.
close
()
...
@@ -95,7 +94,7 @@ func testGetBlockHashes(t *testing.T, protocol int) {
...
@@ -95,7 +94,7 @@ func testGetBlockHashes(t *testing.T, protocol int) {
func
TestGetBlockHashesFromNumber61
(
t
*
testing
.
T
)
{
testGetBlockHashesFromNumber
(
t
,
61
)
}
func
TestGetBlockHashesFromNumber61
(
t
*
testing
.
T
)
{
testGetBlockHashesFromNumber
(
t
,
61
)
}
func
testGetBlockHashesFromNumber
(
t
*
testing
.
T
,
protocol
int
)
{
func
testGetBlockHashesFromNumber
(
t
*
testing
.
T
,
protocol
int
)
{
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
peer
.
close
()
defer
peer
.
close
()
...
@@ -135,7 +134,7 @@ func testGetBlockHashesFromNumber(t *testing.T, protocol int) {
...
@@ -135,7 +134,7 @@ func testGetBlockHashesFromNumber(t *testing.T, protocol int) {
func
TestGetBlocks61
(
t
*
testing
.
T
)
{
testGetBlocks
(
t
,
61
)
}
func
TestGetBlocks61
(
t
*
testing
.
T
)
{
testGetBlocks
(
t
,
61
)
}
func
testGetBlocks
(
t
*
testing
.
T
,
protocol
int
)
{
func
testGetBlocks
(
t
*
testing
.
T
,
protocol
int
)
{
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
peer
.
close
()
defer
peer
.
close
()
...
@@ -204,10 +203,9 @@ func testGetBlocks(t *testing.T, protocol int) {
...
@@ -204,10 +203,9 @@ func testGetBlocks(t *testing.T, protocol int) {
// Tests that block headers can be retrieved from a remote chain based on user queries.
// Tests that block headers can be retrieved from a remote chain based on user queries.
func
TestGetBlockHeaders62
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
62
)
}
func
TestGetBlockHeaders62
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
62
)
}
func
TestGetBlockHeaders63
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
63
)
}
func
TestGetBlockHeaders63
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
63
)
}
func
TestGetBlockHeaders64
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
64
)
}
func
testGetBlockHeaders
(
t
*
testing
.
T
,
protocol
int
)
{
func
testGetBlockHeaders
(
t
*
testing
.
T
,
protocol
int
)
{
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
downloader
.
MaxHashFetch
+
15
,
nil
,
nil
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
peer
.
close
()
defer
peer
.
close
()
...
@@ -330,10 +328,9 @@ func testGetBlockHeaders(t *testing.T, protocol int) {
...
@@ -330,10 +328,9 @@ func testGetBlockHeaders(t *testing.T, protocol int) {
// Tests that block contents can be retrieved from a remote chain based on their hashes.
// Tests that block contents can be retrieved from a remote chain based on their hashes.
func
TestGetBlockBodies62
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
62
)
}
func
TestGetBlockBodies62
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
62
)
}
func
TestGetBlockBodies63
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
63
)
}
func
TestGetBlockBodies63
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
63
)
}
func
TestGetBlockBodies64
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
64
)
}
func
testGetBlockBodies
(
t
*
testing
.
T
,
protocol
int
)
{
func
testGetBlockBodies
(
t
*
testing
.
T
,
protocol
int
)
{
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
downloader
.
MaxBlockFetch
+
15
,
nil
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
downloader
.
MaxBlockFetch
+
15
,
nil
,
nil
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
peer
.
close
()
defer
peer
.
close
()
...
@@ -402,7 +399,6 @@ func testGetBlockBodies(t *testing.T, protocol int) {
...
@@ -402,7 +399,6 @@ func testGetBlockBodies(t *testing.T, protocol int) {
// Tests that the node state database can be retrieved based on hashes.
// Tests that the node state database can be retrieved based on hashes.
func
TestGetNodeData63
(
t
*
testing
.
T
)
{
testGetNodeData
(
t
,
63
)
}
func
TestGetNodeData63
(
t
*
testing
.
T
)
{
testGetNodeData
(
t
,
63
)
}
func
TestGetNodeData64
(
t
*
testing
.
T
)
{
testGetNodeData
(
t
,
64
)
}
func
testGetNodeData
(
t
*
testing
.
T
,
protocol
int
)
{
func
testGetNodeData
(
t
*
testing
.
T
,
protocol
int
)
{
// Define three accounts to simulate transactions with
// Define three accounts to simulate transactions with
...
@@ -440,7 +436,7 @@ func testGetNodeData(t *testing.T, protocol int) {
...
@@ -440,7 +436,7 @@ func testGetNodeData(t *testing.T, protocol int) {
}
}
}
}
// Assemble the test environment
// Assemble the test environment
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
4
,
generator
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
4
,
generator
,
nil
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
peer
.
close
()
defer
peer
.
close
()
...
@@ -492,7 +488,6 @@ func testGetNodeData(t *testing.T, protocol int) {
...
@@ -492,7 +488,6 @@ func testGetNodeData(t *testing.T, protocol int) {
// Tests that the transaction receipts can be retrieved based on hashes.
// Tests that the transaction receipts can be retrieved based on hashes.
func
TestGetReceipt63
(
t
*
testing
.
T
)
{
testGetReceipt
(
t
,
63
)
}
func
TestGetReceipt63
(
t
*
testing
.
T
)
{
testGetReceipt
(
t
,
63
)
}
func
TestGetReceipt64
(
t
*
testing
.
T
)
{
testGetReceipt
(
t
,
64
)
}
func
testGetReceipt
(
t
*
testing
.
T
,
protocol
int
)
{
func
testGetReceipt
(
t
*
testing
.
T
,
protocol
int
)
{
// Define three accounts to simulate transactions with
// Define three accounts to simulate transactions with
...
@@ -530,7 +525,7 @@ func testGetReceipt(t *testing.T, protocol int) {
...
@@ -530,7 +525,7 @@ func testGetReceipt(t *testing.T, protocol int) {
}
}
}
}
// Assemble the test environment
// Assemble the test environment
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
4
,
generator
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
4
,
generator
,
nil
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
peer
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
peer
.
close
()
defer
peer
.
close
()
...
...
eth/helper_test.go
View file @
aa0538db
...
@@ -28,7 +28,7 @@ var (
...
@@ -28,7 +28,7 @@ var (
// newTestProtocolManager creates a new protocol manager for testing purposes,
// newTestProtocolManager creates a new protocol manager for testing purposes,
// with the given number of blocks already known, and potential notification
// with the given number of blocks already known, and potential notification
// channels for different events.
// channels for different events.
func
newTestProtocolManager
(
mode
Mode
,
blocks
int
,
generator
func
(
int
,
*
core
.
BlockGen
),
newtx
chan
<-
[]
*
types
.
Transaction
)
(
*
ProtocolManager
,
error
)
{
func
newTestProtocolManager
(
fastSync
bool
,
blocks
int
,
generator
func
(
int
,
*
core
.
BlockGen
),
newtx
chan
<-
[]
*
types
.
Transaction
)
(
*
ProtocolManager
,
error
)
{
var
(
var
(
evmux
=
new
(
event
.
TypeMux
)
evmux
=
new
(
event
.
TypeMux
)
pow
=
new
(
core
.
FakePow
)
pow
=
new
(
core
.
FakePow
)
...
@@ -42,7 +42,7 @@ func newTestProtocolManager(mode Mode, blocks int, generator func(int, *core.Blo
...
@@ -42,7 +42,7 @@ func newTestProtocolManager(mode Mode, blocks int, generator func(int, *core.Blo
if
_
,
err
:=
blockchain
.
InsertChain
(
chain
);
err
!=
nil
{
if
_
,
err
:=
blockchain
.
InsertChain
(
chain
);
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
pm
,
err
:=
NewProtocolManager
(
mode
,
NetworkId
,
evmux
,
&
testTxPool
{
added
:
newtx
},
pow
,
blockchain
,
db
)
pm
,
err
:=
NewProtocolManager
(
fastSync
,
NetworkId
,
evmux
,
&
testTxPool
{
added
:
newtx
},
pow
,
blockchain
,
db
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -54,8 +54,8 @@ func newTestProtocolManager(mode Mode, blocks int, generator func(int, *core.Blo
...
@@ -54,8 +54,8 @@ func newTestProtocolManager(mode Mode, blocks int, generator func(int, *core.Blo
// with the given number of blocks already known, and potential notification
// with the given number of blocks already known, and potential notification
// channels for different events. In case of an error, the constructor force-
// channels for different events. In case of an error, the constructor force-
// fails the test.
// fails the test.
func
newTestProtocolManagerMust
(
t
*
testing
.
T
,
mode
Mode
,
blocks
int
,
generator
func
(
int
,
*
core
.
BlockGen
),
newtx
chan
<-
[]
*
types
.
Transaction
)
*
ProtocolManager
{
func
newTestProtocolManagerMust
(
t
*
testing
.
T
,
fastSync
bool
,
blocks
int
,
generator
func
(
int
,
*
core
.
BlockGen
),
newtx
chan
<-
[]
*
types
.
Transaction
)
*
ProtocolManager
{
pm
,
err
:=
newTestProtocolManager
(
mode
,
blocks
,
generator
,
newtx
)
pm
,
err
:=
newTestProtocolManager
(
fastSync
,
blocks
,
generator
,
newtx
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"Failed to create protocol manager: %v"
,
err
)
t
.
Fatalf
(
"Failed to create protocol manager: %v"
,
err
)
}
}
...
...
eth/protocol.go
View file @
aa0538db
...
@@ -26,36 +26,18 @@ import (
...
@@ -26,36 +26,18 @@ import (
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rlp"
)
)
// Mode represents the mode of operation of the eth client.
type
Mode
int
const
(
ArchiveMode
Mode
=
iota
// Maintain the entire blockchain history
FullMode
// Maintain only a recent view of the blockchain
LightMode
// Don't maintain any history, rather fetch on demand
)
// Constants to match up protocol versions and messages
// Constants to match up protocol versions and messages
const
(
const
(
eth61
=
61
eth61
=
61
eth62
=
62
eth62
=
62
eth63
=
63
eth63
=
63
eth64
=
64
)
)
// minimumProtocolVersion is the minimum version of the protocol eth must run to
// support the desired mode of operation.
var
minimumProtocolVersion
=
map
[
Mode
]
uint
{
ArchiveMode
:
eth61
,
FullMode
:
eth63
,
LightMode
:
eth64
,
}
// Supported versions of the eth protocol (first is primary).
// Supported versions of the eth protocol (first is primary).
var
ProtocolVersions
=
[]
uint
{
eth6
4
,
eth6
3
,
eth62
,
eth61
}
var
ProtocolVersions
=
[]
uint
{
eth63
,
eth62
,
eth61
}
// Number of implemented message corresponding to different protocol versions.
// Number of implemented message corresponding to different protocol versions.
var
ProtocolLengths
=
[]
uint64
{
1
9
,
1
7
,
8
,
9
}
var
ProtocolLengths
=
[]
uint64
{
17
,
8
,
9
}
const
(
const
(
NetworkId
=
1
NetworkId
=
1
...
@@ -90,11 +72,6 @@ const (
...
@@ -90,11 +72,6 @@ const (
NodeDataMsg
=
0x0e
NodeDataMsg
=
0x0e
GetReceiptsMsg
=
0x0f
GetReceiptsMsg
=
0x0f
ReceiptsMsg
=
0x10
ReceiptsMsg
=
0x10
// Protocol messages belonging to eth/64
GetAcctProofMsg
=
0x11
GetStorageDataProof
=
0x12
Proof
=
0x13
)
)
type
errCode
int
type
errCode
int
...
...
eth/protocol_test.go
View file @
aa0538db
...
@@ -41,10 +41,9 @@ var testAccount = crypto.NewKey(rand.Reader)
...
@@ -41,10 +41,9 @@ var testAccount = crypto.NewKey(rand.Reader)
func
TestStatusMsgErrors61
(
t
*
testing
.
T
)
{
testStatusMsgErrors
(
t
,
61
)
}
func
TestStatusMsgErrors61
(
t
*
testing
.
T
)
{
testStatusMsgErrors
(
t
,
61
)
}
func
TestStatusMsgErrors62
(
t
*
testing
.
T
)
{
testStatusMsgErrors
(
t
,
62
)
}
func
TestStatusMsgErrors62
(
t
*
testing
.
T
)
{
testStatusMsgErrors
(
t
,
62
)
}
func
TestStatusMsgErrors63
(
t
*
testing
.
T
)
{
testStatusMsgErrors
(
t
,
63
)
}
func
TestStatusMsgErrors63
(
t
*
testing
.
T
)
{
testStatusMsgErrors
(
t
,
63
)
}
func
TestStatusMsgErrors64
(
t
*
testing
.
T
)
{
testStatusMsgErrors
(
t
,
64
)
}
func
testStatusMsgErrors
(
t
*
testing
.
T
,
protocol
int
)
{
func
testStatusMsgErrors
(
t
*
testing
.
T
,
protocol
int
)
{
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
0
,
nil
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
0
,
nil
,
nil
)
td
,
currentBlock
,
genesis
:=
pm
.
blockchain
.
Status
()
td
,
currentBlock
,
genesis
:=
pm
.
blockchain
.
Status
()
defer
pm
.
Stop
()
defer
pm
.
Stop
()
...
@@ -95,11 +94,10 @@ func testStatusMsgErrors(t *testing.T, protocol int) {
...
@@ -95,11 +94,10 @@ func testStatusMsgErrors(t *testing.T, protocol int) {
func
TestRecvTransactions61
(
t
*
testing
.
T
)
{
testRecvTransactions
(
t
,
61
)
}
func
TestRecvTransactions61
(
t
*
testing
.
T
)
{
testRecvTransactions
(
t
,
61
)
}
func
TestRecvTransactions62
(
t
*
testing
.
T
)
{
testRecvTransactions
(
t
,
62
)
}
func
TestRecvTransactions62
(
t
*
testing
.
T
)
{
testRecvTransactions
(
t
,
62
)
}
func
TestRecvTransactions63
(
t
*
testing
.
T
)
{
testRecvTransactions
(
t
,
63
)
}
func
TestRecvTransactions63
(
t
*
testing
.
T
)
{
testRecvTransactions
(
t
,
63
)
}
func
TestRecvTransactions64
(
t
*
testing
.
T
)
{
testRecvTransactions
(
t
,
64
)
}
func
testRecvTransactions
(
t
*
testing
.
T
,
protocol
int
)
{
func
testRecvTransactions
(
t
*
testing
.
T
,
protocol
int
)
{
txAdded
:=
make
(
chan
[]
*
types
.
Transaction
)
txAdded
:=
make
(
chan
[]
*
types
.
Transaction
)
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
0
,
nil
,
txAdded
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
0
,
nil
,
txAdded
)
p
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
p
,
_
:=
newTestPeer
(
"peer"
,
protocol
,
pm
,
true
)
defer
pm
.
Stop
()
defer
pm
.
Stop
()
defer
p
.
close
()
defer
p
.
close
()
...
@@ -124,10 +122,9 @@ func testRecvTransactions(t *testing.T, protocol int) {
...
@@ -124,10 +122,9 @@ func testRecvTransactions(t *testing.T, protocol int) {
func
TestSendTransactions61
(
t
*
testing
.
T
)
{
testSendTransactions
(
t
,
61
)
}
func
TestSendTransactions61
(
t
*
testing
.
T
)
{
testSendTransactions
(
t
,
61
)
}
func
TestSendTransactions62
(
t
*
testing
.
T
)
{
testSendTransactions
(
t
,
62
)
}
func
TestSendTransactions62
(
t
*
testing
.
T
)
{
testSendTransactions
(
t
,
62
)
}
func
TestSendTransactions63
(
t
*
testing
.
T
)
{
testSendTransactions
(
t
,
63
)
}
func
TestSendTransactions63
(
t
*
testing
.
T
)
{
testSendTransactions
(
t
,
63
)
}
func
TestSendTransactions64
(
t
*
testing
.
T
)
{
testSendTransactions
(
t
,
64
)
}
func
testSendTransactions
(
t
*
testing
.
T
,
protocol
int
)
{
func
testSendTransactions
(
t
*
testing
.
T
,
protocol
int
)
{
pm
:=
newTestProtocolManagerMust
(
t
,
ArchiveMod
e
,
0
,
nil
,
nil
)
pm
:=
newTestProtocolManagerMust
(
t
,
fals
e
,
0
,
nil
,
nil
)
defer
pm
.
Stop
()
defer
pm
.
Stop
()
// Fill the pool with big transactions.
// Fill the pool with big transactions.
...
...
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