Skip to main content

Module pairing

Module pairing 

Source
Expand description

The DID<->store bidirectional-pairing predicate, as pure types over supplied Chia records.

A store is the authoritative profile of an identity anchor only when BOTH links hold:

  1. Discovery – the store’s description names the DID (description == the DID string).
  2. Authority – the store was LAUNCHED FROM the identity singleton, i.e. the store’s launcher coin’s PARENT is a genuine coin IN THE DID SINGLETON’S LINEAGE (launch-from-DID lineage – unforgeable, inherent at launch; no metadata spend, no transfer/ownership layer).

§Why authority is lineage MEMBERSHIP, not tip EQUALITY

A store (or NFT) launched from a DID parents its launcher coin to the DID coin AS IT EXISTED AT SPEND TIME (Cn), and that SAME spend RECREATES the DID singleton, advancing it to Cn+1 (chip35’s IntermediateLauncher::new(did.coin.coin_id(), ..) + did.update). So the launcher’s parent is Cn while the singleton’s CURRENT tip is already Cn+1 – they never match. Binding authority to == tip would therefore reject EVERY legitimately-launched profile store. Authority is instead MEMBERSHIP: the launcher’s parent must be a genuine coin in the DID singleton’s lineage (launcher -> tip inclusive). This keeps the security property – producing ANY coin in the victim DID’s lineage requires the victim’s key, so an attacker’s coin is never a member and the link stays unforgeable – while accepting a store parented to ANY historical DID coin.

Discovery alone is forgeable (anyone can put any DID in their store description), so a consumer MUST require BOTH links – description-only is REJECTED. WU1 supplies the predicate over caller-provided records built from canonical chia-protocol types; WU3 wires the chain fetch that populates the lineage (a walk from the DID launcher to its current tip).

Structs§

IdentitySingleton
The identity anchor a store claims to belong to.
PairingOutcome
The result of evaluating the pairing predicate – each link reported independently.
SingletonLineage
The lineage of a DID identity singleton: every coin id from the launcher spend forward to the current unspent tip.
StoreOwnershipProof
A convenience bundle of the (singleton, store) records the pairing predicate runs over.
StoreRecord
The record a caller supplies about a candidate profile store.

Functions§

evaluate_pairing
Evaluates both pairing links between store and singleton, reporting each independently.
is_authoritative_profile
Returns true iff store is the authoritative profile of singleton (BOTH links required).
store_belongs_to_did
Returns true iff the chip35 DataLayer store belongs to the identity singleton.