← Book map

Chapter 09 · Families

The only family that creates something

Every other request assumes the identities exist. Provisioning negotiates one into existence — and then hands off to chain transactions the library does not build.

Provisioning flow A provisioning request names a system, optional parent, and a proposed identity; the decision answers yes or no; the result reports the outcome, and registration happens as a chain transaction. REQUEST → CHALLENGE → DECISION → RESULT provision request system · parent · URI provisioning challenge identity answer provisioning decision accept / reject result txid / error Outside the library: registernamecommitment → registeridentity (two chain transactions). The VDXF objects carry the intent; the wallet turns them into transactions.

FIGURE 9.1 · The only family that creates something new.

Provisioning is a negotiation, not a transaction

Every other family assumes the identities involved already exist. Provisioning is the exception: it asks a system (or a parent identity) to create a new identity, and it therefore needs a challenge-response shape rather than a single message.

ProvisionIdentityDetails carries flags for system id (1), parent id (2), identity id (4) and URI (8). ProvisioningChallenge and ProvisioningDecision are the answer half; ProvisioningResult closes the loop with an outcome.

What the library does not do

It does not submit registernamecommitment or registeridentity. Those are ordinary chain transactions built elsewhere (in the wallet or a daemon RPC client). This is the most common confusion when reading the provisioning classes: they describe the request, not the registration.

Read provisioning last. It reuses the envelope, the signature container and the request/response split you already know — but adds a lifecycle of its own on top.

Reading the code

src/vdxf/classes/provisioning/
├── ProvisionIdentityDetails.ts
├── ProvisioningRequest.ts
├── ProvisioningChallenge.ts
├── ProvisioningDecision.ts
├── ProvisioningResponse.ts
└── ProvisioningResult.ts