Skip to content

Releases: ethereum/consensus-specs

Electivire

07 May 17:43
2c1f677
Compare
Choose a tag to compare
Electivire Pre-release
Pre-release

v1.5.0-alpha.2 -- Electivire -- is the alpha release for the coming Electra upgrade.

It is the spec target of pectra-devnet-0, with bug fixes on test cases.

It also includes some essential EIP-7594 fixes for initial interop.

PR showing full diff can be found here: #3749

Phase0

  • [non-substantive] Fix typo on CommitteeIndex in p2p spec #3756

Electra

  • [non-substantive] EIP-7549: Fix typo in get_committee_indices #3740

Experimental

EIP-7594 (PeerDAS)

DAS Core
  • Fix get_custody_columns #3748
Cryptography
Networking
  • Pad column indices when calling verify_cell_kzg_proof_batch #3745
  • Add DataColumnSidecarsByRange v1 Req/Resp #3750

Testing, repo, etc

  • Remove test_consolidation.py since they are not valid test vectors #3736
  • Add decorator to all "invalid" test cases #3741
  • Add .copy() where needed in tests #3743
  • Fix rng of tests #3731
  • Github Action runner overhaul #3751

Electabuzz

27 Apr 08:44
c254443
Compare
Choose a tag to compare
Electabuzz Pre-release
Pre-release

v1.5.0-alpha.1 -- Electabuzz -- is the alpha release for the coming Electra upgrade.

It is the spec target of pectra-devnet-0, with bug fixes on test cases and new fork tests.

It also includes the new EIP-7594 (PeerDAS) tests with new test formats for general/eip7594/kzg and {mainnet, minimal}/eip7594/networking/get_custody_columns.

PR showing full diff can be found here: #3725

Electra

  • [non-substantive] Refactor upgrade_to_electra() in #3711
  • [non-substantive] Minor comment on ExecutionLayerWithdrawalRequest #3707

Experimental

EIP7594 (PeerDAS)

DAS Core
  • Make get_custody_columns return sorted values and add get_custody_columns #3715
  • Fix EIP7594_FORK_VERSION test #3730
Cryptography

Shout out to @kevaundray, @jtraglia, and @asn-d6!

  • Rename CELLS_PER_BLOB to CELLS_PER_EXT_BLOB #3694
  • Change g2_lincomb to take in G2Point #3692
  • Fix and elaborates on comments #3695
  • For compute_kzg_proof_multi remove remainder polynomial when in monomial form #3696
  • Change recover_polynomial to recover_all_cells #3702
  • Remove extra return value in construct_vanishing_polynomial #3704
  • Add more description for the kzg verify algorithm by #3703
  • Add a new config MAX_EXTENDED_MATRIX_SIZE #3708
  • Add BLS_MODULUS to places where the result of a subtraction can be negative #3709
  • Integrate new CosetEvals type by #3701
  • Use CELLS_PER_EXT_BLOB to compute the number of columns #3710
  • Make List Copy explicit in divide_polynomialcoeff #3706
  • Add asserts for public functions #3684
  • Use py-arkworks's multi-exp method inside of g1_lincomb and g2_lincomb #3714
  • Replace "proofs" with "kzg_proofs" in function names #3727
  • Fix bls.multi_exp when using py_ecc #3730

Testing, repo, etc

  • Fix and move test_multiple_consolidations_* tests to sanity block tests #3724
  • Fix consolidation test_invalid_*_signature tests #3728
  • Add Electra fork tests #3720
  • Add EIP-7594 to TESTGEN_FORKS #3721
  • Add kzg_7594 test formats #3718
  • Add initial version of kzg_7594 test generator #3693
  • Rename formats/kzg to formats/kzg_4844 #3716
  • Fix test_effective_balance_hysteresis_with_compounding_credentials test #3730
  • Enable EIP7594 merkle proof testgen and use bls.use_fastest() in default testgen #3732

Elekid

18 Apr 10:52
7bf43d1
Compare
Choose a tag to compare
Elekid Pre-release
Pre-release

v1.5.0-alpha.0 -- Elekid -- is the alpha release for the coming Electra upgrade.

Thank you all for helping with this baby Electra release! 🐣

PR showing full diff can be found here: #3675

Phase 0

  • [networking] Align seen_ttl with attestation lifetime #3627

Deneb

  • [non-substantive] Clarify voluntary_exits gossip topic after Capella #3651

Electra

Miscs

  • Update Electra config #3632
  • Init Electra (EIP6110 + EIP7002) #3615
  • Add EIP-7549 to Electra #3653
  • Track blob gas when upgrading to Electra #3665
  • Add EIP-7251 to Electra #3668
  • EIP-7002/7251: clarify pending partial withdrawals handling #3679

EIP-6110

  • Rename get_eth1_deposit_count function #3629

