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
7d1b711c
Unverified
Commit
7d1b711c
authored
Feb 12, 2021
by
Felföldi Zsolt
Committed by
GitHub
Feb 12, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
les: enable les/4 and add tests (#22321)
parent
2fc465a7
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
31 additions
and
4 deletions
+31
-4
handler_test.go
les/handler_test.go
+10
-0
odr_test.go
les/odr_test.go
+5
-0
protocol.go
les/protocol.go
+2
-2
request_test.go
les/request_test.go
+4
-0
test_helper.go
les/test_helper.go
+10
-2
No files found.
les/handler_test.go
View file @
7d1b711c
...
...
@@ -49,6 +49,7 @@ func expectResponse(r p2p.MsgReader, msgcode, reqID, bv uint64, data interface{}
// Tests that block headers can be retrieved from a remote chain based on user queries.
func
TestGetBlockHeadersLes2
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
2
)
}
func
TestGetBlockHeadersLes3
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
3
)
}
func
TestGetBlockHeadersLes4
(
t
*
testing
.
T
)
{
testGetBlockHeaders
(
t
,
4
)
}
func
testGetBlockHeaders
(
t
*
testing
.
T
,
protocol
int
)
{
server
,
tearDown
:=
newServerEnv
(
t
,
downloader
.
MaxHeaderFetch
+
15
,
protocol
,
nil
,
false
,
true
,
0
)
...
...
@@ -178,6 +179,7 @@ func testGetBlockHeaders(t *testing.T, protocol int) {
// Tests that block contents can be retrieved from a remote chain based on their hashes.
func
TestGetBlockBodiesLes2
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
2
)
}
func
TestGetBlockBodiesLes3
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
3
)
}
func
TestGetBlockBodiesLes4
(
t
*
testing
.
T
)
{
testGetBlockBodies
(
t
,
4
)
}
func
testGetBlockBodies
(
t
*
testing
.
T
,
protocol
int
)
{
server
,
tearDown
:=
newServerEnv
(
t
,
downloader
.
MaxBlockFetch
+
15
,
protocol
,
nil
,
false
,
true
,
0
)
...
...
@@ -255,6 +257,7 @@ func testGetBlockBodies(t *testing.T, protocol int) {
// Tests that the contract codes can be retrieved based on account addresses.
func
TestGetCodeLes2
(
t
*
testing
.
T
)
{
testGetCode
(
t
,
2
)
}
func
TestGetCodeLes3
(
t
*
testing
.
T
)
{
testGetCode
(
t
,
3
)
}
func
TestGetCodeLes4
(
t
*
testing
.
T
)
{
testGetCode
(
t
,
4
)
}
func
testGetCode
(
t
*
testing
.
T
,
protocol
int
)
{
// Assemble the test environment
...
...
@@ -285,6 +288,7 @@ func testGetCode(t *testing.T, protocol int) {
// Tests that the stale contract codes can't be retrieved based on account addresses.
func
TestGetStaleCodeLes2
(
t
*
testing
.
T
)
{
testGetStaleCode
(
t
,
2
)
}
func
TestGetStaleCodeLes3
(
t
*
testing
.
T
)
{
testGetStaleCode
(
t
,
3
)
}
func
TestGetStaleCodeLes4
(
t
*
testing
.
T
)
{
testGetStaleCode
(
t
,
4
)
}
func
testGetStaleCode
(
t
*
testing
.
T
,
protocol
int
)
{
server
,
tearDown
:=
newServerEnv
(
t
,
core
.
TriesInMemory
+
4
,
protocol
,
nil
,
false
,
true
,
0
)
...
...
@@ -309,6 +313,7 @@ func testGetStaleCode(t *testing.T, protocol int) {
// Tests that the transaction receipts can be retrieved based on hashes.
func
TestGetReceiptLes2
(
t
*
testing
.
T
)
{
testGetReceipt
(
t
,
2
)
}
func
TestGetReceiptLes3
(
t
*
testing
.
T
)
{
testGetReceipt
(
t
,
3
)
}
func
TestGetReceiptLes4
(
t
*
testing
.
T
)
{
testGetReceipt
(
t
,
4
)
}
func
testGetReceipt
(
t
*
testing
.
T
,
protocol
int
)
{
// Assemble the test environment
...
...
@@ -336,6 +341,7 @@ func testGetReceipt(t *testing.T, protocol int) {
// Tests that trie merkle proofs can be retrieved
func
TestGetProofsLes2
(
t
*
testing
.
T
)
{
testGetProofs
(
t
,
2
)
}
func
TestGetProofsLes3
(
t
*
testing
.
T
)
{
testGetProofs
(
t
,
3
)
}
func
TestGetProofsLes4
(
t
*
testing
.
T
)
{
testGetProofs
(
t
,
4
)
}
func
testGetProofs
(
t
*
testing
.
T
,
protocol
int
)
{
// Assemble the test environment
...
...
@@ -371,6 +377,7 @@ func testGetProofs(t *testing.T, protocol int) {
// Tests that the stale contract codes can't be retrieved based on account addresses.
func
TestGetStaleProofLes2
(
t
*
testing
.
T
)
{
testGetStaleProof
(
t
,
2
)
}
func
TestGetStaleProofLes3
(
t
*
testing
.
T
)
{
testGetStaleProof
(
t
,
3
)
}
func
TestGetStaleProofLes4
(
t
*
testing
.
T
)
{
testGetStaleProof
(
t
,
4
)
}
func
testGetStaleProof
(
t
*
testing
.
T
,
protocol
int
)
{
server
,
tearDown
:=
newServerEnv
(
t
,
core
.
TriesInMemory
+
4
,
protocol
,
nil
,
false
,
true
,
0
)
...
...
@@ -407,6 +414,7 @@ func testGetStaleProof(t *testing.T, protocol int) {
// Tests that CHT proofs can be correctly retrieved.
func
TestGetCHTProofsLes2
(
t
*
testing
.
T
)
{
testGetCHTProofs
(
t
,
2
)
}
func
TestGetCHTProofsLes3
(
t
*
testing
.
T
)
{
testGetCHTProofs
(
t
,
3
)
}
func
TestGetCHTProofsLes4
(
t
*
testing
.
T
)
{
testGetCHTProofs
(
t
,
4
)
}
func
testGetCHTProofs
(
t
*
testing
.
T
,
protocol
int
)
{
config
:=
light
.
TestServerIndexerConfig
...
...
@@ -454,6 +462,7 @@ func testGetCHTProofs(t *testing.T, protocol int) {
func
TestGetBloombitsProofsLes2
(
t
*
testing
.
T
)
{
testGetBloombitsProofs
(
t
,
2
)
}
func
TestGetBloombitsProofsLes3
(
t
*
testing
.
T
)
{
testGetBloombitsProofs
(
t
,
3
)
}
func
TestGetBloombitsProofsLes4
(
t
*
testing
.
T
)
{
testGetBloombitsProofs
(
t
,
4
)
}
// Tests that bloombits proofs can be correctly retrieved.
func
testGetBloombitsProofs
(
t
*
testing
.
T
,
protocol
int
)
{
...
...
@@ -503,6 +512,7 @@ func testGetBloombitsProofs(t *testing.T, protocol int) {
func
TestTransactionStatusLes2
(
t
*
testing
.
T
)
{
testTransactionStatus
(
t
,
2
)
}
func
TestTransactionStatusLes3
(
t
*
testing
.
T
)
{
testTransactionStatus
(
t
,
3
)
}
func
TestTransactionStatusLes4
(
t
*
testing
.
T
)
{
testTransactionStatus
(
t
,
4
)
}
func
testTransactionStatus
(
t
*
testing
.
T
,
protocol
int
)
{
server
,
tearDown
:=
newServerEnv
(
t
,
0
,
protocol
,
nil
,
false
,
true
,
0
)
...
...
les/odr_test.go
View file @
7d1b711c
...
...
@@ -40,6 +40,7 @@ type odrTestFn func(ctx context.Context, db ethdb.Database, config *params.Chain
func
TestOdrGetBlockLes2
(
t
*
testing
.
T
)
{
testOdr
(
t
,
2
,
1
,
true
,
odrGetBlock
)
}
func
TestOdrGetBlockLes3
(
t
*
testing
.
T
)
{
testOdr
(
t
,
3
,
1
,
true
,
odrGetBlock
)
}
func
TestOdrGetBlockLes4
(
t
*
testing
.
T
)
{
testOdr
(
t
,
4
,
1
,
true
,
odrGetBlock
)
}
func
odrGetBlock
(
ctx
context
.
Context
,
db
ethdb
.
Database
,
config
*
params
.
ChainConfig
,
bc
*
core
.
BlockChain
,
lc
*
light
.
LightChain
,
bhash
common
.
Hash
)
[]
byte
{
var
block
*
types
.
Block
...
...
@@ -57,6 +58,7 @@ func odrGetBlock(ctx context.Context, db ethdb.Database, config *params.ChainCon
func
TestOdrGetReceiptsLes2
(
t
*
testing
.
T
)
{
testOdr
(
t
,
2
,
1
,
true
,
odrGetReceipts
)
}
func
TestOdrGetReceiptsLes3
(
t
*
testing
.
T
)
{
testOdr
(
t
,
3
,
1
,
true
,
odrGetReceipts
)
}
func
TestOdrGetReceiptsLes4
(
t
*
testing
.
T
)
{
testOdr
(
t
,
4
,
1
,
true
,
odrGetReceipts
)
}
func
odrGetReceipts
(
ctx
context
.
Context
,
db
ethdb
.
Database
,
config
*
params
.
ChainConfig
,
bc
*
core
.
BlockChain
,
lc
*
light
.
LightChain
,
bhash
common
.
Hash
)
[]
byte
{
var
receipts
types
.
Receipts
...
...
@@ -78,6 +80,7 @@ func odrGetReceipts(ctx context.Context, db ethdb.Database, config *params.Chain
func
TestOdrAccountsLes2
(
t
*
testing
.
T
)
{
testOdr
(
t
,
2
,
1
,
true
,
odrAccounts
)
}
func
TestOdrAccountsLes3
(
t
*
testing
.
T
)
{
testOdr
(
t
,
3
,
1
,
true
,
odrAccounts
)
}
func
TestOdrAccountsLes4
(
t
*
testing
.
T
)
{
testOdr
(
t
,
4
,
1
,
true
,
odrAccounts
)
}
func
odrAccounts
(
ctx
context
.
Context
,
db
ethdb
.
Database
,
config
*
params
.
ChainConfig
,
bc
*
core
.
BlockChain
,
lc
*
light
.
LightChain
,
bhash
common
.
Hash
)
[]
byte
{
dummyAddr
:=
common
.
HexToAddress
(
"1234567812345678123456781234567812345678"
)
...
...
@@ -107,6 +110,7 @@ func odrAccounts(ctx context.Context, db ethdb.Database, config *params.ChainCon
func
TestOdrContractCallLes2
(
t
*
testing
.
T
)
{
testOdr
(
t
,
2
,
2
,
true
,
odrContractCall
)
}
func
TestOdrContractCallLes3
(
t
*
testing
.
T
)
{
testOdr
(
t
,
3
,
2
,
true
,
odrContractCall
)
}
func
TestOdrContractCallLes4
(
t
*
testing
.
T
)
{
testOdr
(
t
,
4
,
2
,
true
,
odrContractCall
)
}
type
callmsg
struct
{
types
.
Message
...
...
@@ -159,6 +163,7 @@ func odrContractCall(ctx context.Context, db ethdb.Database, config *params.Chai
func
TestOdrTxStatusLes2
(
t
*
testing
.
T
)
{
testOdr
(
t
,
2
,
1
,
false
,
odrTxStatus
)
}
func
TestOdrTxStatusLes3
(
t
*
testing
.
T
)
{
testOdr
(
t
,
3
,
1
,
false
,
odrTxStatus
)
}
func
TestOdrTxStatusLes4
(
t
*
testing
.
T
)
{
testOdr
(
t
,
4
,
1
,
false
,
odrTxStatus
)
}
func
odrTxStatus
(
ctx
context
.
Context
,
db
ethdb
.
Database
,
config
*
params
.
ChainConfig
,
bc
*
core
.
BlockChain
,
lc
*
light
.
LightChain
,
bhash
common
.
Hash
)
[]
byte
{
var
txs
types
.
Transactions
...
...
les/protocol.go
View file @
7d1b711c
...
...
@@ -39,8 +39,8 @@ const (
// Supported versions of the les protocol (first is primary)
var
(
ClientProtocolVersions
=
[]
uint
{
lpv2
,
lpv3
}
ServerProtocolVersions
=
[]
uint
{
lpv2
,
lpv3
}
ClientProtocolVersions
=
[]
uint
{
lpv2
,
lpv3
,
lpv4
}
ServerProtocolVersions
=
[]
uint
{
lpv2
,
lpv3
,
lpv4
}
AdvertiseProtocolVersions
=
[]
uint
{
lpv2
}
// clients are searching for the first advertised protocol in the list
)
...
...
les/request_test.go
View file @
7d1b711c
...
...
@@ -38,6 +38,7 @@ type accessTestFn func(db ethdb.Database, bhash common.Hash, number uint64) ligh
func
TestBlockAccessLes2
(
t
*
testing
.
T
)
{
testAccess
(
t
,
2
,
tfBlockAccess
)
}
func
TestBlockAccessLes3
(
t
*
testing
.
T
)
{
testAccess
(
t
,
3
,
tfBlockAccess
)
}
func
TestBlockAccessLes4
(
t
*
testing
.
T
)
{
testAccess
(
t
,
4
,
tfBlockAccess
)
}
func
tfBlockAccess
(
db
ethdb
.
Database
,
bhash
common
.
Hash
,
number
uint64
)
light
.
OdrRequest
{
return
&
light
.
BlockRequest
{
Hash
:
bhash
,
Number
:
number
}
...
...
@@ -45,6 +46,7 @@ func tfBlockAccess(db ethdb.Database, bhash common.Hash, number uint64) light.Od
func
TestReceiptsAccessLes2
(
t
*
testing
.
T
)
{
testAccess
(
t
,
2
,
tfReceiptsAccess
)
}
func
TestReceiptsAccessLes3
(
t
*
testing
.
T
)
{
testAccess
(
t
,
3
,
tfReceiptsAccess
)
}
func
TestReceiptsAccessLes4
(
t
*
testing
.
T
)
{
testAccess
(
t
,
4
,
tfReceiptsAccess
)
}
func
tfReceiptsAccess
(
db
ethdb
.
Database
,
bhash
common
.
Hash
,
number
uint64
)
light
.
OdrRequest
{
return
&
light
.
ReceiptsRequest
{
Hash
:
bhash
,
Number
:
number
}
...
...
@@ -52,6 +54,7 @@ func tfReceiptsAccess(db ethdb.Database, bhash common.Hash, number uint64) light
func
TestTrieEntryAccessLes2
(
t
*
testing
.
T
)
{
testAccess
(
t
,
2
,
tfTrieEntryAccess
)
}
func
TestTrieEntryAccessLes3
(
t
*
testing
.
T
)
{
testAccess
(
t
,
3
,
tfTrieEntryAccess
)
}
func
TestTrieEntryAccessLes4
(
t
*
testing
.
T
)
{
testAccess
(
t
,
4
,
tfTrieEntryAccess
)
}
func
tfTrieEntryAccess
(
db
ethdb
.
Database
,
bhash
common
.
Hash
,
number
uint64
)
light
.
OdrRequest
{
if
number
:=
rawdb
.
ReadHeaderNumber
(
db
,
bhash
);
number
!=
nil
{
...
...
@@ -62,6 +65,7 @@ func tfTrieEntryAccess(db ethdb.Database, bhash common.Hash, number uint64) ligh
func
TestCodeAccessLes2
(
t
*
testing
.
T
)
{
testAccess
(
t
,
2
,
tfCodeAccess
)
}
func
TestCodeAccessLes3
(
t
*
testing
.
T
)
{
testAccess
(
t
,
3
,
tfCodeAccess
)
}
func
TestCodeAccessLes4
(
t
*
testing
.
T
)
{
testAccess
(
t
,
4
,
tfCodeAccess
)
}
func
tfCodeAccess
(
db
ethdb
.
Database
,
bhash
common
.
Hash
,
num
uint64
)
light
.
OdrRequest
{
number
:=
rawdb
.
ReadHeaderNumber
(
db
,
bhash
)
...
...
les/test_helper.go
View file @
7d1b711c
...
...
@@ -35,6 +35,7 @@ import (
"github.com/ethereum/go-ethereum/consensus/ethash"
"github.com/ethereum/go-ethereum/contracts/checkpointoracle/contract"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/forkid"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
...
...
@@ -344,7 +345,8 @@ func newTestPeer(t *testing.T, name string, version int, handler *serverHandler,
head
=
handler
.
blockchain
.
CurrentHeader
()
td
=
handler
.
blockchain
.
GetTd
(
head
.
Hash
(),
head
.
Number
.
Uint64
())
)
tp
.
handshake
(
t
,
td
,
head
.
Hash
(),
head
.
Number
.
Uint64
(),
genesis
.
Hash
(),
testCostList
(
testCost
))
forkID
:=
forkid
.
NewID
(
handler
.
blockchain
.
Config
(),
genesis
.
Hash
(),
head
.
Number
.
Uint64
())
tp
.
handshake
(
t
,
td
,
head
.
Hash
(),
head
.
Number
.
Uint64
(),
genesis
.
Hash
(),
forkID
,
testCostList
(
testCost
))
}
return
tp
,
errCh
}
...
...
@@ -402,7 +404,7 @@ func newTestPeerPair(name string, version int, server *serverHandler, client *cl
// handshake simulates a trivial handshake that expects the same state from the
// remote side as we are simulating locally.
func
(
p
*
testPeer
)
handshake
(
t
*
testing
.
T
,
td
*
big
.
Int
,
head
common
.
Hash
,
headNum
uint64
,
genesis
common
.
Hash
,
costList
RequestCostList
)
{
func
(
p
*
testPeer
)
handshake
(
t
*
testing
.
T
,
td
*
big
.
Int
,
head
common
.
Hash
,
headNum
uint64
,
genesis
common
.
Hash
,
forkID
forkid
.
ID
,
costList
RequestCostList
)
{
var
expList
keyValueList
expList
=
expList
.
add
(
"protocolVersion"
,
uint64
(
p
.
cpeer
.
version
))
expList
=
expList
.
add
(
"networkId"
,
uint64
(
NetworkId
))
...
...
@@ -410,6 +412,9 @@ func (p *testPeer) handshake(t *testing.T, td *big.Int, head common.Hash, headNu
expList
=
expList
.
add
(
"headHash"
,
head
)
expList
=
expList
.
add
(
"headNum"
,
headNum
)
expList
=
expList
.
add
(
"genesisHash"
,
genesis
)
if
p
.
cpeer
.
version
>=
lpv4
{
expList
=
expList
.
add
(
"forkID"
,
&
forkID
)
}
sendList
:=
make
(
keyValueList
,
len
(
expList
))
copy
(
sendList
,
expList
)
expList
=
expList
.
add
(
"serveHeaders"
,
nil
)
...
...
@@ -417,6 +422,9 @@ func (p *testPeer) handshake(t *testing.T, td *big.Int, head common.Hash, headNu
expList
=
expList
.
add
(
"serveStateSince"
,
uint64
(
0
))
expList
=
expList
.
add
(
"serveRecentState"
,
uint64
(
core
.
TriesInMemory
-
4
))
expList
=
expList
.
add
(
"txRelay"
,
nil
)
if
p
.
cpeer
.
version
>=
lpv4
{
expList
=
expList
.
add
(
"recentTxLookup"
,
uint64
(
0
))
}
expList
=
expList
.
add
(
"flowControl/BL"
,
testBufLimit
)
expList
=
expList
.
add
(
"flowControl/MRR"
,
testBufRecharge
)
expList
=
expList
.
add
(
"flowControl/MRC"
,
costList
)
...
...
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