DC-LEDGER-10
DC derived enforcedCredential identity is faithful end-to-end: a stake/committee/DRep credential is a closed sum over {KeyHash, ScriptHash} of a 28-byte hash, never a tag-erased Hash28. Both era certificate decoders preserve the key/script discriminant (an unknown tag is a deterministic reject); the credential type makes a discriminant-less credential unrepresentable on the BLUE authority path (no Hash28->credential coercion); CertState (registrations/delegations/rewards) and ConwayGovState (vote_delegations/committee_hot_keys/drep_expiry) key on the discriminated credential, so a key-hash and a script-hash credential sharing 28 bytes are distinct authoritative-state keys (matching cardano-node's Credential-keyed UMap/VState); and the canonical fingerprint serializes the discriminant so two states differing only in a credential's key/script tag fingerprint differently. The discriminated representation is a deliberate cert-state + gov-state fingerprint migration (T-DET-01). Default scope is Shelley+; Byron is included only if proven to have an affected credential surface.
- Source
Cardano ledger spec (Credential = key|script across UTXOW/DELEG/GOVCERT; CIP-1694); IDD illegal-states-unrepresentable + determinism doctrine
- Cluster
- CL-LEDGER-VERDICT
- Authority surface
- BLUE credential representation fidelity
Enforcement trace
Code
- crates/ade_types/src/shelley/cert.rs
- crates/ade_codec/src/shelley/cert.rs
- crates/ade_codec/src/conway/cert.rs
- crates/ade_ledger/src/state.rs
- crates/ade_ledger/src/fingerprint.rs
- crates/ade_testkit/src/harness/snapshot_loader.rs
- crates/ade_ledger/src/governance.rs
- crates/ade_types/src/conway/governance.rs
- crates/ade_ledger/src/rules.rs
Tests 20
- shelley_credential_preserves_discriminant
- conway_credential_preserves_discriminant
- unknown_credential_tag_rejects
- discriminant_changes_fingerprint
- keyhash_scripthash_same_bytes_are_distinct_certstate
- keyhash_scripthash_same_bytes_are_distinct_govstate
- discriminant_changes_fingerprint_corpus
- credential_accumulation_replays_byte_identical
- committee_keyhash_scripthash_do_not_cross_resolve
- committee_keyhash_scripthash_same_bytes_distinct
- committee_discriminant_changes_fingerprint
- drep_keyhash_scripthash_do_not_cross_resolve
- drep_vote_discriminant_changes_fingerprint
- enactment_committee_changes_keyhash_scripthash_distinct
- update_committee_decodes_removed_added_threshold
- update_committee_keyhash_scripthash_members_distinct
- update_committee_decode_rejects_malformed
- update_committee_structured_fields_change_fingerprint
- enact_update_committee_keyhash_scripthash_distinct
- committee_oracle_mainnet_575_576_noop_agreement