Invariants / DC-LEDGER-10

DC-LEDGER-10

DC derived enforced

Credential 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

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

Cross-references

Strengthened in

Open obligation