Expand description
Registered domain selectors for protocol-visible hash commitments.
This module follows the Miden domain-separation RFC (https://github.com/0xMiden/crypto/pull/1026): consensus-critical domains use registered numeric identifiers rather than hashed strings, packed as
selector = (domain_id << 8) | versionwith domain_id a registered 24-bit integer (>= 1) and version an 8-bit per-domain
version (>= 1). The selector rides in the second capacity element of the Poseidon2 sponge
(hash_elements_in_domain); the first capacity element carries the padding rule, and the third
marks empty input. The fourth capacity element is zero in the initial framing state.
§Provisional registry entries
The RFC’s draft registry allocates 0x010000..0x01ffff to miden-vm, with concrete entries
delegated to this repository. These are the range’s first entries, to be migrated into the
machine-readable registry when it lands:
| domain_id | version | domain |
|---|---|---|
0x010000 | 1 | kernel commitment (KERNEL_DOMAIN_TAG) |
0x010001 | 1 | execution claim (CLAIM_DOMAIN_TAG) |
0x010002 | 1 | proof request key (PROOF_REQUEST_DOMAIN_TAG) |
Selectors share one capacity namespace with the merge_in_domain values used for MAST
control-block hashing. Those are opcode-sized (< 256) while every registered selector is
>= 257 (domain_id >= 1), so those two ranges cannot collide. Distinctness among registered
selectors is the registry’s responsibility: each domain_id is allocated once within its
maintainer’s range, and the three defined here are pinned distinct by
registry_entries_are_valid_and_distinct_selectors.
Constants§
- EXECUTION_
CLAIM_ DOMAIN_ ID - Registered domain id for the execution-claim commitment.
- KERNEL_
COMMITMENT_ DOMAIN_ ID - Registered domain id for the kernel commitment.
- PROOF_
REQUEST_ DOMAIN_ ID - Registered domain id for the proof-request key.
Functions§
- domain_
selector - Packs a registered domain id and per-domain version into a domain selector.