Inspiration
The inspiration behind Aurora stems from major vulnerabilities in modern crypto custody: the Malone Lam theft ring, which siphoned over $260 million by exploiting host-level software weaknesses and social engineering, and the recent supply-chain compromise involving Southeast Asian reseller CryptoBilis, where tampered hardware wallets led to over $86 million in drained funds. These disasters prove that cold storage cannot rely on vulnerable host machines or expensive, closed-source black boxes with fragile distribution chains. We built Aurora to make uncompromising hardware security safe, auditable, and genuinely affordable for everyone by turning commodity off-the-shelf parts (a Raspberry Pi 4B, an I2C display, and physical pushbuttons) into a transparent, zero-trust hardware signer where the seed never leaves the device, transactions are verified on an independent screen, and self-sovereign protection no longer costs a fortune.
What it does
Aurora pairs a Raspberry Pi hardware wallet with a macOS and Windows desktop app. The recovery phrase stays on the device. Pairing uses a matching code, and transactions require review on the LCD followed by a physical button hold.
The device decodes Solana transaction messages independently, displays the recipient and amount, and uses green, yellow or red backlighting to signal risk. Our compromised-app demo changes the recipient in the transaction bytes, exposing the difference on the hardware screen. Solana transfers use devnet; Bitcoin and Solana mainnet are supported for balance and transaction tracking.
The desktop app shows balances, price charts, transaction history, portfolio allocation and market gains or losses. It includes an animated dock, a silver startup animation and a light/dark theme reveal.
We also implemented fresh Bitcoin and Solana receive addresses with device-signed proofs and retained address history. Local payment pages provide a QR code, payment URI, amount, expiry and confirmation status. Bitcoin and Solana demo checkouts let us demonstrate the payment flow without sending funds.
How we built it
The hardware uses a Raspberry Pi 4B, a Grove 16x2 RGB LCD, physical buttons and a buzzer. The firmware is written in C++ and uses BIP-39 recovery phrases, Ed25519 signatures, Solana key derivation and Bitcoin BIP-84 receive addresses. A serial JSON protocol connects it to the desktop app.
The app uses Svelte, TypeScript and Tauri with a Rust backend. Public Kraken, Mempool and Solana RPC endpoints supply market and chain data. A local Node.js service serves payment pages and stores public invoice data. WebGL powers the visual effects.
Challenges we ran into
Keeping the desktop and device in agreement was the hardest part: pairing, reconnects, transaction parsing and approval all need explicit states. Generating new addresses also meant tracking earlier addresses without duplicating transactions. Payment status needed to account for partial payments, expiry, confirmation delays and unavailable providers.
Accomplishments we're proud of
We built an independent transaction review flow with physical approval, a working desktop interface and local payment demos. The receive-address update verifies signed address proofs rather than accepting arbitrary addresses from the host. Recovery backup and verification remain on the device.
What we learned
Protecting a key is only part of the problem. The user also needs a trustworthy view of the transaction before approving it. We learned to separate device decisions from desktop presentation, handle blockchain confirmation states explicitly and tune animations without making the interface harder to use.
Current status
Aurora is a prototype. Solana signing is on devnet, and payment pages run locally. The new receive-address firmware is implemented and tested in the repository; deployment and validation on the physical device remain.
Built With
- bitcoin
- c++
- node.js
- raspberry-pi
- rust
- solana
- svelte
- tauri
- typescript
- webgl
Log in or sign up for Devpost to join the conversation.