Skip to content

handleNewBlockPow

Source (upstream pre-purge) Current
File eth/protocols/eth/handlers.go handlers_pow.go
Symbol handleNewBlock handleNewBlockPow
Ref f4d53133f~1 etc/v1.17.3-full-node

Renamed from handleNewBlock to handleNewBlockPow. Uses return err without errDecode wrapping, consistent with upstream v1.17.3, which no longer wraps handler errors in errDecode.

3-way merge — purge → getc ← upstream

pre-purge≈ adapted (origin inferred by similarity)fork-only
func handleNewBlockPow(backend Backend, msg Decoder, peer *Peer) error {
// Retrieve and decode the propagated block
ann := new(NewBlockPacket)
if err := msg.Decode(ann); err != nil {
return err
}
if err := ann.sanityCheck(); err != nil {
return err
}
if hash := types.CalcUncleHash(ann.Block.Uncles()); hash != ann.Block.UncleHash() {
log.Warn("Propagated block has invalid uncles", "have", hash, "exp", ann.Block.UncleHash())
return nil // TODO(karalabe): return error eventually, but wait a few releases
}
if hash := types.DeriveSha(ann.Block.Transactions(), trie.NewStackTrie(nil)); hash != ann.Block.TxHash() {
log.Warn("Propagated block has invalid body", "have", hash, "exp", ann.Block.TxHash())
return nil // TODO(karalabe): return error eventually, but wait a few releases
}
ann.Block.ReceivedAt = time.Now()
ann.Block.ReceivedFrom = peer
// Mark the peer as owning the block
peer.markBlock(ann.Block.Hash())
return backend.Handle(peer, ann)
}
core-geth validation — +3 -3 | | | |---|---| | File | [`handlers.go`](https://github.com/etclabscore/core-geth/blob/v1.12.20/eth/protocols/eth/handlers.go) | | Symbol | `handleNewBlock` | | Ref | `v1.12.20` |
--- a/core-geth/eth/protocols/eth/handlers.go
+++ b/etc/eth/protocols/eth/handlers_pow.go
@@ -1,8 +1,8 @@
-func handleNewBlock(backend Backend, msg Decoder, peer *Peer) error {
+func handleNewBlockPow(backend Backend, msg Decoder, peer *Peer) error {
    // Retrieve and decode the propagated block
    ann := new(NewBlockPacket)
    if err := msg.Decode(ann); err != nil {
-       return fmt.Errorf("%w: message %v: %v", errDecode, msg, err)
+       return err
    }
    if err := ann.sanityCheck(); err != nil {
        return err
@@ -15,7 +15,7 @@
        log.Warn("Propagated block has invalid body", "have", hash, "exp", ann.Block.TxHash())
        return nil // TODO(karalabe): return error eventually, but wait a few releases
    }
-   ann.Block.ReceivedAt = msg.Time()
+   ann.Block.ReceivedAt = time.Now()
    ann.Block.ReceivedFrom = peer

    // Mark the peer as owning the block

← eth Protocol