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: 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.
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
- Phase 1: 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
This project is a Next.js application. Follow the instructions below to run the application locally.
- Node.js (ensure you have version 16 or later)
- npm (comes with Node.js) or yarn (optional package manager)
-
Clone the repository if you haven't already:
git clone https://github.com/AbdelStark/zkpoor.git cd zkpoor
-
Install dependencies:
npm install
Or, if you're using Yarn:
yarn install
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
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
npm run dev
- Starts the development server.npm run build
- Builds the app for production.npm start
- Runs the production server after building.
To stop either the development or production server, press Ctrl+C
in the terminal where the server is running.
- Complete the end to end proving pipeline and verification flow
- Add proving of ownership of UTXOs via signatures within the Cairo program
- Optimize the Cairo program for performance and scalability
- How to prevent someone to take a proof and reuse it later on to claim they own the same UTXOs?
Potential solution would be that the manager add as additional input a public key, that will be also outputted in the proof, and then the verifier can ask the manager to sign a message with the corresponding private key to prove he originally generated the proof.