|
|
@@ -46,7 +46,6 @@ 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 TestGetBlockHeadersLes1(t *testing.T) { testGetBlockHeaders(t, 1) }
|
|
|
func TestGetBlockHeadersLes2(t *testing.T) { testGetBlockHeaders(t, 2) }
|
|
|
|
|
|
func testGetBlockHeaders(t *testing.T, protocol int) {
|
|
|
@@ -174,7 +173,6 @@ func testGetBlockHeaders(t *testing.T, protocol int) {
|
|
|
}
|
|
|
|
|
|
// Tests that block contents can be retrieved from a remote chain based on their hashes.
|
|
|
-func TestGetBlockBodiesLes1(t *testing.T) { testGetBlockBodies(t, 1) }
|
|
|
func TestGetBlockBodiesLes2(t *testing.T) { testGetBlockBodies(t, 2) }
|
|
|
|
|
|
func testGetBlockBodies(t *testing.T, protocol int) {
|
|
|
@@ -249,7 +247,6 @@ func testGetBlockBodies(t *testing.T, protocol int) {
|
|
|
}
|
|
|
|
|
|
// Tests that the contract codes can be retrieved based on account addresses.
|
|
|
-func TestGetCodeLes1(t *testing.T) { testGetCode(t, 1) }
|
|
|
func TestGetCodeLes2(t *testing.T) { testGetCode(t, 2) }
|
|
|
|
|
|
func testGetCode(t *testing.T, protocol int) {
|
|
|
@@ -281,7 +278,6 @@ func testGetCode(t *testing.T, protocol int) {
|
|
|
}
|
|
|
|
|
|
// Tests that the transaction receipts can be retrieved based on hashes.
|
|
|
-func TestGetReceiptLes1(t *testing.T) { testGetReceipt(t, 1) }
|
|
|
func TestGetReceiptLes2(t *testing.T) { testGetReceipt(t, 2) }
|
|
|
|
|
|
func testGetReceipt(t *testing.T, protocol int) {
|
|
|
@@ -307,7 +303,6 @@ func testGetReceipt(t *testing.T, protocol int) {
|
|
|
}
|
|
|
|
|
|
// Tests that trie merkle proofs can be retrieved
|
|
|
-func TestGetProofsLes1(t *testing.T) { testGetProofs(t, 1) }
|
|
|
func TestGetProofsLes2(t *testing.T) { testGetProofs(t, 2) }
|
|
|
|
|
|
func testGetProofs(t *testing.T, protocol int) {
|
|
|
@@ -316,10 +311,7 @@ func testGetProofs(t *testing.T, protocol int) {
|
|
|
defer tearDown()
|
|
|
bc := server.pm.blockchain.(*core.BlockChain)
|
|
|
|
|
|
- var (
|
|
|
- proofreqs []ProofReq
|
|
|
- proofsV1 [][]rlp.RawValue
|
|
|
- )
|
|
|
+ var proofreqs []ProofReq
|
|
|
proofsV2 := light.NewNodeSet()
|
|
|
|
|
|
accounts := []common.Address{testBankAddress, acc1Addr, acc2Addr, {}}
|
|
|
@@ -334,42 +326,24 @@ func testGetProofs(t *testing.T, protocol int) {
|
|
|
Key: crypto.Keccak256(acc[:]),
|
|
|
}
|
|
|
proofreqs = append(proofreqs, req)
|
|
|
-
|
|
|
- switch protocol {
|
|
|
- case 1:
|
|
|
- var proof light.NodeList
|
|
|
- trie.Prove(crypto.Keccak256(acc[:]), 0, &proof)
|
|
|
- proofsV1 = append(proofsV1, proof)
|
|
|
- case 2:
|
|
|
- trie.Prove(crypto.Keccak256(acc[:]), 0, proofsV2)
|
|
|
- }
|
|
|
+ trie.Prove(crypto.Keccak256(acc[:]), 0, proofsV2)
|
|
|
}
|
|
|
}
|
|
|
// Send the proof request and verify the response
|
|
|
- switch protocol {
|
|
|
- case 1:
|
|
|
- cost := server.tPeer.GetRequestCost(GetProofsV1Msg, len(proofreqs))
|
|
|
- sendRequest(server.tPeer.app, GetProofsV1Msg, 42, cost, proofreqs)
|
|
|
- if err := expectResponse(server.tPeer.app, ProofsV1Msg, 42, testBufLimit, proofsV1); err != nil {
|
|
|
- t.Errorf("proofs mismatch: %v", err)
|
|
|
- }
|
|
|
- case 2:
|
|
|
- cost := server.tPeer.GetRequestCost(GetProofsV2Msg, len(proofreqs))
|
|
|
- sendRequest(server.tPeer.app, GetProofsV2Msg, 42, cost, proofreqs)
|
|
|
- if err := expectResponse(server.tPeer.app, ProofsV2Msg, 42, testBufLimit, proofsV2.NodeList()); err != nil {
|
|
|
- t.Errorf("proofs mismatch: %v", err)
|
|
|
- }
|
|
|
+ cost := server.tPeer.GetRequestCost(GetProofsV2Msg, len(proofreqs))
|
|
|
+ sendRequest(server.tPeer.app, GetProofsV2Msg, 42, cost, proofreqs)
|
|
|
+ if err := expectResponse(server.tPeer.app, ProofsV2Msg, 42, testBufLimit, proofsV2.NodeList()); err != nil {
|
|
|
+ t.Errorf("proofs mismatch: %v", err)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Tests that CHT proofs can be correctly retrieved.
|
|
|
-func TestGetCHTProofsLes1(t *testing.T) { testGetCHTProofs(t, 1) }
|
|
|
func TestGetCHTProofsLes2(t *testing.T) { testGetCHTProofs(t, 2) }
|
|
|
|
|
|
func testGetCHTProofs(t *testing.T, protocol int) {
|
|
|
config := light.TestServerIndexerConfig
|
|
|
frequency := config.ChtSize
|
|
|
- if protocol == 2 {
|
|
|
+ if protocol == 2 { //qqq
|
|
|
frequency = config.PairChtSize
|
|
|
}
|
|
|
|
|
|
@@ -395,31 +369,13 @@ func testGetCHTProofs(t *testing.T, protocol int) {
|
|
|
key := make([]byte, 8)
|
|
|
binary.BigEndian.PutUint64(key, frequency-1)
|
|
|
|
|
|
- proofsV1 := []ChtResp{{
|
|
|
- Header: header,
|
|
|
- }}
|
|
|
proofsV2 := HelperTrieResps{
|
|
|
AuxData: [][]byte{rlp},
|
|
|
}
|
|
|
- switch protocol {
|
|
|
- case 1:
|
|
|
- root := light.GetChtRoot(server.db, 0, bc.GetHeaderByNumber(frequency-1).Hash())
|
|
|
- trie, _ := trie.New(root, trie.NewDatabase(rawdb.NewTable(server.db, light.ChtTablePrefix)))
|
|
|
-
|
|
|
- var proof light.NodeList
|
|
|
- trie.Prove(key, 0, &proof)
|
|
|
- proofsV1[0].Proof = proof
|
|
|
-
|
|
|
- case 2:
|
|
|
- root := light.GetChtRoot(server.db, (frequency/config.ChtSize)-1, bc.GetHeaderByNumber(frequency-1).Hash())
|
|
|
- trie, _ := trie.New(root, trie.NewDatabase(rawdb.NewTable(server.db, light.ChtTablePrefix)))
|
|
|
- trie.Prove(key, 0, &proofsV2.Proofs)
|
|
|
- }
|
|
|
+ root := light.GetChtRoot(server.db, (frequency/config.ChtSize)-1, bc.GetHeaderByNumber(frequency-1).Hash())
|
|
|
+ trie, _ := trie.New(root, trie.NewDatabase(rawdb.NewTable(server.db, light.ChtTablePrefix)))
|
|
|
+ trie.Prove(key, 0, &proofsV2.Proofs)
|
|
|
// Assemble the requests for the different protocols
|
|
|
- requestsV1 := []ChtReq{{
|
|
|
- ChtNum: frequency / config.ChtSize,
|
|
|
- BlockNum: frequency - 1,
|
|
|
- }}
|
|
|
requestsV2 := []HelperTrieReq{{
|
|
|
Type: htCanonical,
|
|
|
TrieIdx: frequency/config.PairChtSize - 1,
|
|
|
@@ -427,19 +383,10 @@ func testGetCHTProofs(t *testing.T, protocol int) {
|
|
|
AuxReq: auxHeader,
|
|
|
}}
|
|
|
// Send the proof request and verify the response
|
|
|
- switch protocol {
|
|
|
- case 1:
|
|
|
- cost := server.tPeer.GetRequestCost(GetHeaderProofsMsg, len(requestsV1))
|
|
|
- sendRequest(server.tPeer.app, GetHeaderProofsMsg, 42, cost, requestsV1)
|
|
|
- if err := expectResponse(server.tPeer.app, HeaderProofsMsg, 42, testBufLimit, proofsV1); err != nil {
|
|
|
- t.Errorf("proofs mismatch: %v", err)
|
|
|
- }
|
|
|
- case 2:
|
|
|
- cost := server.tPeer.GetRequestCost(GetHelperTrieProofsMsg, len(requestsV2))
|
|
|
- sendRequest(server.tPeer.app, GetHelperTrieProofsMsg, 42, cost, requestsV2)
|
|
|
- if err := expectResponse(server.tPeer.app, HelperTrieProofsMsg, 42, testBufLimit, proofsV2); err != nil {
|
|
|
- t.Errorf("proofs mismatch: %v", err)
|
|
|
- }
|
|
|
+ cost := server.tPeer.GetRequestCost(GetHelperTrieProofsMsg, len(requestsV2))
|
|
|
+ sendRequest(server.tPeer.app, GetHelperTrieProofsMsg, 42, cost, requestsV2)
|
|
|
+ if err := expectResponse(server.tPeer.app, HelperTrieProofsMsg, 42, testBufLimit, proofsV2); err != nil {
|
|
|
+ t.Errorf("proofs mismatch: %v", err)
|
|
|
}
|
|
|
}
|
|
|
|