merge: develop to master for v1.7.1#3535
Merged
Merged
Conversation
Co-authored-by: Gary Rong <garyrong0905@gmail.com> Co-authored-by: MariusVanDerWijden <m.vanderwijden@live.de>:
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
* feat: support bid block size check for BEP-655 * fix: remove osaka check
* BEP-652: Implement EIP-7825:Transaction Gas Limit Cap * fix: improve code
…umber (#3533) * eip4844.go: limit Blob Transaction Inclusion by Block Number % 5 * eip4844.go: limit Blob Transaction Inclusion by Block Number % 5 * eip4844.go: limit Blob Transaction Inclusion by Block Number % 5 * eip4844.go: limit Blob Transaction Inclusion by Block Number % 5 * eip4844.go: limit Blob Transaction Inclusion by Block Number % 5 * eip4844.go: limit Blob Transaction Inclusion by Block Number % 5
* tests: update version of spec-tests * consensus/misc/eip4844: limit BEP-657 check in bsc protocol * tests: update the bpo1 && bpo2 config to fix spec test (#26) --------- Co-authored-by: Eric <45141191+zlacfzy@users.noreply.github.com>
Co-authored-by: NathanBSC <122502194+NathanBSC@users.noreply.github.com>
* fix: fix nodereal builder address * fix: fix puissant builder address * fix: fix comment
Co-authored-by: Cursor <cursoragent@cursor.com>
Jojad9
approved these changes
Feb 4, 2026
Jojad9
approved these changes
Feb 4, 2026
* READMD: keep latest 3 days history logs * README: fix history.state
shahab2atom
approved these changes
Feb 9, 2026
Fix ECIES invalid-curve handling in RLPx handshake (reject invalid ephemeral pubkeys early) - Add curve validation in crypto/ecies.GenerateShared to reject invalid public keys before ECDH. - Update RLPx PoC test to assert invalid curve points fail with ErrInvalidPublicKey. Motivation / Context RLPx handshake uses ECIES decryption on unauthenticated network input. Prior to this change, an invalid-curve ephemeral public key would proceed into ECDH and only fail at MAC verification, returning ErrInvalidMessage. This allows an oracle on decrypt success/failure and leaves the code path vulnerable to invalid-curve/small-subgroup attacks. The fix enforces IsOnCurve validation up front.
Fix ECIES invalid-curve handling in RLPx handshake (reject invalid ephemeral pubkeys early) - Add curve validation in crypto/ecies.GenerateShared to reject invalid public keys before ECDH. - Update RLPx PoC test to assert invalid curve points fail with ErrInvalidPublicKey. Motivation / Context RLPx handshake uses ECIES decryption on unauthenticated network input. Prior to this change, an invalid-curve ephemeral public key would proceed into ECDH and only fail at MAC verification, returning ErrInvalidMessage. This allows an oracle on decrypt success/failure and leaves the code path vulnerable to invalid-curve/small-subgroup attacks. The fix enforces IsOnCurve validation up front.
upstream: merge geth v1.16.9
* parlia: use parent snapshot for finalized quorum Use the parent block's snapshot instead of the current block's snapshot when computing the validator quorum for fast finality. The current block's snapshot may reflect epoch changes (validator set transitions) that have not yet taken effect, leading to incorrect quorum thresholds. * parlia: improve GetFinalizedHeader --------- Co-authored-by: allformless <213398294+allformless@users.noreply.github.com>
* feehistory.go: add logs * fix: add MaxBlockHistory && MaxHeaderHistory in FullNodeGPO * fix: remove logs
* fix: si * core/vm: align fields ordering in struct EVM with upstream --------- Co-authored-by: NathanBSC <122502194+NathanBSC@users.noreply.github.com>
…ops (#33245) (#3586) The list iterator previously returned true on parse errors without advancing the input, which could lead to non-advancing infinite loops for callers that do not check Err() inside the loop; to make iteration safe while preserving error visibility, Next() now marks the iterator as finished when readKind fails, returning true for the error step so existing users that check Err() can handle it, and then false on subsequent calls, and the function comment was updated to document this behavior and the need to check Err(). Co-authored-by: radik878 <radikpadik76@gmail.com>
…790) (#3587) All five `revert*Request` functions (account, bytecode, storage, trienode heal, bytecode heal) remove the request from the tracked set but never restore the peer to its corresponding idle pool. When a request times out and no response arrives, the peer is permanently lost from the idle pool, preventing new work from being assigned to it. In normal operation mode (snap-sync full state) this bug is masked by pivot movement (which resets idle pools via new Sync() cycles every ~15 minutes) and peer churn (reconnections re-add peers via Register()). However in scenarios like the one I have running my (partial-stateful node)[ethereum/go-ethereum#33764] with long-running sync cycles and few peers, all peers can eventually leak out of the idle pools, stalling sync entirely. Fix: after deleting from the request map, restore the peer to its idle pool if it is still registered (guards against the peer-drop path where Unregister already removed the peer). This mirrors the pattern used in all five On* response handlers. This only seems to manifest in peer-thirstly scenarios as where I find myself when testing snapsync for the partial-statefull node). Still, thought was at least good to raise this point. Unsure if required to discuss or not Co-authored-by: CPerezz <37264926+CPerezz@users.noreply.github.com>
* core/vm: align super-instruction maxStack with raw bounds * core/vm: align super-instruction minStack with raw bounds (#3588) * core/vm: align super-instruction minStack with raw bounds * core/vm: fix comments --------- Co-authored-by: formless <213398294+allformless@users.noreply.github.com>
* consensus/parlia: increment nonce only when tx is included * consensus/parlia: fix comment * consensus/parlia: bit improve
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* params: set Osaka/Mendel time in chapel testnet * changelog: mini adjust
zlacfzy
approved these changes
Mar 13, 2026
flywukong
approved these changes
Mar 13, 2026
zzzckck
approved these changes
Mar 13, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the BSC client for the v1.7.1 release, incorporating Osaka/Mendel hardfork prep, BEP-657 blob-transaction eligibility rules, multiple bug/security fixes, and dependency/test fixture bumps.
Changes:
- Add new fork plumbing (Pasteur) and extend chain config/CLI override support for upcoming fork scheduling.
- Implement BEP-657 blob eligibility by block-number interval across consensus validation, miner/builder logic, and tests.
- Apply multiple fixes: ECIES invalid-curve handling, RLP iterator behavior, snap sync peer idling, super-instruction stack bounds, incremental snapshot tar extraction hardening, and finality notification deduplication.
Reviewed changes
Copilot reviewed 55 out of 57 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| version/version.go | Bump patch version. |
| tests/run-evm-tests.sh | Update execution-spec-tests fixture version. |
| tests/init.go | Adjust blob config parameters. |
| rlp/iterator.go | Iterator error handling changes. |
| README.md | Update fullnode history/log flags. |
| params/protocol_params.go | Add blob eligible interval constant. |
| params/forks/forks.go | Add Pasteur fork identifier/string. |
| params/config.go | Add Pasteur fork config + rules. |
| p2p/rlpx/rlpx_oracle_poc_test.go | Add ECIES invalid-curve oracle test. |
| miner/worker.go | Enforce blob-eligible blocks in tx selection. |
| miner/minerconfig/config.go | Clarify TxGasLimit deprecation comment. |
| miner/bid_simulator.go | Bid gas/size checks + blob eligibility enforcement. |
| go.mod | Dependency version bumps. |
| go.sum | Dependency checksum updates. |
| ethclient/simulated/rollback_test.go | Adjust simulated rollback test for BEP-657. |
| eth/tracers/api.go | Skip tx checks after system tx; extend overrides. |
| eth/state_accessor.go | Skip tx checks after system tx. |
| eth/protocols/snap/sync.go | Restore peers to idle pools on revert. |
| eth/ethconfig/gen_config.go | Add TOML override for Pasteur. |
| eth/ethconfig/config.go | Update GPO + tx sync timeouts; add override field. |
| eth/catalyst/simulated_beacon.go | Include Pasteur in payload version selection. |
| eth/backend.go | Wire Pasteur override into chain config. |
| crypto/signature_nocgo.go | Tighten curve IsOnCurve coordinate checks. |
| crypto/secp256k1/ext.h | Validate field element decoding before scalar mul. |
| crypto/secp256k1/curve.go | Tighten IsOnCurve coordinate checks. |
| crypto/ecies/ecies.go | Reject invalid public keys (nil/off-curve). |
| core/vote/vote_pool.go | Reduce redundant finality check goroutines. |
| core/vm/lightclient/v2/lightclient.go | Add max-size guard for consensus state decoding. |
| core/vm/jump_table.go | Fix optimized op min/max stack bounds. |
| core/vm/interpreter.go | Move readOnly handling to EVM. |
| core/vm/instructions.go | Use EVM readOnly flag for write protection. |
| core/vm/instructions_test.go | Add super-instruction stack boundary tests. |
| core/vm/evm.go | Add EVM-level readOnly field. |
| core/vm/eips.go | Use EVM readOnly flag for TSTORE. |
| core/vm/contract.go | Increase code bitmap cache size. |
| core/types/vote.go | Fix vote address comparison typo. |
| core/txpool/validation.go | Simplify per-tx gas cap comparison. |
| core/incr_downloader.go | Harden tar extraction (path traversal/link blocking). |
| core/genesis.go | Add Pasteur override plumbing. |
| core/filtermaps/checkpoints_bsc_mainnet.json | Extend mainnet checkpoint list. |
| core/filtermaps/checkpoints_bsc_chapel.json | Extend chapel checkpoint list. |
| core/blockchain.go | Reduce receipts/sidecars cache limits. |
| core/blockchain_reader.go | Expose highest-notified finalized header. |
| consensus/parlia/parlia.go | Improve error propagation + finality notify logic. |
| consensus/parlia/parlia_test.go | Update tracing expectations. |
| consensus/parlia/finality_test.go | Add quorum snapshot regression test. |
| consensus/misc/eip4844/eip4844.go | BEP-657 header rules + excess gas inheritance logic. |
| consensus/misc/eip4844/eip4844_test.go | Add BEP-657 tests. |
| cmd/utils/flags.go | Add override.pasteur flag. |
| cmd/keeper/go.mod | Dependency bumps (keeper module). |
| cmd/keeper/go.sum | Dependency checksum updates (keeper module). |
| cmd/jsutils/getchainstatus.js | Update builder mapping labels/entries. |
| cmd/geth/main.go | Register Pasteur override flag. |
| cmd/geth/config.go | Wire Pasteur override into config. |
| cmd/geth/chaincmd.go | Wire Pasteur override into genesis init. |
| CHANGELOG.md | Add v1.7.1 release notes; document fixes. |
| build/checksums.txt | Update spec-tests version references. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Comment on lines
+1069
to
+1079
| var pendingBlobTxs map[common.Address][]*txpool.LazyTransaction | ||
| if env.header.Number.Uint64()%params.BlobEligibleBlockInterval == 0 { | ||
| filter.BlobTxs = true | ||
| filter.BlobVersion = types.BlobSidecarVersion0 | ||
|
|
||
| blobTxsStart := time.Now() | ||
| pendingBlobTxs := w.eth.TxPool().Pending(filter) | ||
| pendingBlobTxsTimer.UpdateSince(blobTxsStart) | ||
| blobTxsStart := time.Now() | ||
| pendingBlobTxs = w.eth.TxPool().Pending(filter) | ||
| pendingBlobTxsTimer.UpdateSince(blobTxsStart) | ||
| } else { | ||
| pendingBlobTxs = make(map[common.Address][]*txpool.LazyTransaction) | ||
| } |
| if err != nil { | ||
| return "", fmt.Errorf("failed to compute relative path for %s: %v", name, err) | ||
| } | ||
| if strings.HasPrefix(rel, "..") { |
Comment on lines
47
to
+54
| _, t, c, err := readKind(it.data) | ||
| if err != nil { | ||
| it.next = nil | ||
| it.err = err | ||
| // Mark iteration as finished to avoid potential infinite loops on subsequent Next calls. | ||
| it.data = nil | ||
| return true | ||
| } |
| bcfg := latestBlobConfig(config, headTimestamp) | ||
| return calcExcessBlobGas(isOsaka, bcfg, parent) | ||
|
|
||
| // BEP-657: for non-recalculation blocks (N % BlobEligibleBlockInterval != 1), inherit parent's ExcessBlobGas |
Comment on lines
+1482
to
+1483
| // IsOnPasteur eturns whether currentBlockTime is either equal to the Pasteur fork time or greater firstly. | ||
| func (c *ChainConfig) IsOnPasteur(currentBlockNumber *big.Int, lastBlockTime uint64, currentBlockTime uint64) bool { |
Comment on lines
1584
to
1586
| {name: "amsterdam", timestamp: c.AmsterdamTime, optional: true}, | ||
| {name: "pasteurTime", timestamp: c.PasteurTime, optional: true}, | ||
| } { |
Comment on lines
47
to
49
| Mendel | ||
| Pasteur // BOP1 will be skipped in BSC, so let Pasteur be the next to Mendel | ||
| BPO1 |
| @@ -1,4 +1,24 @@ | |||
| # Changelog | |||
| ## v1.7.1 | |||
| v1.7.1 is for BSC Chapel testnet [Osaka/Mendel hardfork](https://github.com/bnb-chain/BEPs/blob/master/BEPs/BEP-658.md),the hard fork time is 2026-03-24 02:30:00 AM UTC | |||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
merge: develop to master for v1.7.1-beta
Rationale
tell us why we need these changes...
Example
add an example CLI or API response...
Changes
Notable changes: