"You do not own your wallet. You are simply renting memory."
OBLIVION Protocol is an onchain simulation where users sacrifice their wallets to write their legacy into the blockchain. The dApp offers a stunning UI that guides users through a visually narrated journey culminating in wallet sacrifice and the minting of a Legacy NFT - a procedurally generated onchain tombstone commemorating their wallet's existence.
- Framework: Next.js 14+ with App Router
- Styling: Tailwind CSS with custom theme system
- Animation: Framer Motion for fluid transitions
- State Management: Zustand for global state
- Web3 Integration: viem/wagmi for wallet connections
- Audio: howler.js for immersive sound effects
- UI Components: Custom component system inspired by Dead Space terminal aesthetics
- Blockchain: Ethereum (and/or alternative L2s)
- Smart Contracts: Solidity contracts deployed via Hardhat
- Contract Architecture:
OblivionSink.sol: Receive-only contract for ETH sacrificeLegacyNFT.sol: ERC721 contract for generating tombstone NFTsSoulIndex.sol: Onchain ranking system for wallet sacrifices
- User connects wallet through wagmi/Connect Kit
- Frontend fetches wallet history data via Etherscan/Alchemy API
- User completes the ritual journey through app screens
- Smart contract interaction: wallet sacrifice transaction
- NFT minting process with onchain SVG generation
- Metadata storage (optional IPFS/Arweave integration)
/
├── app/ # Next.js App Router
│ ├── api/ # API Routes
│ ├── page.tsx # Landing page
│ ├── journey/ # Main journey screens
│ │ ├── begin/ # Initial welcome screen
│ │ ├── reflection/ # Wallet history reflection
│ │ ├── sacrifice/ # Sacrifice ceremony
│ │ └── legacy/ # Legacy NFT reveal
│ └── leaderboard/ # Optional leaderboard feature
├── components/ # UI Components
│ ├── common/ # Shared UI elements
│ ├── animations/ # Animation components
│ ├── web3/ # Web3 specific components
│ └── screens/ # Screen-specific components
├── lib/ # Utility functions
│ ├── web3/ # Web3 utility functions
│ ├── animations/ # Animation utilities
│ └── api/ # API utilities
├── styles/ # Global styles
│ └── theme.js # Theme configuration
├── hooks/ # Custom React hooks
│ ├── useWalletHistory.ts # Hook for wallet history
│ ├── useSacrifice.ts # Hook for sacrifice logic
│ └── useNFTGeneration.ts # Hook for NFT generation
├── contexts/ # React contexts
│ └── JourneyContext.tsx # Journey state context
├── public/ # Static assets
│ ├── sounds/ # Audio files
│ └── images/ # Static images
├── contracts/ # Smart contracts
│ ├── OblivionSink.sol # Sink contract
│ ├── LegacyNFT.sol # NFT contract
│ └── SoulIndex.sol # Rankings contract
├── scripts/ # Deployment scripts
├── test/ # Contract tests
└── config/ # Configuration files
├── chains.ts # Supported chains
└── constants.ts # App constants
- Welcome to Oblivion: Black void with ambient sounds, single "Begin The Passage" button
- Reflection Phase: Display of wallet history and metrics:
- Last 10 transactions
- First token ever received
- Total gas used
- Number of contracts interacted with
- Sacrifice Phase: Ritual interface for signing the sacrifice transaction
- Legacy Mint: NFT reveal with animated onchain SVG of their tombstone
- Wallet Sacrifice: Multiple options for sacrifice:
- Send all ETH to OblivionSink contract
- Burn access through cryptographic methods
- Self-destruct wallet mechanism
- Legacy NFT: Dynamic SVG generation encoding:
- Final gas used
- Last token held
- Final words entered before sacrifice
- Timestamp and block number of sacrifice
- SoulIndex: Onchain ranking system for memorable sacrifices
- UI/UX Inspired by:
- Journey (indie game) emotional progression
- Dead Space Terminal aesthetics
- Cyber-Roman shrine motifs
- Sound Design:
- Ambient background soundscapes
- Ritual completion sounds
- Confirmation audio cues
- Leaderboard: Showcase of "richest sacrificed wallets"
- Evolving NFTs: NFTs that change if someone sends ETH in the name of sacrificed wallet
- Memorial Message Board: Anonymous messaging accessible only to sacrificed wallets
- Multi-chain Support: Extend sacrifice ritual to multiple blockchains
- Ritual Video Generation: Shareable video of the sacrifice ceremony
- Architecture setup and core Next.js structure
- Smart contract development and testing
- Basic UI components and theme system
- Wallet connection and history analysis functionality
- Main journey screens implementation
- Basic sacrifice transaction flow
- Dynamic SVG generation system
- Onchain metadata storage
- NFT minting process
- Sound design implementation
- Animation refinement
- Leaderboard and additional features
- Lazy loading of heavy animation components
- Efficient data fetching with SWR
- Optimized smart contract gas usage
- Smart contract auditing
- Protected API routes
- Secure wallet connection handling
- Dark mode support by default
- Screen reader compatibility
- Keyboard navigation support
- MetaMask
- WalletConnect
- Coinbase Wallet
- Rainbow
- Additional wallets via WalletConnect
- Ethereum Mainnet
- Optimism
- Arbitrum
- Base
- (Possibility to extend to additional L2s)
- Node.js (v18 or higher)
- npm or yarn
- A web3 wallet (MetaMask, etc.)
-
Clone the repository:
git clone https://github.com/yourusername/oblivion.git cd oblivion -
Install dependencies:
npm install
-
Set up environment variables: Create a
.env.localfile in the root directory with the following variables:NEXT_PUBLIC_ALCHEMY_API_KEY=your_alchemy_api_key NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=your_walletconnect_project_id
npm run devOpen http://localhost:3000 with your browser to see the result.
The smart contracts for OBLIVION Protocol are located in the contracts/ directory.
To compile the contracts:
npx hardhat compileTo run tests:
npx hardhat testTo deploy contracts to a testnet:
npx hardhat run scripts/deploy.js --network goerliWe welcome contributions to the OBLIVION Protocol! Please feel free to submit issues and pull requests.
"The end is just a new beginning on the blockchain."