Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v1.5.0-alpha.9 #3982

Open
wants to merge 119 commits into
base: master
Choose a base branch
from
Open

Release v1.5.0-alpha.9 #3982

wants to merge 119 commits into from

Conversation

jtraglia
Copy link
Member

@jtraglia jtraglia commented Oct 17, 2024

work-in-progress release notes

v1.5.0-alpha.9 -- Ampharos -- is the alpha release for the coming Electra upgrade.

PR showing full diff can be found here: #3982

Electra

  • Uncouple blob limits per block across CL and EL #3800
  • Separate type for unaggregated network attestations #3900
  • Update validator spec to handle execution requests #3976
  • Fix validator fields in get_validator_from_deposit #3978
  • Fix withdrawals bug and add more tests #3979
  • Rename index vars in get_attesting_indices #3996
  • Exclude empty requests in requests list #3998
  • Add missed exit checks to consolidation processing #4000

EIP-7594 (PeerDAS)

  • Rebase eip7594 onto Electra #3893
  • Specify data column sidecar verification functions to run #3963

Networking

  • Deprecate TTFB, RESP_TIMEOUT, introduce rate limiting recommendations #3767

Testing, repo, etc

  • Encode zero-length hex-strings with quotes #3754
  • Avoid generating empty transactions in tests #3884
  • Fix blob transaction serialization to use RLP #3904
  • Move deposit contract rules to its own Makefile #3940
  • Add new check_mods function for generators #3970
  • In README, move outdated specs to new section #3973
  • Fix invalid file references in markdown files #3975
  • Add gen-modcheck CI check #3986
  • Fix all pytest warnings #3989
  • Upgrade pylint & split config files #3991
  • Add test to check that pending deposits are sorted at fork #3995

jtraglia and others added 30 commits May 7, 2024 09:37
…tions

As part of the discussions surrounding EIP-7594 (peerdas), it was
highlighted that during sampling and/or data requests, the sampler does
not have timing information for when a samplee will have data available.
It is desireable to not introduce a deadline, since this artificially
introduces latency for the typical scenario where data becomes available
earlier than an agreed-upon deadline.

Similarly, when a client issues a request for blocks, it does often not
know what rate limiting policy of the serving end and must either
pessimistically rate limit itself or run the risk of getting
disconnected for spamming the server - outcomes which lead to
unnecessarily slow syncing as well as testnet mess with peer scoring and
disconnection issues.

This PR solves both problems by:

* removing the time-to-first-byte and response timeouts allowing
requesters to optimistically queue requests - the timeouts have
historically not been implemented fully in clients to this date
* introducing a hard limit in the number of concurrent requests that a
client may issue, per protocol
* introducing a recommendation for rate limiting that allows optimal
bandwidth usage without protocol changes or additional messaging
roundtrips

On the server side, an "open" request does not consume significant
resources while it's resting, meaning that allowing the server to manage
resource allocation by slowing down data serving is safe, as long as
concurrency is adequately limited.

On the client side, clients must be prepared to handle slow servers
already and they can simply apply their existing strategy both to
uncertainty and rate-limiting scenarios (how long before timeout, what
to do in "slow peer" scenarios).

Token / leaky buckets are a classic option for rate limiting with
desireable properties both for the case when we're sending requests to
many clients concurrently (getting good burst performance) and when the
requestees are busy (by keeping long-term resource usage in check and
fairly serving clients)
Transactions cannot be empty, they always have at least 1 byte.
Random tests should produce valid CL data by default.
There are still individual tests for invalid transactions.
As a complement to
#3787, this PR
introduces a `SingleAttestation` type used for network propagation only.

In Electra, the on-chain attestation format introduced in
[EIP-7549](#3559)
presents several difficulties - not only are the new fields to be
interpreted differently during network processing and onchain which adds
complexity in clients, they also introduce inefficiency both in hash
computation and bandwidth.

The new type puts the validator and committee indices directly in the
attestation type, this simplifying processing and increasing security.

* placing the validator index directly in the attestation allows
verifying the signature without computing a shuffling - this closes a
loophole where clients either must drop attestations or risk being
overwhelmed by shuffling computations during attestation verification
* the simpler "structure" of the attestation saves several hash calls
during processing (a single-item List has significant hashing overhead
compared to a field)
* we save a few bytes here and there - we can also put stricter bounds
on message size on the attestation topic because `SingleAttestation` is
now fixed-size
* the ambiguity of interpreting the `attestation_bits` list indices
which became contextual under EIP-7549 is removed

Because this change only affects the network encoding (and not block
contents), the implementation impact on clients should be minimal.
EIP-4844 uses RLP not SSZ for blob transactions.
ensi321 and others added 30 commits October 18, 2024 12:06
Avoid generating empty transactions in tests
Encode zero-length hex-strings with quotes
Add `test_fork_pending_deposits_are_sorted` test
P2P clarifications when introducing `engine_getBlobsV1`
eip7251: Bugfix and more withdrawal tests
Separate type for unaggregated network attestations
p2p: Deprecate TTFB, RESP_TIMEOUT, introduce rate limiting recommenda…
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.

8 participants