Skip to content

merge: develop to master for v1.7.1#3535

Merged
allformless merged 50 commits into
masterfrom
develop
Mar 13, 2026
Merged

merge: develop to master for v1.7.1#3535
allformless merged 50 commits into
masterfrom
develop

Conversation

@buddh0

@buddh0 buddh0 commented Jan 28, 2026

Copy link
Copy Markdown
Contributor

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:

  • add each change in a bullet point here
  • ...

fjl and others added 17 commits January 13, 2026 16:19
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
zlacfzy and others added 6 commits February 11, 2026 11:13
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.
allformless and others added 21 commits February 24, 2026 11:19
* 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
@allformless allformless added this to the 1.7.1 milestone Mar 13, 2026
@allformless allformless changed the title merge: develop to master for v1.7.1-beta merge: develop to master for v1.7.1 Mar 13, 2026
@zzzckck zzzckck requested a review from Copilot March 13, 2026 07:57
@allformless allformless merged commit da35ee1 into master Mar 13, 2026
16 of 19 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 thread miner/worker.go
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)
}
Comment thread core/incr_downloader.go
if err != nil {
return "", fmt.Errorf("failed to compute relative path for %s: %v", name, err)
}
if strings.HasPrefix(rel, "..") {
Comment thread rlp/iterator.go
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 thread params/config.go
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 thread params/config.go
Comment on lines 1584 to 1586
{name: "amsterdam", timestamp: c.AmsterdamTime, optional: true},
{name: "pasteurTime", timestamp: c.PasteurTime, optional: true},
} {
Comment thread params/forks/forks.go
Comment on lines 47 to 49
Mendel
Pasteur // BOP1 will be skipped in BSC, so let Pasteur be the next to Mendel
BPO1
Comment thread CHANGELOG.md
@@ -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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.