Skip to content

Commit 0ab09dd

Browse files
committed
dummy type 1 and type 2 aggregation with block proofs
1 parent a5a05f9 commit 0ab09dd

11 files changed

Lines changed: 528 additions & 384 deletions

File tree

src/lean_spec/forks/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
SignedBlock,
1414
Validator,
1515
)
16-
from .lstar.containers.block import BlockSignatures
17-
from .lstar.containers.block.types import AggregatedAttestations, AttestationSignatures
16+
from .lstar.containers.block.types import AggregatedAttestations
1817
from .lstar.containers.state import State, Validators
1918
from .lstar.spec import LstarSpec, LstarStore
2019
from .lstar.store import AttestationSignatureEntry
@@ -36,11 +35,9 @@
3635
"Attestation",
3736
"AttestationData",
3837
"AttestationSignatureEntry",
39-
"AttestationSignatures",
4038
"Block",
4139
"BlockBody",
4240
"BlockHeader",
43-
"BlockSignatures",
4441
"Config",
4542
"DEFAULT_REGISTRY",
4643
"FORK_SEQUENCE",

src/lean_spec/forks/lstar/containers/attestation/attestation.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from __future__ import annotations
1515

16-
from lean_spec.subspecs.xmss.aggregation import AggregatedSignatureProof
16+
from lean_spec.subspecs.xmss.aggregation import TypeOneMultiSignature
1717
from lean_spec.subspecs.xmss.containers import Signature
1818
from lean_spec.types import AggregationBits, Checkpoint, Container, Slot, ValidatorIndex
1919

@@ -75,5 +75,5 @@ class SignedAggregatedAttestation(Container):
7575
data: AttestationData
7676
"""Combined attestation data similar to the beacon chain format."""
7777

78-
proof: AggregatedSignatureProof
79-
"""Aggregated signature proof covering all participating validators."""
78+
proof: TypeOneMultiSignature
79+
"""Aggregated single-message proof covering all participating validators."""

src/lean_spec/forks/lstar/containers/block/__init__.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,14 @@
44
Block,
55
BlockBody,
66
BlockHeader,
7-
BlockSignatures,
87
SignedBlock,
98
)
10-
from .types import (
11-
AggregatedAttestations,
12-
AttestationSignatures,
13-
)
9+
from .types import AggregatedAttestations
1410

1511
__all__ = [
1612
"Block",
1713
"BlockBody",
1814
"BlockHeader",
19-
"BlockSignatures",
2015
"SignedBlock",
2116
"AggregatedAttestations",
22-
"AttestationSignatures",
2317
]

src/lean_spec/forks/lstar/containers/block/block.py

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,17 @@
66
The proposer is determined by slot assignment.
77
"""
88

9-
from lean_spec.subspecs.xmss.containers import Signature
10-
from lean_spec.types import Bytes32, Slot, ValidatorIndex
9+
from lean_spec.types import ByteListMiB, Bytes32, Slot, ValidatorIndex
1110
from lean_spec.types.container import Container
1211

13-
from .types import (
14-
AggregatedAttestations,
15-
AttestationSignatures,
16-
)
12+
from .types import AggregatedAttestations
1713

1814

1915
class BlockBody(Container):
2016
"""Payload of a block containing attestations."""
2117

2218
attestations: AggregatedAttestations
23-
"""Attestations in the block. Signatures are in BlockSignatures."""
19+
"""Attestations in the block. Signatures are folded into the block-level proof."""
2420

2521

2622
class BlockHeader(Container):
@@ -66,21 +62,16 @@ class Block(Container):
6662
"""The block's payload."""
6763

6864

69-
class BlockSignatures(Container):
70-
"""Aggregated signature payload for a block."""
71-
72-
attestation_signatures: AttestationSignatures
73-
"""Aggregated signatures for attestations in the block body."""
74-
75-
proposer_signature: Signature
76-
"""Signature over the block root using the proposer's proposal key."""
77-
78-
7965
class SignedBlock(Container):
80-
"""Envelope carrying a block and its aggregated signatures."""
66+
"""Envelope carrying a block with a single aggregated proof for all signatures.
67+
68+
The proof is the SSZ-encoded form of a Type-2 multi-message proof that
69+
binds every attestation in the body plus the proposer's signature over
70+
the block root.
71+
"""
8172

8273
block: Block
8374
"""The block being signed."""
8475

85-
signature: BlockSignatures
86-
"""Aggregated signature payload for the block."""
76+
proof: ByteListMiB
77+
"""Single full-block proof covering attestations and the proposer signature."""

src/lean_spec/forks/lstar/containers/block/types.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from __future__ import annotations
44

55
from lean_spec.subspecs.chain.config import VALIDATOR_REGISTRY_LIMIT
6-
from lean_spec.subspecs.xmss.aggregation import AggregatedSignatureProof
76
from lean_spec.types import SSZList
87

98
from ..attestation import AggregatedAttestation
@@ -13,17 +12,3 @@ class AggregatedAttestations(SSZList[AggregatedAttestation]):
1312
"""List of aggregated attestations included in a block."""
1413

1514
LIMIT = int(VALIDATOR_REGISTRY_LIMIT)
16-
17-
18-
class AttestationSignatures(SSZList[AggregatedSignatureProof]):
19-
"""
20-
List of per-attestation aggregated signature proofs.
21-
22-
Each entry corresponds to an aggregated attestation from the block body.
23-
24-
It contains:
25-
- the participants bitfield,
26-
- proof bytes from leanVM signature aggregation.
27-
"""
28-
29-
LIMIT = int(VALIDATOR_REGISTRY_LIMIT)

0 commit comments

Comments
 (0)