Domains: where each part is documented

A map of the pages that document a domain on the IXO Protocol: its entity, its on-chain record, registration, privacy, the SDK calls and the query APIs.

A domain is the full presence of something on IXO: an organisation, a project, an asset, a deed or a device. Each domain is anchored by a Decentralized Identifier (DID), governed by one or more controllers, and extended with services, resources, accorded rights, linked claims, relationships and accounts. At its core is an entity, an NFT that can be owned. The entity is one part of the domain, not another name for it.

This page is a map. It covers the whole domain and says which page documents each part, so that you can go straight to the one you need. It does not repeat what those pages say. Manage entities covers the entity alone: creating it, transferring it and managing its accounts.

Where each detail lives

You want toRead this
Understand the parts of a domainCore concepts
Understand the data model and lifecycleDomain configuration
Understand the digital-twin modelDigital twins
Register a new domainRegister a domain
Create, transfer or verify the entity at a domain's coreManage entities
Change controllers, services, resources and rights in the on-chain recordUpdate a domain's on-chain record
Decide what to keep on the protocol and what to keep in IXO MatrixDesign privacy for a domain's data
Build with the SDKIXO MultiClient SDK and the @ixo/impactxclient-sdk README
Query domains and related stateBlocksync GraphQL API
Inspect raw entity messages and queriesgRPC gateway API

The shape of an entity message

Entity messages follow the same three steps as every IXO Protocol module: create a query or signing client, compose a message, then sign and broadcast it. The @ixo/impactxclient-sdk package exposes proto-derived message factories under ixo.*.

import { ixo, createSigningClient } from "@ixo/impactxclient-sdk";

const signingClient = await createSigningClient(RPC_ENDPOINT, offlineSigner);

const message = {
  typeUrl: "/ixo.entity.v1beta1.MsgCreateEntity",
  value: ixo.entity.v1beta1.MsgCreateEntity.fromPartial({
    // See the entity proto for the full field set:
    // https://github.com/ixofoundation/ixo-blockchain/tree/main/proto/ixo/entity/v1beta1
    ownerAddress: SIGNER_ADDRESS,
    entityType: "asset",
    context: [],
    verification: [],
    controller: [],
    service: [],
    linkedResource: [],
    accordedRight: [],
    linkedEntity: [],
    linkedClaim: [],
  }),
};

const fee = "auto";
const response = await signingClient.signAndBroadcast(SIGNER_ADDRESS, [message], fee);

The full set of entity messages is MsgCreateEntity, MsgUpdateEntity, MsgUpdateEntityVerified, MsgTransferEntity, MsgCreateEntityAccount, MsgGrantEntityAccountAuthz and MsgRevokeEntityAccountAuthz. They are generated from the x/entity proto definitions and exposed under ixo.entity.v1beta1.* on the SDK.

Next steps