types: add ePBS (Gloas) domains, roles, and partial-sig types - #632
Open
iurii-ssv wants to merge 3 commits into
Open
types: add ePBS (Gloas) domains, roles, and partial-sig types#632iurii-ssv wants to merge 3 commits into
iurii-ssv wants to merge 3 commits into
Conversation
Per SIP ssvlabs/SIPs#94, add the wire constants for the new ePBS duties: - domains DomainBeaconBuilder (0x0B), DomainPTCAttester (0x0C), DomainProposerPreferences (0x0D) - beacon + runner roles for PTC attester, proposer preferences, and envelope builder (7/8/9), wired through MapDutyToRunnerRole and the String() methods - partial-sig types PTCAttesterPartialSig (7) and ProposerPreferencesPartialSig (8)
iurii-ssv
requested review from
GalRogozinski and
MatheusFranco99
as code owners
June 23, 2026 20:49
Contributor
|
Too many files changed for review. ( |
iurii-ssv
changed the base branch from
main
to
agg-comm-pre-consensus-termination-fix-repo-size
June 24, 2026 07:44
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jun 24, 2026
Bump ssv-spec to the branch carrying the ePBS constants (ssvlabs/ssv-spec#632) and add DomainPTCAttester signing: - LocalKeyManager signs the payload-attestation root via the generic ssz.HashRoot signer (no slashing protection — PTC is not in the slashing predicate). - RemoteKeyManager returns an explicit "not supported" error, since Web3Signer has no payload-attestation request type. Also realign a test for the ssv-spec testingutils change (TestingPhase0AggregateAndProof is now a constructor).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jun 24, 2026
Adopt the ePBS roles/domains/partial-sig types now in ssv-spec (ssvlabs/ssv-spec#632) and add the PTC attestation runner (SIP #94 §3): - bump ssv-spec to the branch carrying the constants - collapse the node-side gloas placeholders onto spectypes.* (roles, domains, partial-sig types, and the now-redundant beacon->runner role mapping, which ssv-spec's MapDutyToRunnerRole handles); gloas keeps only the wire types - add PTCAttesterRunner: a no-consensus partial-signature runner that freezes its beacon node's PayloadAttestationData observation, signs it under DomainPTCAttester, and reconstructs + submits one PayloadAttestationMessage per validator once a threshold of operators converge on byte-identical data
12 tasks
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jun 24, 2026
Bump ssv-spec to the branch carrying the ePBS constants (ssvlabs/ssv-spec#632) and add DomainPTCAttester signing: - LocalKeyManager signs the payload-attestation root via the generic ssz.HashRoot signer (no slashing protection — PTC is not in the slashing predicate). - RemoteKeyManager returns an explicit "not supported" error, since Web3Signer has no payload-attestation request type. Also realign a test for the ssv-spec testingutils change (TestingPhase0AggregateAndProof is now a constructor).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jun 24, 2026
Adopt the ePBS roles/domains/partial-sig types now in ssv-spec (ssvlabs/ssv-spec#632) and add the PTC attestation runner (SIP #94 §3): - bump ssv-spec to the branch carrying the constants - collapse the node-side gloas placeholders onto spectypes.* (roles, domains, partial-sig types, and the now-redundant beacon->runner role mapping, which ssv-spec's MapDutyToRunnerRole handles); gloas keeps only the wire types - add PTCAttesterRunner: a no-consensus partial-signature runner that freezes its beacon node's PayloadAttestationData observation, signs it under DomainPTCAttester, and reconstructs + submits one PayloadAttestationMessage per validator once a threshold of operators converge on byte-identical data
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jun 30, 2026
Bump ssv-spec to the branch carrying the ePBS constants (ssvlabs/ssv-spec#632) and add DomainPTCAttester signing: - LocalKeyManager signs the payload-attestation root via the generic ssz.HashRoot signer (no slashing protection — PTC is not in the slashing predicate). - RemoteKeyManager returns an explicit "not supported" error, since Web3Signer has no payload-attestation request type. Also realign a test for the ssv-spec testingutils change (TestingPhase0AggregateAndProof is now a constructor).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jun 30, 2026
Adopt the ePBS roles/domains/partial-sig types now in ssv-spec (ssvlabs/ssv-spec#632) and add the PTC attestation runner (SIP #94 §3): - bump ssv-spec to the branch carrying the constants - collapse the node-side gloas placeholders onto spectypes.* (roles, domains, partial-sig types, and the now-redundant beacon->runner role mapping, which ssv-spec's MapDutyToRunnerRole handles); gloas keeps only the wire types - add PTCAttesterRunner: a no-consensus partial-signature runner that freezes its beacon node's PayloadAttestationData observation, signs it under DomainPTCAttester, and reconstructs + submits one PayloadAttestationMessage per validator once a threshold of operators converge on byte-identical data
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jul 1, 2026
Bump ssv-spec to the branch carrying the ePBS constants (ssvlabs/ssv-spec#632) and add DomainPTCAttester signing: - LocalKeyManager signs the payload-attestation root via the generic ssz.HashRoot signer (no slashing protection — PTC is not in the slashing predicate). - RemoteKeyManager returns an explicit "not supported" error, since Web3Signer has no payload-attestation request type. Also realign a test for the ssv-spec testingutils change (TestingPhase0AggregateAndProof is now a constructor).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jul 1, 2026
Adopt the ePBS roles/domains/partial-sig types now in ssv-spec (ssvlabs/ssv-spec#632) and add the PTC attestation runner (SIP #94 §3): - bump ssv-spec to the branch carrying the constants - collapse the node-side gloas placeholders onto spectypes.* (roles, domains, partial-sig types, and the now-redundant beacon->runner role mapping, which ssv-spec's MapDutyToRunnerRole handles); gloas keeps only the wire types - add PTCAttesterRunner: a no-consensus partial-signature runner that freezes its beacon node's PayloadAttestationData observation, signs it under DomainPTCAttester, and reconstructs + submits one PayloadAttestationMessage per validator once a threshold of operators converge on byte-identical data
5 tasks
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jul 3, 2026
Bump ssv-spec to the branch carrying the ePBS constants (ssvlabs/ssv-spec#632) and add DomainPTCAttester signing: - LocalKeyManager signs the payload-attestation root via the generic ssz.HashRoot signer (no slashing protection — PTC is not in the slashing predicate). - RemoteKeyManager returns an explicit "not supported" error, since Web3Signer has no payload-attestation request type. Also realign a test for the ssv-spec testingutils change (TestingPhase0AggregateAndProof is now a constructor).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Jul 3, 2026
Adopt the ePBS roles/domains/partial-sig types now in ssv-spec (ssvlabs/ssv-spec#632) and add the PTC attestation runner (SIP #94 §3): - bump ssv-spec to the branch carrying the constants - collapse the node-side gloas placeholders onto spectypes.* (roles, domains, partial-sig types, and the now-redundant beacon->runner role mapping, which ssv-spec's MapDutyToRunnerRole handles); gloas keeps only the wire types - add PTCAttesterRunner: a no-consensus partial-signature runner that freezes its beacon node's PayloadAttestationData observation, signs it under DomainPTCAttester, and reconstructs + submits one PayloadAttestationMessage per validator once a threshold of operators converge on byte-identical data
Contributor
|
Just quick small nit. I did a find all for |
DomainRequestAuth pins builder-specs' DOMAIN_REQUEST_AUTH (0x0b000001), the application-namespace domain authenticating direct validator-to-builder requests under Gloas (ePBS) — genesis-style compute_domain, never fork-versioned, and not to be confused with the beacon DomainBeaconBuilder (0x0b000000). RequestAuthPartialSig(9) is the partial-signature type its threshold signing rides on: an SIP-94 §5 extension carried under RoleProposerPreferences (ssvlabs/ssv#2962).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Aug 5, 2026
Bump ssv-spec to the branch carrying the ePBS constants (ssvlabs/ssv-spec#632) and add DomainPTCAttester signing: - LocalKeyManager signs the payload-attestation root via the generic ssz.HashRoot signer (no slashing protection — PTC is not in the slashing predicate). - RemoteKeyManager returns an explicit "not supported" error, since Web3Signer has no payload-attestation request type. Also realign a test for the ssv-spec testingutils change (TestingPhase0AggregateAndProof is now a constructor).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Aug 5, 2026
Adopt the ePBS roles/domains/partial-sig types now in ssv-spec (ssvlabs/ssv-spec#632) and add the PTC attestation runner (SIP #94 §3): - bump ssv-spec to the branch carrying the constants - collapse the node-side gloas placeholders onto spectypes.* (roles, domains, partial-sig types, and the now-redundant beacon->runner role mapping, which ssv-spec's MapDutyToRunnerRole handles); gloas keeps only the wire types - add PTCAttesterRunner: a no-consensus partial-signature runner that freezes its beacon node's PayloadAttestationData observation, signs it under DomainPTCAttester, and reconstructs + submits one PayloadAttestationMessage per validator once a threshold of operators converge on byte-identical data
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Aug 5, 2026
Bump ssv-spec to the branch carrying the ePBS constants (ssvlabs/ssv-spec#632) and add DomainPTCAttester signing: - LocalKeyManager signs the payload-attestation root via the generic ssz.HashRoot signer (no slashing protection — PTC is not in the slashing predicate). - RemoteKeyManager returns an explicit "not supported" error, since Web3Signer has no payload-attestation request type. Also realign a test for the ssv-spec testingutils change (TestingPhase0AggregateAndProof is now a constructor).
iurii-ssv
added a commit
to ssvlabs/ssv
that referenced
this pull request
Aug 5, 2026
Adopt the ePBS roles/domains/partial-sig types now in ssv-spec (ssvlabs/ssv-spec#632) and add the PTC attestation runner (SIP #94 §3): - bump ssv-spec to the branch carrying the constants - collapse the node-side gloas placeholders onto spectypes.* (roles, domains, partial-sig types, and the now-redundant beacon->runner role mapping, which ssv-spec's MapDutyToRunnerRole handles); gloas keeps only the wire types - add PTCAttesterRunner: a no-consensus partial-signature runner that freezes its beacon node's PayloadAttestationData observation, signs it under DomainPTCAttester, and reconstructs + submits one PayloadAttestationMessage per validator once a threshold of operators converge on byte-identical data
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the ssv-spec wire constants for the new ePBS (Gloas) duties, per SIP #94.
What
beacon_types.go):DomainBeaconBuilder(0x0B),DomainPTCAttester(0x0C),DomainProposerPreferences(0x0D) — the consensus-spec Gloas domains.BNRolePTCAttester/BNRoleProposerPreferences/BNRoleEnvelopeBuilderand matching runner rolesRolePTCAttester/RoleProposerPreferences/RoleEnvelopeBuilder(7/8/9), wired throughMapDutyToRunnerRoleand bothString()methods.PTCAttesterPartialSig(7),ProposerPreferencesPartialSig(8). (§6 envelope post-consensus reusesPostConsensusPartialSig, discriminated by role, so it adds no type of its own.)Why
Consumed by the node-side ePBS implementation (PTC attestation runner first). The remote signer (
ekm) lives in a separate module that can only reference signing domains via ssv-spec, so the PTC signing path needsDomainPTCAttesterhere rather than node-side.Branched off the commit ssv currently pins, so the downstream go.mod bump is purely additive.