ΛΛnemosyne  /  Documentation  /  Codex Entities

Codex Entities

Everything the Codex is allowed to store. Six entity types, each with its own structure, semantics, and storage rules. The Codex is the single instrument for managing all of these — your unified cryptographic vault.

Quick overview

#EntityWhat it holds
1Ouronet AccountsStandard Ѻ. + Smart Σ. accounts on Dalos curve
2Seed WordsKoala / Chainweaver / Eckowallet HD mnemonic seeds
3Pure Key PairsStandalone Stoa keypairs not derived from any seed
4StoaChain Accountsk: / c: / u: / w: / r: / named accounts
5Address BookSaved Ouronet + StoaChain accounts for reference / observation
6Codex Consumer SettingsPer-app preferences (OuronetUI, AncientHoldings, …)

1. Ouronet Accounts

The codex stores any number of Ouronet Accounts — both Standard (Ѻ.) and Smart (Σ.). Each account is built on the Dalos Elliptic Curve and exposes the slot model described in the dedicated Ouronet Accounts documentation.

Ѻ Standard Ouronet Account

Single-flow account. Has Public Key (immutable), Payment Key (rotatable), and Guard (rotatable, designed for keysets). Daily-use account; the CodexPrime is always a Standard account.

Example address:

Ѻ.éXødVţrřĄθ7ЛдUξjeßĉțιXTПЗÚĞqÝœÉэaLżØôĉмчPęăLĕéůäÒC…ÐOÉκнβдłлČлуáZĭDą8ĚHÃBÐЦmEBцÀÐвΘΪĭ5Ï7ξŔùrÑckeпёôšпχЪȚăì

Σ Smart Ouronet Account

Standard + two extra slots: Governor (for non-key-based authorization patterns) and Sovereign (a Standard Account that has sovereignty over this Smart Account). Built for governance, autonomous logic, and DAO-style accounts.

Example address:

Σ.WVЦwIξб0лζФψδ£ëï6пжÛŚтÃVţåĈâ4ыĚÌŻştÍÒŀÛР⁶0Ц…YoэπÃЦЦψÔşôüźíZTZuψ4QExΧψΥì6чλйsёЪΛjĚtθΛŻZSyΞЦЩЩ

→ Deep dive: Ouronet Accounts documentation covers all five slots (Public Key, Payment Key, Guard, Governor, Sovereign) with a worked example.

2. Seed Words (HD mnemonics)

The codex stores any number of hierarchical-deterministic (HD) seed phrases. Each seed produces a tree of keys; the codex tracks which derivation positions you've used. You can add keys consecutively (positions 0, 1, 2, …) or jump to any specific position as needed.

Three seed-word flavours are supported in v0.1, each using a different derivation convention from the Kadena ecosystem:

Koala — 24 words

BIP-39 English wordlist, 256-bit entropy (24 words). Originated with eckoWALLET's Koala mode. Signing pipeline: seed → BIP-39 → seed bytes → ED25519 keypair via NaCl.

Example phrase (illustrative):

abandon ability about above absent absorb abstract absurd abuse access accident account accuse achieve acid acoustic acquire across act action actor actress actual

Chainweaver — 12 words

BIP-39 English wordlist, 128-bit entropy (12 words). Native to Kadena's official Chainweaver wallet. Signing pipeline: seed → BIP-39 → Chainweaver-style derivation via WASM.

Example phrase (illustrative):

train ensure ankle fine magic hamster blade bag what bracket dizzy wheel

Eckowallet — 12 words

BIP-39 English wordlist, 128-bit entropy (12 words), with eckoWALLET-specific derivation path. Signing pipeline: seed → BIP-39 → Eckowallet-style derivation via WASM.

Same wordlist as Chainweaver, but a different BIP-32 derivation path produces different keys from the same words. The codex stamps the flavour at seed-creation so the right derivation is used at signing.

All three flavours store the mnemonic encrypted at the codex password. Decryption happens client-side on each sign; the mnemonic never leaves your device in plaintext.

Each seed has an accounts array — every key you've derived from that seed, with its derivation path and current chain guard. Add positions as you need them; the seed grows alongside you.

3. Pure Key Pairs

Standalone Stoa keypairs

Direct ED25519 public + private keys, not derived from any seed. The keypair IS the entity. Stored encrypted-at-rest under the codex password.

