From f34ccb75e509c35f94f35e16deeebc8755c7d3ae Mon Sep 17 00:00:00 2001
From: Giulio Rebuffo <giulio.rebuffo@gmail.com>
Date: Sun, 7 Nov 2021 20:25:37 +0100
Subject: [PATCH] refactor downloader

---
 README.md                         |  1 -
 cmd/sentry/commands/sentry.go     |  5 --
 cmd/sentry/download/broadcast.go  | 89 ++-----------------------------
 cmd/sentry/download/downloader.go | 10 ----
 cmd/sentry/download/sentry.go     | 25 +--------
 cmd/sentry/download/sentry_api.go | 63 ----------------------
 cmd/utils/flags.go                |  2 -
 eth/backend.go                    | 11 +---
 eth/protocols/eth/peer.go         |  5 +-
 eth/protocols/eth/protocol.go     | 38 +------------
 eth/stagedsync/stage_headers.go   |  1 +
 ethdb/privateapi/ethbackend.go    |  4 ++
 go.mod                            |  2 +-
 go.sum                            |  9 +---
 turbo/txpool/p2p.go               | 29 +---------
 15 files changed, 19 insertions(+), 275 deletions(-)

diff --git a/README.md b/README.md
index abee214bd1..fbb6d83c7d 100644
--- a/README.md
+++ b/README.md
@@ -279,7 +279,6 @@ Detailed explanation: [./docs/programmers_guide/db_faq.md](./docs/programmers_gu
 |  Port |  Protocol |      Purpose     |  Expose |
 |:-----:|:---------:|:----------------:|:-------:|
 | 30303 | TCP & UDP |  eth/66 peering  |  Public |
-| 30304 | TCP & UDP |  eth/65 peering  |  Public |
 |  9090 |    TCP    | gRPC Connections | Private |
 
 Typically 30303 and 30304 are exposed to the internet to allow incoming peering connections. 9090 is exposed only
diff --git a/cmd/sentry/commands/sentry.go b/cmd/sentry/commands/sentry.go
index 6668efecec..0a99fc7b2b 100644
--- a/cmd/sentry/commands/sentry.go
+++ b/cmd/sentry/commands/sentry.go
@@ -4,7 +4,6 @@ import (
 	"fmt"
 	"os"
 	"path"
-	"strings"
 
 	"github.com/ledgerwatch/erigon/cmd/sentry/download"
 	"github.com/ledgerwatch/erigon/cmd/utils"
@@ -70,10 +69,6 @@ var rootCmd = &cobra.Command{
 	},
 	RunE: func(cmd *cobra.Command, args []string) error {
 		p := eth.ETH66
-		switch strings.ToLower(protocol) {
-		case "eth65":
-			p = eth.ETH65
-		}
 
 		nodeConfig := node2.NewNodeConfig()
 		p2pConfig, err := utils.NewP2PConfig(nodiscover, datadir, netRestrict, natSetting, nodeConfig.NodeName(), staticPeers, uint(port), uint(p))
diff --git a/cmd/sentry/download/broadcast.go b/cmd/sentry/download/broadcast.go
index 6b499630b4..57d9471fc3 100644
--- a/cmd/sentry/download/broadcast.go
+++ b/cmd/sentry/download/broadcast.go
@@ -40,25 +40,14 @@ func (cs *ControlServerImpl) PropagateNewBlockHashes(ctx context.Context, announ
 		log.Error("propagateNewBlockHashes", "error", err)
 		return
 	}
-	var req66, req65 *proto_sentry.OutboundMessageData
+	var req66 *proto_sentry.OutboundMessageData
 	for _, sentry := range cs.sentries {
 		if !sentry.Ready() {
 			continue
 		}
 
 		switch sentry.Protocol() {
-		case eth.ETH65:
-			if req65 == nil {
-				req65 = &proto_sentry.OutboundMessageData{
-					Id:   proto_sentry.MessageId_NEW_BLOCK_HASHES_65,
-					Data: data,
-				}
-			}
 
-			_, err = sentry.SendMessageToAll(ctx, req65, &grpc.EmptyCallOption{})
-			if err != nil {
-				log.Error("propagateNewBlockHashes", "error", err)
-			}
 		case eth.ETH66:
 			if req66 == nil {
 				req66 = &proto_sentry.OutboundMessageData{
@@ -87,31 +76,13 @@ func (cs *ControlServerImpl) BroadcastNewBlock(ctx context.Context, block *types
 	if err != nil {
 		log.Error("broadcastNewBlock", "error", err)
 	}
-	var req66, req65 *proto_sentry.SendMessageToRandomPeersRequest
+	var req66 *proto_sentry.SendMessageToRandomPeersRequest
 	for _, sentry := range cs.sentries {
 		if !sentry.Ready() {
 			continue
 		}
 
 		switch sentry.Protocol() {
-		case eth.ETH65:
-			if req65 == nil {
-				req65 = &proto_sentry.SendMessageToRandomPeersRequest{
-					MaxPeers: 1024,
-					Data: &proto_sentry.OutboundMessageData{
-						Id:   proto_sentry.MessageId_NEW_BLOCK_65,
-						Data: data,
-					},
-				}
-			}
-
-			if _, err = sentry.SendMessageToRandomPeers(ctx, req65, &grpc.EmptyCallOption{}); err != nil {
-				if isPeerNotFoundErr(err) || networkTemporaryErr(err) {
-					log.Debug("broadcastNewBlock", "error", err)
-					continue
-				}
-				log.Error("broadcastNewBlock", "error", err)
-			}
 
 		case eth.ETH66:
 			if req66 == nil {
@@ -159,31 +130,13 @@ func (cs *ControlServerImpl) BroadcastLocalPooledTxs(ctx context.Context, txs []
 		if err != nil {
 			log.Error("BroadcastLocalPooledTxs", "error", err)
 		}
-		var req66, req65 *proto_sentry.OutboundMessageData
+		var req66 *proto_sentry.OutboundMessageData
 		for _, sentry := range cs.sentries {
 			if !sentry.Ready() {
 				continue
 			}
 
 			switch sentry.Protocol() {
-			case eth.ETH65:
-				if req65 == nil {
-					req65 = &proto_sentry.OutboundMessageData{
-						Id:   proto_sentry.MessageId_NEW_POOLED_TRANSACTION_HASHES_65,
-						Data: data,
-					}
-				}
-
-				peers, err := sentry.SendMessageToAll(ctx, req65, &grpc.EmptyCallOption{})
-				if err != nil {
-					if isPeerNotFoundErr(err) || networkTemporaryErr(err) {
-						log.Debug("BroadcastLocalPooledTxs", "error", err)
-						continue
-					}
-					log.Error("BroadcastLocalPooledTxs", "error", err)
-				}
-				avgPeersPerSent65 += len(peers.GetPeers())
-
 			case eth.ETH66:
 				if req66 == nil {
 					req66 = &proto_sentry.OutboundMessageData{
@@ -231,31 +184,13 @@ func (cs *ControlServerImpl) BroadcastRemotePooledTxs(ctx context.Context, txs [
 		if err != nil {
 			log.Error("BroadcastRemotePooledTxs", "error", err)
 		}
-		var req66, req65 *proto_sentry.SendMessageToRandomPeersRequest
+		var req66 *proto_sentry.SendMessageToRandomPeersRequest
 		for _, sentry := range cs.sentries {
 			if !sentry.Ready() {
 				continue
 			}
 
 			switch sentry.Protocol() {
-			case eth.ETH65:
-				if req65 == nil {
-					req65 = &proto_sentry.SendMessageToRandomPeersRequest{
-						MaxPeers: 1024,
-						Data: &proto_sentry.OutboundMessageData{
-							Id:   proto_sentry.MessageId_NEW_POOLED_TRANSACTION_HASHES_65,
-							Data: data,
-						},
-					}
-				}
-
-				if _, err = sentry.SendMessageToRandomPeers(ctx, req65, &grpc.EmptyCallOption{}); err != nil {
-					if isPeerNotFoundErr(err) || networkTemporaryErr(err) {
-						log.Debug("BroadcastRemotePooledTxs", "error", err)
-						continue
-					}
-					log.Error("BroadcastRemotePooledTxs", "error", err)
-				}
 
 			case eth.ETH66:
 				if req66 == nil {
@@ -307,22 +242,6 @@ func (cs *ControlServerImpl) PropagatePooledTxsToPeersList(ctx context.Context,
 
 			for _, peer := range peers {
 				switch sentry.Protocol() {
-				case eth.ETH65:
-					req65 := &proto_sentry.SendMessageByIdRequest{
-						PeerId: peer,
-						Data: &proto_sentry.OutboundMessageData{
-							Id:   proto_sentry.MessageId_NEW_POOLED_TRANSACTION_HASHES_65,
-							Data: data,
-						},
-					}
-
-					if _, err = sentry.SendMessageById(ctx, req65, &grpc.EmptyCallOption{}); err != nil {
-						if isPeerNotFoundErr(err) || networkTemporaryErr(err) {
-							log.Debug("broadcastNewBlock", "error", err)
-							continue
-						}
-						log.Error("broadcastNewBlock", "error", err)
-					}
 
 				case eth.ETH66:
 					req66 := &proto_sentry.SendMessageByIdRequest{
diff --git a/cmd/sentry/download/downloader.go b/cmd/sentry/download/downloader.go
index 2095d511e1..94f7441c8e 100644
--- a/cmd/sentry/download/downloader.go
+++ b/cmd/sentry/download/downloader.go
@@ -99,9 +99,6 @@ func RecvUploadMessage(ctx context.Context,
 	defer cancel()
 
 	stream, err := sentry.Messages(streamCtx, &proto_sentry.MessagesRequest{Ids: []proto_sentry.MessageId{
-		eth.ToProto[eth.ETH65][eth.GetBlockBodiesMsg],
-		eth.ToProto[eth.ETH65][eth.GetReceiptsMsg],
-
 		eth.ToProto[eth.ETH66][eth.GetBlockBodiesMsg],
 		eth.ToProto[eth.ETH66][eth.GetReceiptsMsg],
 	}}, grpc.WaitForReady(true))
@@ -194,8 +191,6 @@ func RecvUploadHeadersMessage(ctx context.Context,
 	defer cancel()
 
 	stream, err := sentry.Messages(streamCtx, &proto_sentry.MessagesRequest{Ids: []proto_sentry.MessageId{
-		eth.ToProto[eth.ETH65][eth.GetBlockHeadersMsg],
-
 		eth.ToProto[eth.ETH66][eth.GetBlockHeadersMsg],
 	}}, grpc.WaitForReady(true))
 	if err != nil {
@@ -292,11 +287,6 @@ func RecvMessage(
 	defer sentry.MarkDisconnected()
 
 	stream, err := sentry.Messages(streamCtx, &proto_sentry.MessagesRequest{Ids: []proto_sentry.MessageId{
-		eth.ToProto[eth.ETH65][eth.BlockHeadersMsg],
-		eth.ToProto[eth.ETH65][eth.BlockBodiesMsg],
-		eth.ToProto[eth.ETH65][eth.NewBlockHashesMsg],
-		eth.ToProto[eth.ETH65][eth.NewBlockMsg],
-
 		eth.ToProto[eth.ETH66][eth.BlockHeadersMsg],
 		eth.ToProto[eth.ETH66][eth.BlockBodiesMsg],
 		eth.ToProto[eth.ETH66][eth.NewBlockHashesMsg],
diff --git a/cmd/sentry/download/sentry.go b/cmd/sentry/download/sentry.go
index e2c077eef2..b04ddc9a17 100644
--- a/cmd/sentry/download/sentry.go
+++ b/cmd/sentry/download/sentry.go
@@ -450,7 +450,7 @@ func NewSentryServer(ctx context.Context, dialCandidates enode.Iterator, readNod
 		peersStreams: NewPeersStreams(),
 	}
 
-	if protocol != eth.ETH65 && protocol != eth.ETH66 {
+	if protocol != eth.ETH66 {
 		panic(fmt.Errorf("unexpected p2p protocol: %d", protocol))
 	}
 
@@ -551,27 +551,6 @@ type SentryServerImpl struct {
 
 func (ss *SentryServerImpl) startSync(ctx context.Context, bestHash common.Hash, peerID string) error {
 	switch ss.Protocol.Version {
-	case eth.ETH65:
-		b, err := rlp.EncodeToBytes(&eth.GetBlockHeadersPacket{
-			Amount:  1,
-			Reverse: false,
-			Skip:    0,
-			Origin:  eth.HashOrNumber{Hash: bestHash},
-		})
-		if err != nil {
-			return fmt.Errorf("startSync encode packet failed: %w", err)
-		}
-
-		if _, err := ss.SendMessageById(ctx, &proto_sentry.SendMessageByIdRequest{
-			PeerId: gointerfaces.ConvertBytesToH512([]byte(peerID)),
-			Data: &proto_sentry.OutboundMessageData{
-				Id:   proto_sentry.MessageId_GET_BLOCK_HEADERS_65,
-				Data: b,
-			},
-		}); err != nil {
-			return err
-		}
-
 	case eth.ETH66:
 		b, err := rlp.EncodeToBytes(&eth.GetBlockHeadersPacket66{
 			RequestId: rand.Uint64(),
@@ -794,8 +773,6 @@ func (ss *SentryServerImpl) HandShake(context.Context, *emptypb.Empty) (*proto_s
 	switch ss.Protocol.Version {
 	case eth.ETH66:
 		reply.Protocol = proto_sentry.Protocol_ETH66
-	case eth.ETH65:
-		reply.Protocol = proto_sentry.Protocol_ETH65
 	}
 	return reply, nil
 }
diff --git a/cmd/sentry/download/sentry_api.go b/cmd/sentry/download/sentry_api.go
index a45bb5ba3e..5f2b268650 100644
--- a/cmd/sentry/download/sentry_api.go
+++ b/cmd/sentry/download/sentry_api.go
@@ -64,32 +64,6 @@ func (cs *ControlServerImpl) SendBodyRequest(ctx context.Context, req *bodydownl
 				},
 			}
 
-			sentPeers, err1 := cs.sentries[i].SendMessageByMinBlock(ctx, &outreq, &grpc.EmptyCallOption{})
-			if err1 != nil {
-				log.Error("Could not send block bodies request", "err", err1)
-				return nil
-			}
-			if sentPeers == nil || len(sentPeers.Peers) == 0 {
-				continue
-			}
-			return gointerfaces.ConvertH512ToBytes(sentPeers.Peers[0])
-		case eth.ETH65:
-			//log.Info(fmt.Sprintf("Sending body request for %v", req.BlockNums))
-			var bytes []byte
-			var err error
-			bytes, err = rlp.EncodeToBytes(eth.GetBlockBodiesPacket(req.Hashes))
-			if err != nil {
-				log.Error("Could not encode block bodies request", "err", err)
-				return nil
-			}
-			outreq := proto_sentry.SendMessageByMinBlockRequest{
-				MinBlock: req.BlockNums[len(req.BlockNums)-1],
-				Data: &proto_sentry.OutboundMessageData{
-					Id:   proto_sentry.MessageId_GET_BLOCK_BODIES_65,
-					Data: bytes,
-				},
-			}
-
 			sentPeers, err1 := cs.sentries[i].SendMessageByMinBlock(ctx, &outreq, &grpc.EmptyCallOption{})
 			if err1 != nil {
 				log.Error("Could not send block bodies request", "err", err1)
@@ -151,43 +125,6 @@ func (cs *ControlServerImpl) SendHeaderRequest(ctx context.Context, req *headerd
 				continue
 			}
 			return gointerfaces.ConvertH512ToBytes(sentPeers.Peers[0])
-		case eth.ETH65:
-			//log.Info(fmt.Sprintf("Sending header request {hash: %x, height: %d, length: %d}", req.Hash, req.Number, req.Length))
-			reqData := &eth.GetBlockHeadersPacket{
-				Amount:  req.Length,
-				Reverse: req.Reverse,
-				Skip:    req.Skip,
-				Origin:  eth.HashOrNumber{Hash: req.Hash},
-			}
-			if req.Hash == (common.Hash{}) {
-				reqData.Origin.Number = req.Number
-			}
-			bytes, err := rlp.EncodeToBytes(reqData)
-			if err != nil {
-				log.Error("Could not encode header request", "err", err)
-				return nil
-			}
-			minBlock := req.Number
-			if !req.Reverse {
-				minBlock = req.Number + req.Length*req.Skip
-			}
-
-			outreq := proto_sentry.SendMessageByMinBlockRequest{
-				MinBlock: minBlock,
-				Data: &proto_sentry.OutboundMessageData{
-					Id:   proto_sentry.MessageId_GET_BLOCK_HEADERS_65,
-					Data: bytes,
-				},
-			}
-			sentPeers, err1 := cs.sentries[i].SendMessageByMinBlock(ctx, &outreq, &grpc.EmptyCallOption{})
-			if err1 != nil {
-				log.Error("Could not send header request", "err", err1)
-				return nil
-			}
-			if sentPeers == nil || len(sentPeers.Peers) == 0 {
-				continue
-			}
-			return gointerfaces.ConvertH512ToBytes(sentPeers.Peers[0])
 		}
 	}
 	return nil
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index bc3534924c..3ef6e34af7 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -698,8 +698,6 @@ func SetStaticPeers(cfg *p2p.Config, urls []string) error {
 func NewP2PConfig(nodiscover bool, datadir, netRestrict, natSetting, nodeName string, staticPeers []string, port, protocol uint) (*p2p.Config, error) {
 	var enodeDBPath string
 	switch protocol {
-	case eth.ETH65:
-		enodeDBPath = path.Join(datadir, "nodes", "eth65")
 	case eth.ETH66:
 		enodeDBPath = path.Join(datadir, "nodes", "eth66")
 	default:
diff --git a/eth/backend.go b/eth/backend.go
index 93a546ec6d..367aa21995 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -282,16 +282,7 @@ func New(stack *node.Node, config *ethconfig.Config, logger log.Logger) (*Ethere
 		server66 := download.NewSentryServer(backend.downloadCtx, d66, readNodeInfo, &cfg66, eth.ETH66)
 		backend.sentryServers = append(backend.sentryServers, server66)
 		backend.sentries = []direct.SentryClient{direct.NewSentryClientDirect(eth.ETH66, server66)}
-		cfg65 := stack.Config().P2P
-		cfg65.NodeDatabase = path.Join(stack.Config().DataDir, "nodes", "eth65")
-		d65, err := setupDiscovery(backend.config.EthDiscoveryURLs)
-		if err != nil {
-			return nil, err
-		}
-		cfg65.ListenAddr = cfg65.ListenAddr65
-		server65 := download.NewSentryServer(backend.downloadCtx, d65, readNodeInfo, &cfg65, eth.ETH65)
-		backend.sentryServers = append(backend.sentryServers, server65)
-		backend.sentries = append(backend.sentries, direct.NewSentryClientDirect(eth.ETH65, server65))
+
 		go func() {
 			logEvery := time.NewTicker(120 * time.Second)
 			defer logEvery.Stop()
diff --git a/eth/protocols/eth/peer.go b/eth/protocols/eth/peer.go
index 9d77725af1..8300533c6c 100644
--- a/eth/protocols/eth/peer.go
+++ b/eth/protocols/eth/peer.go
@@ -108,9 +108,8 @@ func NewPeer(version uint, p *p2p.Peer, rw p2p.MsgReadWriter, txpool TxPool) *Pe
 	// Start up all the broadcasters
 	go peer.broadcastBlocks()
 	go peer.broadcastTransactions()
-	if version >= ETH65 {
-		go peer.announceTransactions()
-	}
+	go peer.announceTransactions()
+
 	return peer
 }
 
diff --git a/eth/protocols/eth/protocol.go b/eth/protocols/eth/protocol.go
index 5392f2cac4..d2305763c9 100644
--- a/eth/protocols/eth/protocol.go
+++ b/eth/protocols/eth/protocol.go
@@ -33,12 +33,10 @@ import (
 
 // Constants to match up protocol versions and messages
 const (
-	ETH65 = 65
 	ETH66 = 66
 )
 
 var ProtocolToString = map[uint]string{
-	ETH65: "eth65",
 	ETH66: "eth66",
 }
 
@@ -48,11 +46,11 @@ const ProtocolName = "eth"
 
 // ProtocolVersions are the supported versions of the `eth` protocol (first
 // is primary).
-var ProtocolVersions = []uint{ETH66, ETH65}
+var ProtocolVersions = []uint{ETH66}
 
 // protocolLengths are the number of implemented message corresponding to
 // different protocol versions.
-var protocolLengths = map[uint]uint64{ETH66: 17, ETH65: 17}
+var protocolLengths = map[uint]uint64{ETH66: 17}
 
 // maxMessageSize is the maximum cap on the size of a protocol message.
 const maxMessageSize = 10 * 1024 * 1024
@@ -99,22 +97,6 @@ var ToString = map[uint]string{
 }
 
 var ToProto = map[uint]map[uint64]proto_sentry.MessageId{
-	ETH65: {
-		GetBlockHeadersMsg:            proto_sentry.MessageId_GET_BLOCK_HEADERS_65,
-		BlockHeadersMsg:               proto_sentry.MessageId_BLOCK_HEADERS_65,
-		GetBlockBodiesMsg:             proto_sentry.MessageId_GET_BLOCK_BODIES_65,
-		BlockBodiesMsg:                proto_sentry.MessageId_BLOCK_BODIES_65,
-		GetNodeDataMsg:                proto_sentry.MessageId_GET_NODE_DATA_65,
-		NodeDataMsg:                   proto_sentry.MessageId_NODE_DATA_65,
-		GetReceiptsMsg:                proto_sentry.MessageId_GET_RECEIPTS_65,
-		ReceiptsMsg:                   proto_sentry.MessageId_RECEIPTS_65,
-		NewBlockHashesMsg:             proto_sentry.MessageId_NEW_BLOCK_HASHES_65,
-		NewBlockMsg:                   proto_sentry.MessageId_NEW_BLOCK_65,
-		TransactionsMsg:               proto_sentry.MessageId_TRANSACTIONS_65,
-		NewPooledTransactionHashesMsg: proto_sentry.MessageId_NEW_POOLED_TRANSACTION_HASHES_65,
-		GetPooledTransactionsMsg:      proto_sentry.MessageId_GET_POOLED_TRANSACTIONS_65,
-		PooledTransactionsMsg:         proto_sentry.MessageId_POOLED_TRANSACTIONS_65,
-	},
 	ETH66: {
 		GetBlockHeadersMsg:            proto_sentry.MessageId_GET_BLOCK_HEADERS_66,
 		BlockHeadersMsg:               proto_sentry.MessageId_BLOCK_HEADERS_66,
@@ -134,22 +116,6 @@ var ToProto = map[uint]map[uint64]proto_sentry.MessageId{
 }
 
 var FromProto = map[uint]map[proto_sentry.MessageId]uint64{
-	ETH65: {
-		proto_sentry.MessageId_GET_BLOCK_HEADERS_65:             GetBlockHeadersMsg,
-		proto_sentry.MessageId_BLOCK_HEADERS_65:                 BlockHeadersMsg,
-		proto_sentry.MessageId_GET_BLOCK_BODIES_65:              GetBlockBodiesMsg,
-		proto_sentry.MessageId_BLOCK_BODIES_65:                  BlockBodiesMsg,
-		proto_sentry.MessageId_GET_NODE_DATA_65:                 GetNodeDataMsg,
-		proto_sentry.MessageId_NODE_DATA_65:                     NodeDataMsg,
-		proto_sentry.MessageId_GET_RECEIPTS_65:                  GetReceiptsMsg,
-		proto_sentry.MessageId_RECEIPTS_65:                      ReceiptsMsg,
-		proto_sentry.MessageId_NEW_BLOCK_HASHES_65:              NewBlockHashesMsg,
-		proto_sentry.MessageId_NEW_BLOCK_65:                     NewBlockMsg,
-		proto_sentry.MessageId_TRANSACTIONS_65:                  TransactionsMsg,
-		proto_sentry.MessageId_NEW_POOLED_TRANSACTION_HASHES_65: NewPooledTransactionHashesMsg,
-		proto_sentry.MessageId_GET_POOLED_TRANSACTIONS_65:       GetPooledTransactionsMsg,
-		proto_sentry.MessageId_POOLED_TRANSACTIONS_65:           PooledTransactionsMsg,
-	},
 	ETH66: {
 		proto_sentry.MessageId_GET_BLOCK_HEADERS_66:             GetBlockHeadersMsg,
 		proto_sentry.MessageId_BLOCK_HEADERS_66:                 BlockHeadersMsg,
diff --git a/eth/stagedsync/stage_headers.go b/eth/stagedsync/stage_headers.go
index 447eb74ba6..35e4cefa6d 100644
--- a/eth/stagedsync/stage_headers.go
+++ b/eth/stagedsync/stage_headers.go
@@ -19,6 +19,7 @@ import (
 	"github.com/ledgerwatch/erigon/params"
 	"github.com/ledgerwatch/erigon/rlp"
 	"github.com/ledgerwatch/erigon/turbo/stages/headerdownload"
+
 	"github.com/ledgerwatch/log/v3"
 )
 
diff --git a/ethdb/privateapi/ethbackend.go b/ethdb/privateapi/ethbackend.go
index c9967323fa..f2d4d59173 100644
--- a/ethdb/privateapi/ethbackend.go
+++ b/ethdb/privateapi/ethbackend.go
@@ -70,6 +70,10 @@ func (s *EthBackendServer) NetPeerCount(_ context.Context, _ *remote.NetPeerCoun
 	return &remote.NetPeerCountReply{Count: id}, nil
 }
 
+func (s *EthBackendServer) EngineExecutePayloadV1(_ context.Context, _ *types2.ExecutionPayload) (*remote.EngineExecutePayloadReply, error) {
+	return nil, nil
+}
+
 func (s *EthBackendServer) Subscribe(r *remote.SubscribeRequest, subscribeServer remote.ETHBACKEND_SubscribeServer) error {
 	log.Trace("Establishing event subscription channel with the RPC daemon ...")
 	s.events.AddHeaderSubscription(func(h *types.Header) error {
diff --git a/go.mod b/go.mod
index ee31c4aeb5..27fe18f95e 100644
--- a/go.mod
+++ b/go.mod
@@ -36,7 +36,7 @@ require (
 	github.com/json-iterator/go v1.1.12
 	github.com/julienschmidt/httprouter v1.3.0
 	github.com/kevinburke/go-bindata v3.21.0+incompatible
-	github.com/ledgerwatch/erigon-lib v0.0.0-20211107024620-98f80aa89ffd
+	github.com/ledgerwatch/erigon-lib v0.0.0-20211107165027-e968953b4a17
 	github.com/ledgerwatch/log/v3 v3.4.0
 	github.com/ledgerwatch/secp256k1 v1.0.0
 	github.com/logrusorgru/aurora/v3 v3.0.0
diff --git a/go.sum b/go.sum
index 077b10549b..ff8088a56b 100644
--- a/go.sum
+++ b/go.sum
@@ -46,7 +46,6 @@ crawshaw.io/sqlite v0.3.3-0.20210127221821-98b1f83c5508 h1:fILCBBFnjnrQ0whVJlGhf
 crawshaw.io/sqlite v0.3.3-0.20210127221821-98b1f83c5508/go.mod h1:igAO5JulrQ1DbdZdtVq48mnZUBAPOeFzer7VhDWNtW4=
 dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
 dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
 dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
 dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
@@ -282,13 +281,11 @@ github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmC
 github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
 github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
 github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
-github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
 github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
 github.com/glycerine/go-unsnap-stream v0.0.0-20210130063903-47dfef350d96/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
 github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
 github.com/glycerine/goconvey v0.0.0-20190315024820-982ee783a72e/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
 github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
-github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
 github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -403,7 +400,6 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR
 github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 github.com/gopherjs/gopherjs v0.0.0-20190309154008-847fc94819f9/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
 github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
 github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
@@ -473,7 +469,6 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
 github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
 github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
 github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
@@ -497,8 +492,8 @@ github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3P
 github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
 github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
 github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/ledgerwatch/erigon-lib v0.0.0-20211107024620-98f80aa89ffd h1:F0/S8NSvXijZIdVjFzFFRMaalN6Y3AxLQvQMY1hS4Ik=
-github.com/ledgerwatch/erigon-lib v0.0.0-20211107024620-98f80aa89ffd/go.mod h1:CuEZROm43MykZT5CjCj02jw0FOwaDl8Nh+PZkTEGopg=
+github.com/ledgerwatch/erigon-lib v0.0.0-20211107165027-e968953b4a17 h1:3aNW8oirJqMT8QTtuMPVlI8iPnRdColXbf2KzFbDMXI=
+github.com/ledgerwatch/erigon-lib v0.0.0-20211107165027-e968953b4a17/go.mod h1:CuEZROm43MykZT5CjCj02jw0FOwaDl8Nh+PZkTEGopg=
 github.com/ledgerwatch/log/v3 v3.4.0 h1:SEIOcv5a2zkG3PmoT5jeTU9m/0nEUv0BJS5bzsjwKCI=
 github.com/ledgerwatch/log/v3 v3.4.0/go.mod h1:VXcz6Ssn6XEeU92dCMc39/g1F0OYAjw1Mt+dGP5DjXY=
 github.com/ledgerwatch/secp256k1 v1.0.0 h1:Usvz87YoTG0uePIV8woOof5cQnLXGYa162rFf3YnwaQ=
diff --git a/turbo/txpool/p2p.go b/turbo/txpool/p2p.go
index 4df920bb6d..fa173335b3 100644
--- a/turbo/txpool/p2p.go
+++ b/turbo/txpool/p2p.go
@@ -151,7 +151,7 @@ func (tp *P2PServer) getPooledTransactions65(ctx context.Context, inreq *proto_s
 }
 
 func (tp *P2PServer) SendTxsRequest(ctx context.Context, peerID string, hashes []common.Hash) []byte {
-	var outreq65, outreq66 *proto_sentry.SendMessageByIdRequest
+	var outreq66 *proto_sentry.SendMessageByIdRequest
 
 	// if sentry not found peers to send such message, try next one. stop if found.
 	for i, ok, next := tp.randSentryIndex(); ok; i, ok = next() {
@@ -160,28 +160,6 @@ func (tp *P2PServer) SendTxsRequest(ctx context.Context, peerID string, hashes [
 		}
 
 		switch tp.Sentries[i].Protocol() {
-		case eth.ETH65:
-			if outreq65 == nil {
-				data65, err := rlp.EncodeToBytes(eth.GetPooledTransactionsPacket(hashes))
-				if err != nil {
-					log.Error("Could not encode transactions request", "err", err)
-					return nil
-				}
-
-				outreq65 = &proto_sentry.SendMessageByIdRequest{
-					PeerId: gointerfaces.ConvertBytesToH512([]byte(peerID)),
-					Data:   &proto_sentry.OutboundMessageData{Id: proto_sentry.MessageId_GET_POOLED_TRANSACTIONS_65, Data: data65},
-				}
-			}
-
-			if sentPeers, err1 := tp.Sentries[i].SendMessageById(ctx, outreq65, &grpc.EmptyCallOption{}); err1 != nil {
-				if isPeerNotFoundErr(err1) {
-					continue
-				}
-				log.Error("[SendTxsRequest]", "err", err1)
-			} else if sentPeers != nil && len(sentPeers.Peers) != 0 {
-				return gointerfaces.ConvertH512ToBytes(sentPeers.Peers[0])
-			}
 		case eth.ETH66:
 			if outreq66 == nil {
 				data66, err := rlp.EncodeToBytes(&eth.GetPooledTransactionsPacket66{
@@ -296,11 +274,6 @@ func RecvTxMessage(ctx context.Context,
 	defer cancel()
 
 	stream, err := sentry.Messages(streamCtx, &proto_sentry.MessagesRequest{Ids: []proto_sentry.MessageId{
-		eth.ToProto[eth.ETH65][eth.NewPooledTransactionHashesMsg],
-		eth.ToProto[eth.ETH65][eth.GetPooledTransactionsMsg],
-		eth.ToProto[eth.ETH65][eth.TransactionsMsg],
-		eth.ToProto[eth.ETH65][eth.PooledTransactionsMsg],
-
 		eth.ToProto[eth.ETH66][eth.NewPooledTransactionHashesMsg],
 		eth.ToProto[eth.ETH66][eth.GetPooledTransactionsMsg],
 		eth.ToProto[eth.ETH66][eth.TransactionsMsg],
-- 
GitLab