Skip to main content

Integrating Notareum

This guide is for teams building wallets, exchanges, block explorers, marketplaces, and custody platforms that want to surface Notareum verification signals to their users. The integration is entirely read-side: your product becomes a richer consumer of Notareum without needing to run validators or manage verification requests.

What you get from a basic integration

  • A protocol-level “is this address legitimate and at what level” signal that does not require per-partner allowlists.
  • Resolution of human-readable aliases (alice.eth-style) to addresses, cross-chain.
  • Trusted metadata (issuer name, resource description) for display in recipient-preview flows.
  • Revocation awareness: you can instantly stop treating an address as verified the moment the owner revokes.

Integration patterns

Wallet integration

  1. At “paste address” time, resolve the user input against resolveAlias(). If it matches an alias, swap the alias for the canonical address before letting the user sign.
  2. Before showing the confirm screen, read getResource(resourceId) for the recipient.
  3. Render a verification badge based on verificationLevel:
    • 0 (unregistered): no badge, optionally “not on Notareum”.
    • 0 registered only: neutral badge (“Registered on Notareum”).
    • BASIC: green “Verified (Basic)”.
    • ENHANCED: blue “Verified (Enhanced)”.
    • INSTITUTIONAL: gold “Institutional”.
  4. If is_revoked, show a hard red warning and require an extra confirmation.

Exchange deposit address display

Exchanges can publish their deposit addresses as verified .nota files, register them at INSTITUTIONAL level, and instruct users to look up the address on any Notareum-aware wallet or explorer. This materially reduces phishing risk. See Exchange Deposits.

Block explorer integration

Every address page, transaction page, and contract page benefits from a Notareum lookup:
  • Address page: show verification badge, issuer name, alias.
  • Contract page: link to the registering developer, show verification level, flag revoked contracts.
  • NFT page: show proof chain back to the creator, NFT-level verification if present.

Payment requests

Merchants attach a .nota file to checkout pages describing the receiving address. Wallets parse the file, display merchant info, and warn if the address is not registered or has been revoked. See Payment Requests.

Performance tips

  • Cache resource info. Registry reads are inexpensive but still RPC round-trips. Cache (resourceId -> ResourceInfo) with a short TTL (for example 60 seconds) and invalidate on revocation events.
  • Subscribe to events. Listening to ResourceRegistered, ResourceRevoked, and VerificationApproved events keeps local caches current without polling.
  • Batch resolutions. If your UI renders a list, multicall the registry reads. The SDK does not ship a multicall helper out of the box; use alloy-multicall, web3-multicall.js, or Multicall3 directly.

Security notes

  • Always match proofHash when given a .nota file. If a user sends you a .nota file, serialize it canonically, keccak256 it, and compare to the on-chain proofHash before trusting metadata from the file.
  • Treat level 0 as untrusted. Registered-but-unverified resources prove only that someone claimed the identifier, not that it is legitimate.
  • Watch the revocation flag on every read. A stale cache that misses a revocation is a live security risk.
  • Respect the tier in display. Do not present BASIC as ENHANCED; your users are relying on the signal to be the truth of what on-chain says.

Minimum viable integration

That function is all most wallets need to ship their first Notareum release.

Going further