A collection of runnable TypeScript examples that demonstrate how the Notareum Protocol solves concrete problems in crypto UX and infrastructure.
Notareum is a decentralized trust layer for on-chain resources. It lets any
address, transaction, contract, NFT, IPFS CID, or custom resource carry a
portable, cryptographically signed, optionally on-chain-verified credential
called a .nota file. Validators stake NOTA to earn the right to attest to
the authenticity of these resources. Governance is done with veNOTA.
See the SDK, the protocol contracts, and the whitepaper for more.
| # | Example | What it shows |
|---|---|---|
| 01 | Wallet Address Sharing | Sign an address attestation so the receiver knows the funds are going where they should. |
| 02 | Payment Requests | Merchants mint signed payment requests with token and amount fields. |
| 03 | Smart Contract Verification | Contract authors register their deployment + ABI hash and request verification. |
| 04 | NFT Provenance | A studio publishes signed provenance for an NFT that marketplaces can verify. |
| 05 | Cross-Chain Identity | One address on many chains, linked via a signed identity manifest. |
| 06 | Exchange Deposit Verification | An exchange signs deposit addresses so user wallets can reject phishing sites. |
| 07 | Institutional Treasury | A foundation registers its treasury and requests INSTITUTIONAL verification. |
| 08 | Validator Staking | Full staking lifecycle: stake, tier, daily limits, unstake, claim. |
| 09 | Governance Voting | Lock NOTA for veNOTA, measure time-weighted voting power, extend, unlock. |
| 10 | .nota File Operations | Reference tour of create/sign/parse/validate/serialize/resourceId for every type. |
- Node.js 18 or newer
- npm (or pnpm / yarn)
- The
@notareum/sdkpackage built in the sibling directory. This repo depends on it via a file path:file:../notareum-ts-sdk.
# From the SDK directory (once)
cd ../notareum-ts-sdk
npm install
npm run buildnpm install
# Run any example
npx tsx 01-wallet-address-sharing/index.ts
npx tsx 02-payment-requests/index.ts
# ... etc.
# Or use the numbered shortcuts from package.json
npm run 01
npm run 10Examples 01, 02, 04 (marketplace side), 05, 06, 10 are fully offline. They
build, sign, parse, validate, and verify .nota files without touching a
network. They produce real output every time.
Examples 03, 07, 08, 09 include on-chain calls to the Notareum contracts
(Registry, Verification Engine, Staking, veNOTA, Fee Manager). Those calls
are wrapped so the scripts still complete against the placeholder contract
addresses shipped in shared/config.ts. To execute them against a live
network, set:
export RPC_URL=https://your-rpc-endpoint
export PRIVATE_KEY=0x... # funded signerand update the addresses in shared/config.ts to your deployed contracts.
usecases-and-examples/
├── README.md this file
├── package.json depends on @notareum/sdk + ethers + tsx
├── tsconfig.json strict ESM, target ES2022
├── LICENSE MIT
├── shared/
│ ├── config.ts provider, demo wallet, contracts
│ └── utils.ts console helpers + tryOnChain wrapper
├── 01-wallet-address-sharing/
├── 02-payment-requests/
├── 03-smart-contract-verification/
├── 04-nft-provenance/
├── 05-cross-chain-identity/
├── 06-exchange-deposit-verification/
├── 07-institutional-treasury/
├── 08-validator-staking/
├── 09-governance-voting/
└── 10-nota-file-operations/
Each example directory has its own README.md that explains the use case
and a single index.ts that runs end to end.
MIT. See LICENSE.