Used for:

  • One-off accounts where seed-recovery isn't desired
  • Ephemeral signers for short-lived purposes
  • System keys like the CodexGuard (Mnemosyne's on-chain authorization key) and the Duo Pure Prime backing the CodexPrime account
  • Capability-guarded accounts whose Payment Key needs to be a specific known public key

Pure keypairs cannot be regenerated from a mnemonic — losing them loses the key. When the codex package flags a Pure Keypair as part of the Duo Pure Prime (the two keys backing CodexPrime), it becomes undeletable to prevent accidental loss.

4. StoaChain Accounts

The codex stores any number of StoaChain accounts you own, plus any number you've added for observation only. StoaChain inherits Kadena's principal-account nomenclature — five reserved prefixes plus arbitrary named accounts:

The principal-account prefixes

k:
Keyset-backed account. Name is k: + a single public key. The account's guard is a single-key keys-all keyset containing exactly that pubkey. The default account type — what every fresh address starts as.
c:
Capability-guarded account. Name is c: + hash of a capability guard. Used for autonomous accounts controlled by Pact module logic (a capability inside a contract), not by a private key. Common pattern: a token contract owns its own treasury via a c: account.
u:
User-guard account. Name is u: + hash of a user-guard. The guard is a custom Pact function returning bool — anything programmable, including composition over capabilities, time-locks, multi-party logic, etc.
w:
Multi-key keyset principal account. Name is w:<keysetHash>:<predicate> — a keyset containing multiple keys, with a predicate selecting how many of them must sign (keys-all, keys-any, keys-2, etc.). The format covers every multi-sig arrangement: 2-of-2, 3-of-5, any-of-N, all-of-N. Contrast with k:, which is the shorthand for the single-key case.
r:
Keyset-reference principal account. Name is r:<namespace.keysetName>. The account's guard is a reference to a named keyset defined on chain in a specific namespace — the actual keys live in the referenced keyset and can be updated separately from the account itself. Useful when many accounts should share a single rotatable keyset.
(none)
Named account. An arbitrary string with no prefix. Created with an explicit guard at creation time. Pre-principal-account convention; still valid. Example: mihai-treasury.

The codex distinguishes between accounts you own (matching guards in your seeds / pure-keys) and accounts you've added for observation (read-only viewing of any StoaChain account, regardless of prefix or ownership).

5. Address Book

Saved accounts for reference

Stores any number of Ouronet Accounts and StoaChain accounts you want to remember — friends, business contacts, common destinations, exchanges, DAOs, treasury addresses.

Each entry has:

  • Address (the full Ѻ., Σ., k:, or other identifier)
  • Display name (the human-readable label)
  • Optional notes / tags
  • Account-type metadata (Ouronet Standard/Smart, StoaChain k/c/u/w/r/named)

Address book entries are local convenience — they don't change anything on chain. Pure metadata for your own reference.

6. Codex Consumer Settings

Per-app preferences inside the Codex

Each recognised Codex Consumer (OuronetUI, AncientHoldings, the upcoming Demiourgos Streaming Platform, any future app) gets its own settings slot inside the codex. Examples:

  • OuronetUI: chosen StoaChain node, gas-station preferences, address-book sort order, theme, language
  • AncientHoldings: dashboard layout, default views, notification preferences
  • Demiourgos Streaming Platform: playback preferences, parental controls, subscription state

The property that matters: one codex, many apps, consistent preferences everywhere. Switch from OuronetUI on your desktop to OuronetUI on your phone — same settings, no re-configuration.

Each app reads/writes only its own settings slot — apps never collide with each other's preferences. The codex package enforces this via scoped keys.

Future expansion

What v0.1 doesn't store yet

The codex architecture is intentionally extensible. v0.1 covers the six entity types above; future versions are planned to add:

  • future  Other seed-word derivations — SLIP-0010, Polkadot SR25519, Solana derivation paths, custom curves
  • future  Foreign blockchain accounts — Bitcoin, Ethereum, Solana, MultiversX, etc. with their address formats and signing paths
  • future  Encrypted notes / arbitrary blobs (a generic key-value store inside the codex)
  • future  Hardware-wallet-bridged accounts (Ledger, Trezor via WebHID)

The codex's wire format (the v1.2 blob format defined in @stoachain/ouronet-core/codex) is frozen, but additive fields can land at minor bumps without breaking backwards compatibility. The same Codex Identity will continue working as more entity types come online.

Related