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 errwithout 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