Raven House: UX-First State Migration for raven house NFT marketplace
Contact Details
Email: satyambnsal@gmail.com
Telegram: @satyambansal
Twitter: @ravenhousenft
GitHub: https://github.com/raven-house
Summary
We propose a hybrid, UX-first approach to state migration for the Raven House NFT marketplace during Aztec Alpha roll-up upgrades. The objective is to design a generalizable migration pattern that prioritizes user experience while being explicit about trust assumptions and constraints.
Aztec currently does not provide a canonical cross-rollup identity, and wallets such as Azguard intentionally do not expose low-level account data (e.g. master public keys) to applications for security reasons. Combined with the impracticality of asking users to manage wallets across multiple roll-ups simultaneously, these constraints make purely trustless migration approaches difficult for consumer-facing applications today.
We propose a two-path migration framework, separating public and private state:
-
Public State (Public NFTs)
The core challenge for public state migration is linking a user’s address on the old roll-up to their address on the new roll-up, as both addresses will differ. We address this via a user-generated migration secret key. Public NFT ownership and metadata are exported off-chain in encrypted form, indexed by this secret. On the new roll-up, users retrieve their exported state using the same secret and explicitly re-mint their NFTs through on-chain transactions. Optional recovery mechanisms are supported via linked identities (Twitter, Discord, zkPassport already supported on nft marketplace app). -
Private State (Private NFTs)
Private NFTs are migrated using a purely on-chain, self-migration flow based on storage proofs. Users generate inclusion proofs for their private NFT notes on the old roll-up and import these notes and proof on the new roll-up to reclaim ownership, without relying on off-chain trust.
This project will deliver a working prototype demonstrating migration between two roll-ups, reusable NFT migration patterns, and clear documentation of UX and trust tradeoffs. While optimized for NFTs, the approach generalizes to applications using custom notes, offering a pragmatic path for application-level migration during Aztec Alpha.
Start and End Date
Start: January 27, 2026 Immediately upon grant approval
**Working Prototype: ** February 20, 2026
Final Delivery: March 6th, 2026
About Us
Raven House is a privacy-first NFT marketplace built on Aztec and live on devnet.
We also operate a ZK-passport-compliant Ethereum ↔ Aztec bridge, currently live on devnet:
NFT Marketplace: https://app.ravenhouse.xyz
Bridge: https://bridge.ravenhouse.xyz
Our products include:
- A configurable NFT collection launch platform (private/public minting, whitelists, scheduling)
- A privacy-preserving NFT marketplace (offers, transfers, listings)
- ZK proofs of NFT ownership for off-chain access control
- A ZK-passport-compliant Ethereum ↔ Aztec bridge
As an application team directly impacted by Alpha-phase upgrades, we are well-positioned to explore realistic migration designs grounded in real-world UX constraints.
Migration Approach
Category: Hybrid (Category C)
- Public NFTs: Off-chain attestation + on-chain re-mint
- Private NFTs: Purely on-chain self-migration via storage proofs
Technical Architecture
Public NFT Migration
- On the old roll-up, the user generates a migration secret key via the Raven House UI.
- Public NFT ownership and metadata are exported and encrypted using the migration secret.
- Encrypted exports are stored off-chain (database).
- After the upgrade, the user creates a new wallet on the new roll-up.
- The user enters the migration secret key to retrieve their exported public NFT data(social recovery options available via Discord/Twitter/ZK Passport)
- The user explicitly re-mints their NFTs on the new roll-up via on-chain transactions.
Migration Secret Key Recovery
Raven House already supports linking wallets to:
- Twitter accounts
- Discord accounts
- ZK Passport identities
These linked identities can be used to recover the migration secret key on a new wallet, improving UX without introducing new trust dependencies.
Private NFT Migration
- Raven NFT contracts already support note storage proofs via the
get_notemethod. - On the old roll-up, users generate inclusion proofs for all private NFT notes they own.
- Notes and associated proofs (potentially across multiple collections) are exported and encrypted using the migration secret key.
- On the new roll-up, users import the notes and proofs to reclaim private NFT ownership.
- This flow requires no off-chain trust beyond data availability.
Relevant references:
get_notemethod:
https://github.com/raven-house/raven-contracts/blob/main/nft_contract/src/main.nr#L670
- Storage proof circuits:
https://github.com/raven-house/circuits/tree/main/rh-storage-proof
User Flow (Old → New Roll-up)
Public NFTs
Private NFTs
Total interactions: ~3–4 transactions
Trust Assumptions (Explicit)
- Public NFT migration relies on Raven House infrastructure(mainly indexer) to store encrypted exports
- Private NFT migration is fully verifiable and trustless on-chain
Generalizability
The proposed pattern generalizes to:
- NFT collections
- Low-stake public state based application using migration secret key and data export
- Custom Notes based applications that can use storage proof approach
The explicit separation of public vs. private state migration is broadly applicable across Aztec applications.
Grant Milestones & Roadmap
Milestones
- Public NFT export and re-mint prototype
- Private NFT storage-proof migration prototype
- Local testnet demo simulating two roll-ups
- UX walkthrough and design documentation
Grant Amount Requested
US$20,000
Justification:
- Dual migration paths (public + private)
- On-chain Noir development and off-chain UX tooling
- Documentation and reusable test harness for other teams

