Read the registry page generated from the chain¶
As Alice, you hold a registry's state token and the packaged release, and nothing else: no wallet file of yours, nothing from the person who created the registry. You run one command and read which registry this is, which release it runs, what its rules are and what it holds now. As Bob, on your own machine, you run the same command: reading the same chain state with the same release gives you the same bytes. As an integrator, you want to know what the page does not prove, and the page says so itself.
flowchart LR
token[state token] --> describe
release[packaged release<br/>blueprint plus version file] --> describe
describe{{registry describe}} -->|reads, never writes| koios[public indexer]
koios -->|history of the token| replay[public replay<br/>checked from create]
replay --> page[the registry page<br/>text or JSON]
release --> page
Read it¶
From the release directory, with the state token:
singular registry describe --blueprint plutus.json \
--state-token "$state_token" \
--koios-url "$koios_url" --network-magic 1
A program reads the same facts with the json switch:
singular registry describe --blueprint plutus.json \
--state-token "$state_token" \
--koios-url "$koios_url" --network-magic 1 --json
The command takes the state token, the blueprint of the packaged release, a provider and a network. It takes no wallet, no signing key, no state directory and no file of any actor; any other setting is refused by name before anything is read. The version label comes from the version file beside the blueprint. A success prints the page alone and writes no file; every refusal prints one JSON receipt and exits non-zero.
| Section | What you read | Where it comes from |
|---|---|---|
| Registry | the state token, the live state output, the five script hashes the release derives | the token, the release, the live state output |
| Release | version label, blueprint title and checksum, applied application script hash, links to that version's release and documentation asset | the release alone; the links are computed from the label, never fetched |
| Rules | processing window, retract window, tip per request, key length bound, anyone may build a fold from public inputs | the state datum and the release's own limit |
| State | root, active and terminal key counts, folds since create, create transaction, last fold, pending requests with owner, key, edge, submission time and locked value | the public replay and the live request outputs |
| Limits | what is not shown and not claimed | fixed text |
The page carries no clock, no chain tip and no session identity, so identical inputs give identical bytes. Pending requests appear in one fixed order. The text and the JSON carry the same fields.
A page from the two-actor run¶
Alice's page after her own fold, on the development network, exactly as the command printed it:
command: describe
outcome: success
registry:
stateToken: 68df9c42ebd4468be130e9cd5538a7af39cc31c146cda45f274cccc5.1d5542bdf2b2c8c76728a5935edd71676d1df5f389c70863b6a4d15fe33bde26
stateOutput: 19c5fb15336e7de3dbbe8c8c1009c1927306441fb403eaf9aa416d45a92b79b7#0
stateScript: 68df9c42ebd4468be130e9cd5538a7af39cc31c146cda45f274cccc5
applicationScript: 1d906e06f8c0570316336844b3960935dee26c162e36cf9a17597b7a
activeScript: 847e1671c3ce4e9c13c28c51b6f563f7d9d7cc3996c744a455715b09
absentScript: ea2d49ce6945088b9657e093e24939a6c87ce3b0371b2c49a327b0b
terminalScript: f58e458aeeacac74f13d2e367a6793ac997a54867ba2e5b63dfbc176
release:
version: 0.10.1
blueprintTitle: singular/registry
blueprintSha: b08853db256269379ca60b25b28f435d9651c8b893e9a1af21472c9941078bad
applicationHash: 1d906e06f8c0570316336844b3960935dee26c162e36cf9a17597b7a
releaseUrl: https://github.com/lambdasistemi/singular/releases/tag/v0.10.1
docsUrl: https://github.com/lambdasistemi/singular/releases/download/v0.10.1/singular-docs-0.10.1.tar.gz
rules:
processTime: 120000
retractTime: 120000
tip: 1000000
maxKeyBytes: 32
publicFold: anyone may build a fold from the public view (Singular.Statements.fold_inputs_public)
state:
root: 58397587c712dcf8e99043ab07b63dfe38fe3628000a1b09e4805f647570b76b
activeKeys: 1
terminalKeys: 0
foldsSinceCreate: 1
createTransaction: 05377065127df10ea376c6c4d8b83aeccbc6ff79ad0cfd85a6373b9886aaac47
lastFold: 19c5fb15336e7de3dbbe8c8c1009c1927306441fb403eaf9aa416d45a92b79b7
stateOutput: 19c5fb15336e7de3dbbe8c8c1009c1927306441fb403eaf9aa416d45a92b79b7#0
pendingRequests: []
provenance: the page shows the public history of the state token from create to the live state output, each fold's rebuilt root checked against the root recorded in that fold's state datum, and nothing beyond it. The history was read from Koios. The provider's answers are unverified: it supplies raw facts and untrusted reconstruction material, no ledger proofs and no anchor. The release label is the archive's own claim. The page is unsigned.
One active key, no terminal keys, one fold since create: Alice's own insertion, folded by her, read back under the fold's root.
What the page does not prove¶
The provenance line says it in fixed text: the page shows the public history of the state token from create to the live state output, each fold's rebuilt root checked against the root recorded in that fold's state datum, and nothing beyond it. The history was read from Koios. The provider's answers are unverified: raw facts and untrusted reconstruction material, no ledger proofs and no anchor. The release label is the archive's own claim. The page is unsigned.
Refusals¶
| When | What you see |
|---|---|
| A wallet, key, state directory or other write setting is given | Refused by name, before any read |
| The version file is missing, unreadable or not a version | Refused by name; no release label is printed |
| The blueprint is another release's | The foreign-release refusal, as other commands print it |
| The indexer cannot be read | The node-unavailable outcome, as other commands print it |
| The history is incomplete or does not chain to the live root | The named trie refusal; no page is printed |
A refusal prints one JSON receipt on standard output with a non-zero exit status, as every command does.
What is not in this page¶
A block anchor for the last fold waits on its own provider read. The documentation links are computed from the claimed version, not checked against a published asset. The independently derived action identity in the public report waits on its own slice. None of these changes what the page shows; each arrives separately.