Skip to content

Quids (identities)

A quid is the primitive identity object in the protocol. It is a public key plus metadata. The quid ID is the first 16 hex characters of sha256(publicKey).

type Quid struct {
ID string // 16-char hex from publicKey
PublicKey []byte // ECDSA P-256, compressed (32 bytes)
Created int64 // unix seconds
MetaData map[string]interface{} // app-defined
}

A quid can represent a person, organization, device, AI agent, document, contract, or any entity that needs to sign things. The protocol does not assign semantics; your application does.

  • ECDSA P-256 for signatures. Curve and hash are fixed so cross-SDK signatures are interoperable.
  • Self-sovereign, the application holds the private key; the node never sees it for operations that are locally signed.
  • Recoverable via guardian quorum (see key lifecycle) without central escrow.
  • Auditable, every transaction affecting a quid is signed, nonced, and anchored into a block.

The IDENTITY transaction type creates and updates a quid’s metadata. It carries an updateNonce that must strictly increase with each update, so racing updates from compromised copies are rejected.

  • A trust edge is declared from one quid to another in a specific domain. See trust.
  • A title (asset ownership) is held by one or more quids, each with a float percentage summing to exactly 100.0.
  • An event stream is bound to a quid’s subject ID; appending to it requires a signature from the quid’s current epoch key.

Each quid has a current epoch. Keys are rotated by anchoring a rotation transaction that moves the epoch forward; new signatures must be on the new epoch’s key. See key lifecycle and QDP-0001: Global Nonce Ledger.