EIP-7002

  • Bugfix when processing execution layer exit request #3660
  • Some clean ups from merging EIP-7002 into Electra #3666

EIP-7251

  • Increase MAX_EFFECTIVE_BALANCE #3618
  • Fix bug in get_active_balance() #3637
  • Rename PartialWithdrawal field #3643
  • Use MIN_ACTIVATION_BALANCE instead of MAX_EFFECTIVE_BALANCE #3647
  • Remove extra queue_excess_active_balance call #3654
  • Fix EIP-7251 tests #3656
  • Rename get_churn_limit() for clarity #3676
  • Enforce Activation Rate Limit at Fork Transition #3659
  • Fix off-by-one in churn computations #3682

EIP-7549

  • Move committee index outside Attestation #3559
  • Clarify network vs on chain aggregation #3628
  • Flatten aggregate_bits #3631
  • Enable EIP-7549 on CI by #3640
  • Misc changes #3636 #3657
  • Fix has_sufficient_effective_balanc computation #3658
  • Clarify electra validator spec with EIP7549 #3669
  • Add AttesterSlashing to modified containers #3674

Experimental

EIP7594 (PeerDAS)

  • Check for degree overflow in multiply_polynomialcoeff() #3619
  • Add PeerDAS protocol #3574
  • Use FIELD_ELEMENTS_PER_EXT_BLOB in NUMBER_OF_COLUMNS #3662

Testing, repo, etc

  • Update single_merkle_proof.md test format docs #3635
  • Remove wip messages on shipped forks #3646
  • Typo fixes #3645
  • Add EIP7549 aggregation logic in testing tool #3649 #3680
  • Add EIP-7549 tests and Electra random tests #3670
  • Remove duplicate deposit processing tests #3678
  • Fix electra tests and enable testgen #3681
  • Fix broken exit tests due to change in the churn computation by #3690
  • Fix tests by #3691

Delivery at Dawn

13 Mar 17:36
4afe398
Compare
Choose a tag to compare

v1.4.0 -- Delivery at Dawn -- is the mainnet release for the Deneb upgrade that went live on March 13, 2024.

PR showing full diff can be found here: #3621

Phase0

  • [non-substantive] Refactor with new constant UINT64_MAX_SQRT: #3608

Testing, repo, etc

Denebian Whale

15 Feb 19:29
2c0fcee
Compare
Choose a tag to compare
Denebian Whale Pre-release
Pre-release

v1.4.0-beta.7 -- Denebian Whale -- is a beta release for the coming Deneb upgrade.

This release sets the mainnet Deneb fork epoch (DENEB_FORK_EPOCH) value.

Note that to be cautious, we still use the beta pre-release to avoid any last-minute updates. We will bump to v1.4.0 right after the mainnet fork is activated.

PR showing full diff can be found here: #3598

Phase 0

Beacon chain

  • Handle integer_squareroot bound case #3600

Deneb

  • Schedule Deneb for Mainnet #3597

EIP-7594 (PeerDAS)

  • [Cryptography] Optimization: reduce len() calls in add_polynomialcoeff helper #3581
  • [Cryptography] Public methods must accept raw bytes #3579
  • [Cryptography] Initial refactor of recover_polynomial() #3591

Testing, repo, etc

  • Add py.typed file for mypy #3588 #3594
  • Add EIP-7514 higher-churn-limit-to-lower tests #3602

Psychrolutes marcidus

18 Jan 16:40
7402712
Compare
Choose a tag to compare
Psychrolutes marcidus Pre-release
Pre-release

v1.4.0-beta.6 -- Psychrolutes marcidus -- is a beta release for upcoming Deneb devnets.

This release adds new field g1_monomial to the trusted setup file. It can be found at the upstream. The latest sha256
checksum: f8e44a31ebf0a6d0734dcb301b0716e2c77f3ae18ed0cab0870fbcc2ca55616f

PR showing full diff can be found here: #3578

Phase 0

Fork choice

  • Confirmation rule prerequisite - fork choice filter change #3431

Networking

  • Align gossip validation for aggregates with single attestations #3552
  • Use fork choice to determine finalized_checkpoint in gossip validation #3543

Light client

  • Refactoring #3569, #3571
  • Rename _INDEX generalized index constants to _GINDEX #3537, #3563
  • Gossip additional LightClientFinalityUpdate on new supermajority #3549
  • Use types for representing LC Merkle branches #3563

SSZ

  • byte type and canonical JSON mapping #3506

Whisk

  • Add WHISK fork only tests #3442

EIP-7594 (WIP - still in its early stages)

  • EIP-7594: Add cryptography specs for sampling #3557, #3583

