Skip to content

[pull] master from bnb-chain:master#126

Merged
pull[bot] merged 20 commits intodysnix:masterfrom
bnb-chain:master
Mar 24, 2026
Merged

[pull] master from bnb-chain:master#126
pull[bot] merged 20 commits intodysnix:masterfrom
bnb-chain:master

Conversation

@pull
Copy link

@pull pull bot commented Mar 24, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

fjl and others added 20 commits March 11, 2026 16:50
This adds a new type wrapper that decodes as a list, but does not
actually decode the contents of the list. The type parameter exists as a
marker, and enables decoding the elements lazily. RawList can also be
used for building a list incrementally.
Most uses of the iterator are like this:

    it, _ := rlp.NewListIterator(data)
    for it.Next() {
        do(it.Value())
    }

This doesn't require the iterator to be a pointer and it's better to
have it stack-allocated. AFAIK the compiler cannot prove it is OK to
stack-allocate when it is returned as a pointer because the methods of
`Iterator` use pointer receiver and also mutate the object.

The iterator type was not exported until very recently, so I think it is
still OK to change this API.
This is helpful when building a list from already-encoded elements.
This changes `RawList` to ensure the count of items is always valid.
Lists with invalid structure, i.e. ones where an element exceeds the
size of the container, are now detected during decoding of the `RawList`
and thus cannot exist.

Also remove `RawList.Empty` since it is now fully redundant, and
`Iterator.Count` since it returns incorrect results in the presence of
invalid input. There are no callers of these methods (yet).
I removed `Iterator.Count` in #33840, because it appeared to be unused
and did not provide the documented invariant: the returned count should
always be an upper bound on the number of iterations allowed by `Next`.

In order to make `Count` work, the semantics of `CountValues` has to
change to return the number of items up and including the invalid one. I
have reviewed all callsites of `CountValues` to assess if changing this
is safe. There aren't that many, and the only call that doesn't check
the error and return is in the trie node parser,
`trie.decodeNodeUnsafe`. There, we distinguish the node type based on
the number of items, and it previously returned an error for item count
zero. In order to avoid any potential issue that could result from this
change, I'm adding an error check in that function, though it isn't
necessary.
…#33835)

This changes the p2p protocol handlers to delay message decoding. It's
the first part of a larger change that will delay decoding all the way
through message processing. For responses, we delay the decoding until
it is confirmed that the response matches an active request and does not
exceed its limits.

In order to make this work, all messages have been changed to use
rlp.RawList instead of a slice of the decoded item type. For block
bodies specifically, the decoding has been delayed all the way until
after verification of the response hash.

The role of p2p/tracker.Tracker changes significantly in this PR. The
Tracker's original purpose was to maintain metrics about requests and
responses in the peer-to-peer protocols. Each protocol maintained a
single global Tracker instance. As of this change, the Tracker is now
always active (regardless of metrics collection), and there is a
separate instance of it for each peer. Whenever a response arrives, it
is first verified that a request exists for it in the tracker. The
tracker is also the place where limits are kept.
* miner: support blob sidecar validation for bids

* fix: add more blobcheck for bid
The heredoc in oss-fuzz.sh writes `#/bin/sh` instead of `#!/bin/sh`
as the shebang line of generated fuzz test runner scripts. Without
the `!`, the kernel does not recognize the script as having an
interpreter directive, causing execution failures on systems that
don't fall back to the default shell for shebang-less scripts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: add missing '!' in shebang of generated fuzz scripts
eth: delayed p2p message decoding
* core: reject future chasing heads for DA checks

* core: review fixes
merge: develop to master for v1.7.2
@pull pull bot locked and limited conversation to collaborators Mar 24, 2026
@pull pull bot added the ⤵️ pull label Mar 24, 2026
@pull pull bot merged commit 90bc7b4 into dysnix:master Mar 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants