This demo stores real KYC data on the Verus blockchain with per-field encryption. Each field is independently encrypted and can be selectively disclosed to different parties without revealing the rest.
midnight.bitcoins@) is a blockchain-native identity with its own key hierarchy, capable of holding encrypted data in its contentmultimap.HMAC-SHA256(walletSecret, fieldName) to derive opaque i-addresses. An observer cannot tell what fields exist or what they represent.signdata with createmmr: true builds an MMR where each field is a leaf with its own salt. This enables Merkle proofs for selective disclosure.getidentity. Opaque key names and encrypted blobs. No field names, no values — just ciphertext.No central server holds your data. The encrypted data lives on a decentralized UTXO blockchain secured by Bitcoin merge-mining. The identity owner controls all disclosure through cryptographic key sharing — not API permissions that a platform can revoke or leak.
Field-level granularity. Unlike all-or-nothing disclosure, each field has its own encryption envelope. Share your name without revealing your SSN. Prove you're over 16 without revealing your date of birth.
Verifiable attestations. Every disclosure includes a cryptographic signature from the identity owner, creating an immutable audit trail on-chain.
You are the identity owner (midnight.bitcoins@).
Select values for each field below. Data will be encrypted and stored on-chain under HMAC-derived opaque VDXF keys.
Raw getidentity output. Field names are HMAC-derived opaque i-addresses. Values are ChaCha20-Poly1305 encrypted blobs.
Service provider receives Name, Email, and age verification only. All other fields remain encrypted.
Regulated exchange receives ALL fields decrypted, plus attestation signature and audit trail.
A social media profile where you control exactly who sees what — enforced by cryptography, not platform policies. No database to breach, no admin override, no terms of service loopholes.
contentmultimap. Equivalent to a public profile on any social platform.The contentmultimap has a size limit (~4KB per value) — images don't fit on-chain. Instead, we split storage between the chain and IPFS:
encryptdata with the tier's z-address. The result is a ciphertext blob — not a valid image file.Double protection: Without the viewing key, you can't find the IPFS link (it's inside the encrypted post). Even if you guessed the CID, the image itself is encrypted. And the on-chain hash of the original image lets viewers verify it hasn't been tampered with.
Public-tier images can skip encryption and be uploaded directly to IPFS — they're meant to be seen by everyone. The CID is stored in cleartext in the contentmultimap.
To remove a follower's access, generate a new z-address for that tier and share the new viewing key only with current followers. The old key stops working for all new posts. This is cryptographic access revocation — no server needed.
The platform never has your private data. On traditional social media, the platform stores everything in plaintext and enforces access via software. A breach, a rogue employee, or a government request exposes everything. With Verus, the data is encrypted on a public blockchain — the "platform" is just a viewer that decrypts what the user's keys allow.
Posts are immutable and censorship-resistant. Content is stored on a merge-mined UTXO blockchain. No platform can delete your posts or deplatform you. Your identity and content persist regardless of any single service.
Portable identity. Your VerusID works across any application. Switch social media clients without losing followers, posts, or reputation. Your identity is not locked to any platform.
Your VerusID is your master password. Passwords are derived deterministically from your identity's secret spending key — they are never stored anywhere. The same identity always produces the same passwords.
sk) is extracted locally via z_exportkey. This 256-bit key is the root of all password derivation. It never leaves your device.vaultMaster = HMAC-SHA256(sk, "verus.vault.v1") — a purpose-specific subkey so the raw spending key is never used directly in password generation.siteKey = HMAC-SHA256(vaultMaster, "site.com.1") — each site + counter pair produces a unique 256-bit key. The counter enables password rotation.A-Z a-z 0-9 !@#$%A-Z a-z 0-90-9Only metadata is stored in the contentmultimap — site name, username, counter, length, and charset policy. All encrypted under an opaque VDXF key. The password itself is never stored anywhere — it is recomputed from the spending key every time.
No master password to forget. Your VerusID is the master key. As long as you control your identity (or have your wallet seed), you can regenerate every password. No cloud sync, no encrypted vault file to lose.
No server to breach. 1Password, LastPass, and Bitwarden store your encrypted vault on their servers. A breach means attackers get your vault (they just need your master password). With Verus, there is no vault — passwords are derived on-demand from a key that only exists in your wallet.
Password rotation is trivial. Increment the counter from 1 to 2 — you get a completely new password. The old one cannot be derived from the new one.
Cross-device. Any device with your VerusID wallet generates identical passwords. No sync needed.
Each tier uses a different z-address for encryption. Sharing a viewing key grants access to that tier.