Testing, repo, etc

  • Pyspec refactoring #3562, #3567
  • Pyspec dockerization #3477, #3573
  • Consider fork transitions when using get_sync_aggregate #3572
  • Add guard when fill_prev_epoch is True in epoch 0 by #3570
  • Add transition test case of non-empty pre-state historical_roots #3585

Serve It Up

04 Dec 18:33
ffa95b7
Compare
Choose a tag to compare
Serve It Up Pre-release
Pre-release

v1.4.0-beta.5 -- Serve It Up -- is a beta release for upcoming Deneb devnets.

#3551 clarifies when a client can be unblocked on serving beacon blocks and blob side cars. Although this will help clients conform to a more optimal behaviour, it is not a breaking change (v1.4.0-beta.4 can be transparently swapped and interop with v1.4.0-beta.5).

_PR showing full diff can be found here: #3554

Phase 0

  • Clarify when clients can serve blocks in byRoot RPC methods #3551

Deneb

  • Clarify when clients can serve blocks and sidecars in byRoot RPC methods #3551
  • [non-substantive] Remove unused DOMAIN_BLOB_SIDECAR #3542
  • [non-substantive] Remove SignedBlobSidecar refs from p2p spec #3541
  • [non-substantive] Move blob_sidecar_{subnet_id} to "Blob subnets" section #3556

Testing, repo, etc

  • Fix FC tests by removing extra tick #3548
  • Ensure on_tick precondition time >= store.time in fork-choice tests #3550
  • Add randomized block blob_kzg_commitment_merkle_proof cases #3555

Prove It

02 Nov 19:55
4de1d15
Compare
Choose a tag to compare
Prove It Pre-release
Pre-release

v1.4.0-beta.4 -- Prove It -- is a beta release for upcoming Deneb devnets. Note, this contains a substantial breaking change to how Blobs are sent around on the p2p (#3531, #3540) and is expected to delay the next devnet(s) by a few weeks as clients incorporate (largely simplifying!) changes.

Shout-out to @terencechain and @potuz for re-opening the conversation about how Blobs are sent around on the p2p and massive shout-out 🙏 to @fradamt for suggesting the utilization of BeaconBlockHeaders and merkle proofs to allay the ongoing concerns.

_PR showing full diff can be found here: #3536

Phase 0

  • Allow honest validators to reorg late blocks #3034

Deneb

  • Reject blobs which reference already finalized parent blocks #3529
  • Add blob sidecar inclusion proof and other relevant p2p changes #3531 #3540
  • Suggest sidecars by root callers verify blob sidecars #3535
  • [non-substantive Clarify not to invalidate valid and available (wrt blobs) blocks #3526
  • [non-substantive] Update block production description in validator doc to more precisely reflect the latest flow #3533
  • [non-substantive] Remove BLOB_TX_TYPE from spec (and move to tests) #3534

The Summoning

18 Oct 17:20
820f62d
Compare
Choose a tag to compare
The Summoning Pre-release
Pre-release

v1.4.0-beta.3 -- The Summoning -- is a beta release for the upcoming Deneb devnet-10 and potentially beyond.

Shout-out to @tbenr for identifying a critical blob gossip condition late in the game! 🙌

PR showing full diff can be found here: #3523

Deneb

EIP-4844

  • Change minimal preset FIELD_ELEMENTS_PER_BLOB to 4096 and use the mainnet KZG ceremony trusted setup output #3521
  • Add new gossip rule to REJECT sidecars with index >= MAX_BLOBS_PER_BLOCK #3525

Experimental R&D

Whisk

  • Use add_validator_to_registry in whisk #3486

Testing, repo, etc

Flow Control Valve

18 Sep 17:32
ff9963f
Compare
Choose a tag to compare
Flow Control Valve Pre-release
Pre-release

v1.4.0-beta.2 -- -- is a beta release for the upcoming Deneb devnet-9 and potentially beyond. It introduces EIP-7514, which applies the maximum activation churn limit. Additionally, it adds a fork-choice rule proposer boost adjustment.

Special thanks to @wenceslas-sanchez for making contributions via the EPF program.

PR showing full diff can be found here: #3504

Phase0

  • [Fork choice] Apply proposer boost to the first block in case of equivocation #3352

Deneb

EIP-7514

Experimental R&D

Whisk

  • Move non-preset values to config #3482 #3485
  • Do not mutate candidates during cooldown #3483
  • Pin curdleproofs package dependency to v0.1.1 #3495

Testing, repo, etc

  • [New test vectors] Add Deneb fork choice tests #3463
  • [Test vectors paths update] Rename BLS/KZG suite name #3484
  • Fix redundant SSZ generic tests #3468
  • Fix test generator multiprocessing mode bug #3473
  • Fix verify_blob_kzg_proof_batch test format description #3471
  • Remove old warnings for in-development specs #3494
  • Typo fixes: #3476 #3503
  • Fix link to libp2p Yamux specification #3493