zkpoor (Zero Knowledge Proof Of Outstanding Reserves)
zkpoor enables companies to prove their Bitcoin holdings cryptographically without revealing addresses or UTXOs, using STARK proofs.
Built on top of the Bitcoin Treasury foundation, zkpoor extends the original dashboard with zero-knowledge proof generation and verification capabilities.
๐ฏ Problem & Solution
Problem: Companies like MicroStrategy claim large BTC holdings but won't publish addresses due to security concerns. Current "proof of reserves" relies on voluntary claims without cryptographic verification.
Solution: zkpoor provides cryptographic proof of BTC reserves without revealing individual addresses or UTXOs, strengthening Bitcoin's culture of verifiable trust.
๐๏ธ Architecture
This is a unified web application with two main components:
- Enhanced Public Dashboard - Original Bitcoin Treasury features plus "Verify with STARK" cryptographic verification
- Treasury Manager Portal - Protected interface for inputting UTXOs and generating proofs
๐ Development Phases
- Phase 1 (Current): UI/UX implementation with mocked proof generation and verification
- Phase 2: Backend integration with actual STARK proof generation
- Phase 3: Cairo program implementation for cryptographic proofs
Getting Started
This project is a Next.js application. Follow the instructions below to run the application locally.
Prerequisites
- Node.js (ensure you have version 16 or later)
- npm (comes with Node.js) or yarn (optional package manager)
Installation
- Clone the repository if you haven't already:
git clone https://github.com/AbdelStark/zkpoor.git
cd zkpoor
- Install dependencies:
bash npm installOr, if you're using Yarn:bash yarn install
Running the Development Server
To start the development server, run:
npm run dev
Or, for Yarn users:
yarn dev
This will start the Next.js development server on the default port (3000). Open your browser and visit:
http://localhost:3000
Building for Production
To build the application for production, run:
npm run build
Or, with Yarn:
yarn build
This will create an optimized production build of the app in the .next directory. To serve it, use:
npm start
Or:
yarn start
Available Scripts
npm run dev- Starts the development server.npm run build- Builds the app for production.npm start- Runs the production server after building.
Stopping the Server
To stop either the development or production server, press Ctrl+C in the terminal where the server is running.
๐ Features
Current (Phase 1)
- โ Enhanced public dashboard with original Bitcoin Treasury functionality
- โ Mock proof generation and verification UI
- โ Treasury manager portal with authentication
- โ UTXO input forms and validation
- โ In-browser proof verification (mocked)
Planned (Future Phases)
- ๐ Real STARK proof generation backend
- ๐ Cairo program implementation
- ๐ Cryptographic UTXO ownership verification
- ๐ Zero-knowledge proof validation
๐ Technical Details
UTXO Input Format: (txid, vout, amount, scriptPubKey) + ownership proof (signature over challenge)
Public Output: Only aggregated BTC amount (no addresses/UTXOs revealed)
Verification: Client-side proof verification for trustless validation
๐ Documentation
For detailed technical specifications, see docs/prd.md.
Pricing Endpoint
Our dashboard fetches BTC/USD price data via Block's public pricing endpoint: https://pricing.bitcoin.block.xyz/current-price. This price data is refreshed every 60 seconds and is comprised of a volume weighted average of price data from many cryptocurrency exchanges.
Built With
- cairo
- rust
- starks
- typescript
Log in or sign up for Devpost to join the conversation.