eth/protocols/eth: put latest snap block in handshake

This commit is contained in:
Felix Lange 2025-04-16 17:08:31 +02:00
parent 12eade0fef
commit 1fa7e70da4

View file

@ -96,10 +96,12 @@ func (p *Peer) handshake69(networkID uint64, chain *core.BlockChain) error {
var ( var (
genesis = chain.Genesis() genesis = chain.Genesis()
latest = chain.CurrentBlock() latest = chain.CurrentBlock()
latestSnap = chain.CurrentSnapBlock()
forkID = forkid.NewID(chain.Config(), genesis, latest.Number.Uint64(), latest.Time) forkID = forkid.NewID(chain.Config(), genesis, latest.Number.Uint64(), latest.Time)
forkFilter = forkid.NewFilter(chain) forkFilter = forkid.NewFilter(chain)
earliest, _ = chain.HistoryPruningCutoff() earliest, _ = chain.HistoryPruningCutoff()
) )
errc := make(chan error, 2) errc := make(chan error, 2)
go func() { go func() {
pkt := &StatusPacket69{ pkt := &StatusPacket69{
@ -108,8 +110,13 @@ func (p *Peer) handshake69(networkID uint64, chain *core.BlockChain) error {
Genesis: genesis.Hash(), Genesis: genesis.Hash(),
ForkID: forkID, ForkID: forkID,
EarliestBlock: earliest, EarliestBlock: earliest,
LatestBlock: latest.Number.Uint64(), }
LatestBlockHash: latest.Hash(), if latestSnap != nil && latestSnap.Number.Uint64() > latest.Number.Uint64() {
pkt.LatestBlock = latestSnap.Number.Uint64()
pkt.LatestBlockHash = latestSnap.Hash()
} else {
pkt.LatestBlock = latest.Number.Uint64()
pkt.LatestBlockHash = latest.Hash()
} }
errc <- p2p.Send(p.rw, StatusMsg, pkt) errc <- p2p.Send(p.rw, StatusMsg, pkt)
}() }()