Technical tutorials

Deploy assets. Wire claims. Prove holders.

A technical tutorial shelf for the token and identity operations that sit underneath compliant issuance: deploying tokens, deploying obligation classes, adding claim requirements, trusting issuers, issuing claims, adding claims, and revoking them.

Canonical flow
Registry gate to trusted proof to holder verified
1
Deploy token

deploy_token creates token_address, identity_registry_address, asset_id, and token_id.

2
Add requirements

add_token_claim_topic tells the IR which claim topics holders must present.

3
Trust issuers

add_token_trusted_issuer authorizes ClaimIssuer contracts for those topics.

4
Register identity

register_identity maps the recipient account into the token Identity Registry.

Tutorial index

Each card is a tutorial scaffold: purpose, endpoint, inputs, outputs, and the thing most likely to bite.

Step names match the pipeline descriptors.
End-to-end compliance gate

A verified holder needs two things.

1
Deploy token

deploy_token creates token_address, identity_registry_address, asset_id, and token_id.

2
Add requirements

add_token_claim_topic tells the IR which claim topics holders must present.

3
Trust issuers

add_token_trusted_issuer authorizes ClaimIssuer contracts for those topics.

4
Register identity

register_identity maps the recipient account into the token Identity Registry.

5
Issue claim

issue_claim signs the recipient proof and returns issued_claim_id.

6
Accept/add claim

accept_claim or add_claim writes the signed proof onto the target identity.

7
Mint or transfer

Only now does the ERC-3643 isVerified gate have both pieces: registration and valid claim.

Standard claim types

Use friendly names in the authoring layer.

The bridge translates these names to numeric ONCHAINID topic ids at dispatch time.

kyckybamlaccredited_investorretailwholesale
Key rule

`issue_claim` creates the proof. `register_identity` puts the target account inside the token or class Identity Registry. ERC-3643 verification needs both.

01 / deploy token

Deploy a compliant token

Create an ERC-3643 compliant token, its Identity Registry, compliance module wiring, and the asset registry record downstream steps will reference.

deploy_token -> deployAsset
Endpoint
POST /api/asset_register/deploy_workflow
Inputs
namesymboldecimalsclaim_topicstrusted_issuers
Outputs
token_addressidentity_registry_addresschain_idasset_idtoken_id
Tutorial steps
1

Choose the token name, symbol, and decimals.

2

Leave factory, compliance, and identity registry blank unless the chain needs explicit overrides.

3

Capture identity_registry_address and token_id for claim requirement and trusted issuer steps.

Watch: The token contract address is not the Identity Registry address. Claim requirements are configured on the IR.

02 / deploy class

Deploy an obligation class

Create a new ConfidentialObligation class proxy for notes, invoices, deal contracts, or other obligation NFTs that need their own mint and transfer policy.

deploy_contract -> deployContract
Endpoint
POST /api/asset_register/deploy_obligation_workflow
Inputs
namesymbolopen_mintingtransferableclass_ownerclaim_topicstrusted_issuers
Outputs
obligation_addressidentity_registryclaim_topics_registrytrusted_issuers_registrychain_id
Tutorial steps
1

Set name and symbol for the ERC-721 obligation class.

2

Decide whether the class is open-minting or owner-only, transferable or soul-bound.

3

Bind downstream createObligation steps to obligation_address so mints land in the new class.

Watch: A class can have its own Identity Registry. Do not assume a freshly deployed class uses the same IR as a token.

03 / add claim requirement

Add a claim requirement

Tell a token or class Identity Registry which proof a holder must carry before mint or transfer is allowed.

add_token_claim_topic -> addTokenClaimTopic
Endpoint
POST /asset_register/update_claim_requirements
Inputs
identity_registry_addresstoken_idclaim_topicchain_id
Outputs
transaction_id
Tutorial steps
1

Pick the compliance topic: kyc, kyb, aml, accredited_investor, retail, or wholesale.

2

Bind identity_registry_address from deploy_token, or bind token_id and let the derived input resolve the IR.

3

Add the topic once per token or class.

Watch: Adding the same claim topic twice is not idempotent and can revert on-chain.

04 / add trusted issuer

Add a trusted claim issuer

Authorize a ClaimIssuer contract to sign specific claim topics for a token or class Identity Registry.

add_token_trusted_issuer -> addTokenTrustedIssuer
Endpoint
POST /asset_register/update_claim_requirements
Inputs
identity_registry_addresstoken_idissuer_addressclaim_topicschain_id
Outputs
transaction_id
Tutorial steps
1

Use the ClaimIssuer contract address, not an ordinary wallet address.

2

Choose the topics that issuer may sign.

3

Pair this with issue_claim so recipients can actually satisfy the registry requirement.

Watch: This step is idempotent: re-adding the same issuer/topics pair is safe.

05 / issue claim

Issue a claim

Have an issuer sign a compliance claim for a target entity. The issued claim starts as pending until the target accepts or it is added on-chain.

issue_claim -> issueClaim
Endpoint
POST /claims_management/issue_claim
Inputs
target_user_idclaim_typeclaim_valueurichain_id
Outputs
issued_claim_idclaim_issuer_addresstopic
Tutorial steps
1

Resolve the target entity to its default account on the chosen chain.

2

Sign the claim against the target ONCHAINID identity.

3

Store issued_claim_id so accept, decline, re-issue, or revoke can reference the same signed claim.

Watch: Issuing a claim does not register the recipient in a token IR. register_identity is still required for new per-token IRs.

06 / add claim

Add or accept a claim on-chain

Write a signed claim onto an ONCHAINID identity, either directly with add_claim or by accepting a pending issued claim.

add_claim / accept_claim
Endpoint
POST /claims_management/add_claim
Inputs
account_addressclaim_type or topic/scheme/signature/datachain_iduriwallet_id
Outputs
statustimestamperror
Tutorial steps
1

Use account_address=self when the current identity receives the claim, or pass the target account address.

2

Prefer claim_type for the standard six claim families; use raw topic/scheme/signature/data for advanced ONCHAINID payloads.

3

For issued claims, call accept_claim with issued_claim_id so the pending row becomes an on-chain claim.

Watch: add_claim uses the selected vault wallet as issuer. Thread wallet_id when the issuer is not the JWT default wallet.

07 / revoke claim

Revoke a claim

Remove an issued claim from the target identity and mark the issued_claim row revoked, preserving the audit trail.

revoke_claim
Endpoint
POST /claims_management/revoke_claim
Inputs
issued_claim_id
Outputs
statustimestamperror
Tutorial steps
1

Load the issued_claim row by id.

2

Verify the caller is the original issuer.

3

Submit the on-chain revoke/remove message, then mark revoked_at on success.

Watch: Only the original issuer can revoke. Re-issue uses clear_revoked_signature against the same issued claim.

Footguns

The distinctions the tutorial should repeat.

Token address vs IR address

Transfers and balances use token_address. Claim topics and trusted issuers use identity_registry_address.

Issue claim vs register identity

issue_claim signs proof onto an ONCHAINID. register_identity adds the holder account to a specific token IR.

Claim issuer contract

Trusted issuer inputs expect the ClaimIssuer contract address. A normal wallet address is the wrong object.

Idempotency differs

add_token_claim_topic is not idempotent. add_token_trusted_issuer is safe to rerun with the same issuer/topics.