Skip to content

types: add ePBS (Gloas) domains, roles, and partial-sig types - #632

Open
iurii-ssv wants to merge 3 commits into
agg-comm-pre-consensus-termination-fix-repo-sizefrom
epbs-gloas-constants
Open

types: add ePBS (Gloas) domains, roles, and partial-sig types#632
iurii-ssv wants to merge 3 commits into
agg-comm-pre-consensus-termination-fix-repo-sizefrom
epbs-gloas-constants

Conversation

@iurii-ssv

Copy link
Copy Markdown
Contributor

Adds the ssv-spec wire constants for the new ePBS (Gloas) duties, per SIP #94.

What

  • Domains (beacon_types.go): DomainBeaconBuilder (0x0B), DomainPTCAttester (0x0C), DomainProposerPreferences (0x0D) — the consensus-spec Gloas domains.
  • Roles: beacon roles BNRolePTCAttester / BNRoleProposerPreferences / BNRoleEnvelopeBuilder and matching runner roles RolePTCAttester / RoleProposerPreferences / RoleEnvelopeBuilder (7/8/9), wired through MapDutyToRunnerRole and both String() methods.
  • Partial-sig types: PTCAttesterPartialSig (7), ProposerPreferencesPartialSig (8). (§6 envelope post-consensus reuses PostConsensusPartialSig, 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 needs DomainPTCAttester here rather than node-side.

Branched off the commit ssv currently pins, so the downstream go.mod bump is purely additive.

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)
@greptile-apps

greptile-apps Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review. (1830 files found, 150 file limit)

@iurii-ssv
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
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
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
@MatheusFranco99

Copy link
Copy Markdown
Contributor

Just quick small nit. I did a find all for BNRoleEnvelopeBuilder according to the PR description but found nothing. In the code it actually is BNRoleEnvelopeProposer

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
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.

2 participants