Skip to content

Derive default auth data from the builder hostname - #168

Merged
nflaig merged 3 commits into
ethereum:mainfrom
nflaig:nflaig/default-auth-data
Sep 18, 2026
Merged

nflaig merged 3 commits into
ethereum:mainfrom
nflaig:nflaig/default-auth-data

Conversation

@nflaig

@nflaig nflaig commented Sep 16, 2026

Copy link
Copy Markdown
Member

The default data is the UTF-8 bytes of the builder URL exactly as advertised, so a trailing /, an explicit :443 or different casing on the proposer side fails the builder's check.

Use the builder's hostname instead: lowercased, without scheme, userinfo, port or path. It is a pure function of the configured URL, so all validator clients derive the same bytes, and it is only applied when constructing the BuilderRequestAuth, the signed bytes are still verified unchanged.

Builders that need a finer identity than their hostname can still agree data out of band. The auth_data descriptions in keymanager-APIs and beacon-APIs are updated in ethereum/keymanager-APIs#94 and ethereum/beacon-APIs#642.

Comment thread specs/gloas/validator.md Outdated

@0w3n-d 0w3n-d left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. I'm a fan of defaults like this.

mergify Bot pushed a commit to sigp/lighthouse that referenced this pull request Sep 18, 2026
## Description

Adds the per-validator builder configuration endpoints from [ethereum/keymanager-APIs#88](ethereum/keymanager-APIs#88).

- `GET /eth/v1/validator/{pubkey}/builder_config` returns the configuration in use for the validator.
- `POST /eth/v1/validator/{pubkey}/builder_config` replaces and persists the full configuration on a per-validator basis. It does not merge with the previous entry.
- `DELETE /eth/v1/validator/{pubkey}/builder_config` removes the stored entry, so the validator inherits the global configuration again.

The API stores per-validator entries under `validator_configs` in `builder_definitions.yml`.

Changes made by `POST` and `DELETE` apply to subsequent builder preference publication and Gloas block production without a restart.

When `auth_data` is omitted, global and per-validator builder configurations use the builder URL's lowercase ASCII hostname, following [ethereum/builder-specs#168](ethereum/builder-specs#168), [ethereum/beacon-APIs#642](ethereum/beacon-APIs#642) and [ethereum/keymanager-APIs#94](ethereum/keymanager-APIs#94). URLs with and without a trailing slash produce the same auth data.

Closes #9796
Closes #10076


Co-authored-by: Mark Mackey <mark@sigmaprime.io>

@ckoopmann ckoopmann left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes this would work for the ultrasound relay as well.

nflaig added a commit to ChainSafe/lodestar that referenced this pull request Sep 18, 2026
Follows ethereum/builder-specs#168, an omitted
`auth_data` of a builder entry is now the hostname of its url instead of
the url bytes verbatim, so a trailing slash, an explicit default port or
different casing no longer changes the signed bytes.

buildoor still compares the url verbatim, so the builder-dev kurtosis
setup fails auth until it follows the spec change.
SamAg19 pushed a commit to SamAg19/lighthouse that referenced this pull request Sep 18, 2026
## Description

Adds the per-validator builder configuration endpoints from [ethereum/keymanager-APIs#88](ethereum/keymanager-APIs#88).

- `GET /eth/v1/validator/{pubkey}/builder_config` returns the configuration in use for the validator.
- `POST /eth/v1/validator/{pubkey}/builder_config` replaces and persists the full configuration on a per-validator basis. It does not merge with the previous entry.
- `DELETE /eth/v1/validator/{pubkey}/builder_config` removes the stored entry, so the validator inherits the global configuration again.

The API stores per-validator entries under `validator_configs` in `builder_definitions.yml`.

Changes made by `POST` and `DELETE` apply to subsequent builder preference publication and Gloas block production without a restart.

When `auth_data` is omitted, global and per-validator builder configurations use the builder URL's lowercase ASCII hostname, following [ethereum/builder-specs#168](ethereum/builder-specs#168), [ethereum/beacon-APIs#642](ethereum/beacon-APIs#642) and [ethereum/keymanager-APIs#94](ethereum/keymanager-APIs#94). URLs with and without a trailing slash produce the same auth data.

Closes sigp#9796
Closes sigp#10076


Co-authored-by: Mark Mackey <mark@sigmaprime.io>
nflaig added a commit to ethereum/keymanager-APIs that referenced this pull request Sep 18, 2026
Aligns the `auth_data` default with ethereum/builder-specs#168, the builder's hostname instead of the URL bytes verbatim, and updates the examples accordingly.
nflaig added a commit to ethereum/beacon-APIs that referenced this pull request Sep 18, 2026
Aligns the `data` default with
ethereum/builder-specs#168, the builder's
hostname instead of the URL bytes verbatim.
@nflaig
nflaig merged commit 61aeca4 into ethereum:main Sep 18, 2026
3 checks passed
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.

6 participants