Skip to content

Delegation

ARK has no central authority handing out guarantees. It has namespaces handed down, and at each step the recipient takes on the promise. arkhe's ledger is a record of that chain.

flowchart TD
    RA["NAAN holder<br/><small>e.g. a national institute</small>"]
    RA -->|"carves out /x9"| I1["Organisation A"]
    RA -->|"carves out /y2"| I2["Organisation B"]
    RA -->|"/z1 delegated onward"| EX["External minter"]
    I1 --> C1["repository system"]
    I1 --> C2["bulk import job"]
    I2 --> C3["repository system"]

Two things travel down that chain, and they are not the same thing:

  • the namespace — which names you may create, and
  • the commitment — what you promise about what you created.

Reach

Every principal — a person signing in, or a system holding a key — carries a reach, and it is an attribute of the registration. Nothing in a request or a token can widen it.

system Every NAAN. The operator of the registry — the side that hands namespaces out
naan Everything under one NAAN. The organisation holding it
manager One organisation. Optionally pinned to a single shoulder

Nobody can grant more than they hold. A NAAN administrator cannot create a system administrator; an organisation administrator cannot create a principal for another organisation.

Why the shoulder is not in the request

arklet took {naan, shoulder} from the request body and authorised at NAAN level only, so a misconfiguration — or a lie — reached another organisation's namespace. arkhe derives the shoulder from the principal, which closes that and handles routing among many organisations at the same time.

Shoulder states

A namespace, once handed out, cannot be taken back. So "held but not usable" and "no longer minting" have to be states rather than deletions.

stateDiagram-v2
    [*] --> reserved: created with --reserve
    [*] --> active: created
    reserved --> active
    reserved --> delegated
    active --> delegated
    active --> retired
    delegated --> active
    delegated --> retired
    retired --> [*]: existing ARKs keep resolving

retired has no way back. Reviving a retired namespace cannot rule out that something outside used one of its names in the meantime — and re-issuing a name that someone else already used is exactly what NR forbids.

delegated requires a minter to point at: if minting happens elsewhere, a request to mint must be told where to go. arkhe answers 307 with the location and does not proxy — proxying would mean that a lost response could leave an ARK minted over there that nobody here knows about.

Organisations come and go

  • Succession — an organisation merges into another. The shoulders move; the ARKs do not change at all. What changes is who mints next.
  • Departure — an organisation leaves but continues to exist. Minting stops; resolution continues forever, and the targets can be redirected to the organisation's own resolver so that nothing further is asked of us.

Both are covered in Succession and departure.

When the delegate is another arkhe

Everything above delegates to an organisation, but the same mechanism hands a namespace to another arkhe: an instance per shoulder, a NAAN per site, or a closed instance whose namespace alone is known above. Each arrangement and what it costs is in Running several arkhe.