Open protocol for verified blockchain resource sharing.
One file format. Every chain. Cryptographically verifiable.
Website · App · Docs · Whitepaper · Protocol Spec
Notareum is a Universal Transfer Interface (UTI) protocol that replaces error-prone copy-paste address sharing with verifiable .nota files: portable, cryptographically signed containers for any blockchain resource.
A .nota file can represent a wallet address, smart contract, transaction hash, NFT, or IPFS content identifier. It carries chain context, verification status, and a cryptographic signature that proves the resource is exactly what it claims to be.
The protocol is secured by a decentralized network of staked validators who attest to resource authenticity, governed by the $NOTA token.
alice.nota
├── type: "address"
├── chain: { name: "ethereum", chainId: 1 }
├── resource: { identifier: "0xd8dA...6045", name: "Alice" }
├── verification: { status: "verified", level: "enhanced" }
└── signature: { algorithm: "ECDSA", ... }
Your wallet parses the .nota file, verifies the signature and on-chain attestations, and displays: "Verified: Alice (ETH)" before you send a single wei.
| Repository | Description |
|---|---|
protocol |
Versioned protocol specification (the constitution) |
contracts |
Solidity smart contracts (Registry, Verification Engine, Staking, Governance) |
sdk |
SDK umbrella linking all language implementations |
notareum-ts-sdk |
TypeScript SDK (@notareum/sdk) |
notareum-py-sdk |
Python SDK (notareum) |
notareum-rs-sdk |
Rust SDK (notareum-sdk, alpha) |
dapp |
Reference dApp (app.notareum.com) |
docs |
Protocol documentation (docs.notareum.com) |
whitepaper |
Protocol whitepaper (LaTeX) |
website |
notareum.com |
TypeScript
import { Notareum } from "@notareum/sdk";
const ntm = Notareum({ provider, signer, contracts });
// Create a verified .nota file
const nota = await ntm.nota
.create({ type: "address", chainId: 1, chainName: "ethereum", identifier: "0x..." })
.sign(signer);
// Register on-chain
await ntm.registry.registerResource(0, 1n, "0x...", proofHash);Python
from notareum import Notareum
ntm = Notareum(provider=w3, contracts={...})
nota = ntm.nota.create(type="address", chain_id=1, chain_name="ethereum", identifier="0x...")
signed = nota.sign(private_key)┌─────────────────────────────────────────────────┐
│ SDK Layer │
│ TypeScript · Python · Rust · Go · ... │
├─────────────────────────────────────────────────┤
│ Smart Contracts │
│ Registry · Verification Engine · Staking │
│ NOTA Token · veNOTA · Fee Manager │
├─────────────────────────────────────────────────┤
│ Validator Network │
│ Staked validators attest to resource identity │
├─────────────────────────────────────────────────┤
│ .nota File Format │
│ Portable · Signed · Chain-aware · Verifiable │
└─────────────────────────────────────────────────┘
Each SDK provides four core modules per the protocol specification:
- Parser: read, write, and validate
.notafiles - Signer: generate and verify cryptographic signatures (EIP-191)
- Verifier: interact with on-chain verification contracts
- UI Components: plug-in components for wallet and application interfaces
| SDK | Core | Clients | Tests |
|---|---|---|---|
| TypeScript | ✅ | ✅ | 159 |
| Python | ✅ | ✅ | 189 |
| Rust | ✅ | alpha | 127 |
| Go | planned | planned | -- |
| Swift | planned | planned | -- |
| Kotlin | planned | planned | -- |
Notareum is MIT-licensed and open to contributions. Every repository accepts pull requests.
Before contributing:
- Read the protocol specification to understand the system
- Check the repository-specific README for setup instructions
- All implementations must pass cross-language test vectors for parity
All Notareum repositories are released under the MIT License.
Notareum is a public good protocol. Open source, open freedom, open everything.