Skip to main content

Accounts & Identity

Orbinum implements a layered identity system built on top of the pallet-account-mapping runtime module. Every account starts as a bare Substrate address and can progressively attach more identity: a human-readable alias, verified links to wallets on other chains, and private links whose addresses are never written on-chain.


Identity layers

Layer 0 — Substrate account

Every wallet starts here. An AccountId32 (SS58) that holds ORB and signs extrinsics. No registration required.

Layer 1 — EVM mapping

Optionally links an Ethereum H160 address to the Substrate account. Both addresses share the same ORB balance. Compatible with MetaMask.

Layer 2 — Alias

A human-readable on-chain name ([a-z0-9_], min 3 characters). Required before chain links or metadata can be attached. Transferable and tradeable.

Layer 3 — Chain links

Publicly verified addresses on other blockchains (Ethereum, Solana, etc.). Each link is verified on-chain via a cryptographic signature from the external wallet.

Layer 4 — Private links

Cross-chain wallet ownership registered as a Poseidon commitment. The real address is never written on-chain. Can be revealed selectively or used to dispatch calls via ZK proof.

Optional — Metadata

Profile fields: display name, bio, and avatar (IPFS CID). Requires an alias. Gated to prevent spam.


Dependency map

The layers are additive. Higher layers require lower ones:

AccountId32 (always exists)
└── EVM mapping → optional, independent
└── Alias → optional, unlocks layers 3–4 and metadata
├── Chain links → up to 16 public, verified
├── Private links → up to 16 private (shared limit with public)
└── Metadata → display_name / bio / avatar

An account can hold an EVM mapping without an alias, and an alias without any chain links. Each layer is independently managed.


Runtime module

All identity operations are handled by pallet-account-mapping (pallet index 14 in the Orbinum runtime). The pallet stores:

Storage itemKeyValue
EthereumMappingsH160AccountId32
SubstrateMappingsAccountId32H160
IdentitiesAliasIdentityRecord
AccountAliasesAccountId32Alias
PrivateChainLinksAliasVec<PrivateChainLink>
ReverseChainLinks(chain_id, address)AccountId32
AccountMetadatasAccountId32AccountMetadata
SupportedChainschain_idSignatureScheme

Reading this section

Each sub-page covers one layer in depth: