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

[WIP] move attestation index outside signed message #2

Closed
wants to merge 33 commits into from

Conversation

dapplion
Copy link
Owner

@dapplion dapplion commented Oct 31, 2023

Motivation

ZK circuits attempting to proof Casper-FFG on Ethereum today would benefit greatly from having to verify less signatures.

On an optimal case with 100% agreeing participation, in a network with at least 262144 active validators, one needs to verify 32*64 * 2/3 ~ 1365 attestations to reach a 2/3 threshold.

Ethereum validators cast two votes at once: LMD GHOST vote and Casper-FFG vote. In the perfect example case above, during a single epoch all Casper-FFG votes are identical, and LMD GHOST votes differ per slot. So the ideal minimum number of vote combinations to verify to reach a 2/3 threshold is 32 * 2/3 ~ 22.

The issue arises from validators actually signing 3 things:

  1. LMD GHOST vote (beacon_block_root, slot). Note I include slot in case we move to (block, slot) voting
  2. FFG vote (source, target)
  3. Committee index (index)
class AttestationData(Container):
    slot: Slot
    index: CommitteeIndex
    # LMD GHOST vote
    beacon_block_root: Root
    # FFG vote
    source: Checkpoint
    target: Checkpoint

This 3rd signed item, the committee index, causes equal votes to produce different signing roots.

djrtwo and others added 12 commits November 30, 2023 12:56
…ment_merkle_proof

Add randomized block `blob_kzg_commitment_merkle_proof` cases
Co-authored-by: Mikhail Kalinin <noblesse.knight@gmail.com>
Co-authored-by: Mikhail Kalinin <noblesse.knight@gmail.com>
Co-authored-by: danny <dannyjryan@gmail.com>
…bility

Specify when clients can serve block and sidecars in byRoot RPC methods
Move `blob_sidecar_{subnet_id}` to `Blob subnets` section
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.

4 participants