Skip to main content

Cross-Chain Identity

A single entity usually operates on multiple chains. A DAO has a treasury on Ethereum, ops accounts on Arbitrum, grants on Base, a Solana program, and a Bitcoin cold vault. Today, linking these addresses to one identity depends on convention: a Twitter bio, a governance forum post, a page on the website. None of those are cryptographic. Notareum binds an issuer identity to addresses across every chain through signed .nota files that share an issuer DID, producing a verifiable cross-chain identity graph.

The model

Every .nota file references the same issuer DID and is signed by a key listed in that DID document. Consumers resolve the DID, enumerate the authorized keys, and verify each address .nota against the appropriate key for that chain.

DIDs as identity anchors

Notareum uses W3C Decentralized Identifiers (DIDs) as the canonical issuer anchor. The two most common methods are:
  • did:web:acmedao.xyz resolves to https://acmedao.xyz/.well-known/did.json.
  • did:pkh:eip155:1:0x... derives directly from an Ethereum address.
A DID document lists the set of public keys authorized to sign on behalf of the issuer, each key’s publicKeyMultibase, and the chains it is valid for. Example:
The issuer controls the DID document; the document controls which keys sign which chains; each chain’s .nota carries a signature from the correct key. Revoking a key is a DID document update, which cascades to every .nota that key signed.

Binding chains per issuer

The same fluent API handles EVM, Solana, Bitcoin, and Cosmos. Each SDK dispatches signing to a chain-appropriate signer; the resulting .nota is canonically serialized so signature semantics are unambiguous.

Chain identifier conventions

chainId and chainName are the two identity coordinates. The protocol follows these conventions: The SDK exposes a chainIdToName helper and a reverse chainNameToId for consistent binding.

Consumer resolution

A consumer verifying a payment claim like “send to Acme DAO’s Arbitrum treasury” follows this path:

Proving cross-chain control

Claiming an address on another chain is cheap. Proving control requires the signing key for that chain to sign a payload bound to the issuer identity. Notareum provides a standard control proof:
A consumer checks that proof.signature.signer matches the address and that the address is bound to the stated DID. This is the .nota analogue of signing a message in MetaMask to prove account control.

Cross-chain revocation

Revocation is key-scoped, not chain-scoped. Three revocation paths:
  1. Revoke a specific .nota via NotaRegistry.revokeResource. Only that chain/address pair is affected.
  2. Revoke a key in the DID document. Every .nota signed by that key is implicitly untrusted going forward. Consumers checking DID state reject new verifications but can still honor receipts issued before revocation (if timestamps are within the key’s validity window).
  3. Revoke the issuer entirely. The issuer DID is marked retired; all resources under that DID are untrusted.

Integration patterns

  • Wallets render “Acme DAO (7 chains verified)” with a single issuer query, then route sends to the right chain/address pair.
  • Block explorers cluster addresses by issuer DID across chains.
  • Cross-chain bridges require sender and recipient to be addresses bound to the same issuer DID as an anti-phishing guard.
  • Compliance tooling builds entity-level reports spanning every chain without manual mapping.