Users
A user is a person who owns data and controls access to it. Their identity is their wallet address. Users don’t interact with the wallet directly in most cases. The Vana app handles wallet creation and signing through a client-side abstraction called Passport (see below). From the protocol’s perspective, the user is just an address that can sign EIP-712 grants and EIP-191 messages.What’s tied to a user’s address
Builders
A builder is a third-party application that requests access to user data. Builders register onchain with:- Address — The builder’s wallet address (used for signing requests)
- Public key — For cryptographic operations
- App URL — The canonical origin of the builder’s web application
Builder registration
Builders register an app identity in Vana Account, or directly via the DP RPC. The registration is recorded in theDataPortabilityGrantees contract.
Steps:
- Open Vana Account developer tools and register an app identity
- Enter the
appUrl(the canonical origin of your app, e.g.https://flipboard.com) - Generate (or import) a builder wallet and keypair
- The registration is submitted to the DP RPC, which syncs it to the chain
- You receive: builder address, public key, and private key
DataPortabilityGrantees contract
Address: 0x8325C0A0948483EdA023A1A2Fd895e62C5131234 (Moksha Testnet)
DP RPC builder API
App manifests
Builders must publish an app manifest at theirappUrl so that the Vana app can display human-readable consent information (name, icon, privacy policy) when a user is asked to approve a grant.
Discovery
- The Vana app fetches
https://{appUrl} - It resolves the manifest URL from the
<link rel="manifest" href="...">tag in the HTML - The manifest URL must be same-origin with
appUrl
Format
The manifest follows the W3C Web App Manifest standard with a customvana block:
Required vana fields
Manifest signature
Thesignature field is an EIP-191 signature by the builder’s registered address over the canonical JSON of the vana block. This proves the manifest was published by the registered builder, not a third party.
Canonicalization rules:
- Sort keys alphabetically at all levels
- Exclude the
signaturefield itself from the signed payload
- Fetch
https://{appUrl}and resolve the manifest URL - Verify
vana.appUrlmatches the onchainappUrl - Recompute the canonical JSON of the
vanablock (excludingsignature) - Recover the signer from
vana.signatureand verify it matches the builder’s registered address - Verify
webhookUrlmatchesvana.webhookUrl
Personal server registration
Personal Servers are registered onchain in theDataPortabilityServers contract. Users then trust a server to act on their behalf.
DataPortabilityServers contract
Address: 0x1483B1F634DBA75AeaE60da7f01A679aabd5ee2c (Moksha Testnet)
DP RPC server API
All write operations use EIP-712 signature-based calls so the Vana app can register servers without the user sending chain transactions directly.
Passport
Passport is a client-side, non-protocol component that handles wallet creation and authentication in the Vana app. It is not part of the protocol specification — any client that can produce wallet signatures is compatible.What Passport provides
- Wallet creation without seed phrase exposure
- Social login (Google, Apple, email)
- Wallet recovery via social/email
- Existing wallet import for advanced users
Reference implementation
The reference implementation uses Privy for embedded wallet management.Authentication flow
- User clicks “Sign In” in the Vana app
- Redirect to Passport (Privy)
- User authenticates via social login or email
- Passport creates or retrieves the user’s wallet
- Returns a JWT and wallet address to the Vana app
Passport is intentionally separated from the protocol. Alternative clients can use any wallet management approach — MetaMask, hardware wallets, or direct key management — as long as they can produce EIP-191 and EIP-712 signatures.
Related
- Personal Servers — Server hosting and registration
- Grants & Permissions — How builders get access via signed grants
- Vana L1 — The chain where registrations and grants are recorded
- Smart Contracts & Addresses — All contract addresses