On-chain fully encrypted 'Dropbox'-style file-sharing platform
WETKEYS is a privacy-first infrastructure layer for Web3 that lets users send encrypted data on Walrus, instead of raw, publicly viewable content. In today’s blockchain landscape, everything is transparent. Any data you store is effectively open to anyone with a link. That’s fine for pictures of monkeys, but not ideal for sensitive files, credentials, confidential communications, or your favourite walrus laying naked on the ice. WETKEYS fixes this by using Dfinity Vetkeys, a better version of Identity-Based Encryption (IBE) and Attribute-Based Encryption (ABE) to encrypt data specifically for the intended recipient, while still keeping everything decentralized and chain-agnostic. You upload a file, it gets encrypted using the recipient’s wallet address to derive the public key, and stored in decentralized storage. Only that wallet can decrypt it. We use threshold IBE to avoid centralized key servers, Walrus on Sui for decentralized file storage, and USDC on Base to abstract away crypto weirdness from the user. So even your less technical friends can send you encrypted stuff without needing to know what a keypair is. The system works across chains, and it’s built to be integrated into wallets, dApps, or anything else that needs secure data sharing.
We’re going to be honest here: this is a dev-heavy project, and we care way more about the cryptography and protocols than about fancy frontends. So while the UI is... functional (let’s call it minimalist-chic), the backend is where the real magic happens. At the heart of WETKEYS is Vetkeys, our implementation of a threshold Boneh-Franklin IBE scheme running on the Internet Computer (ICP). It lets you use wallet addresses as public keys, and thanks to threshold encryption, no single point of failure exists in the decryption process. We used DFX to deploy and test locally, and canisters handle the encryption logic. Encrypted files go to Walrus on the Sui blockchain, which keeps data available without centralized storage risks. Payments are handled using USDC on Base, with Solidity contracts abstracting away the gnarly crypto plumbing so the user just clicks "Send" and it works. The cross-chain compatibility makes it easy to port into different environments or integrate with existing wallets. Our stack includes Rust for the backend (because speed + safety), Next.js for the frontend (mostly so we could test it), and Hardhat for contract deployment. We also sprinkled in a bit of React for good measure. Time was tight, so we focused on proving the full flow actually works. We didn’t get to build out a full dev SDK or API yet, but we’re nerds and we love this stuff, so if there’s interest, we’d love to keep building it out into a full developer platform. Just don’t ask us to make the UI pretty.