Privacy-First Ride Sharing & Delivery on Aleo
A privacy-preserving ride-sharing and delivery protocol built on Aleo, where every ride uses temporary identities, private matching, and encrypted state. No permanent identity, no public transaction graph, no location trail, and no ad targeting.
Current ride-sharing apps leak sensitive data that becomes permanent once exposed:
- Phone numbers - Directly exposed to drivers and stored in databases
- Real-time location history - Tracked throughout the entire journey
- Permanent identities - Linked to all rides and transactions
- Ride patterns & behavior - Used for profiling and targeting
- Post-order ad targeting - Data sold to advertisers
- Centralized data honeypots - Single point of failure for massive breaches
Once leaked → data is permanent.
GhostMove is an Aleo-powered ride-sharing platform where:
- Every ride uses a temporary identity
- Private matching without exposing exact locations
- Encrypted state for all ride data
- No permanent identity tracking
- No public transaction graph
- No location trail
- No ad targeting
This project is impossible to build on normal chains.
| Feature | Normal Blockchain | Aleo |
|---|---|---|
| Identity | Public & permanent | Ephemeral ZK identity |
| Ride data | Fully visible | Encrypted state |
| Location | Trackable | ZK-proven proximity |
| Payments | Traceable | Private transfers |
| Compliance | Hard | Selective disclosure |
Each ride creates a ZK identity NFT (non-transferable):
struct RideIdentity {
rider_pk: field,
driver_pk: field,
expires_at: u64,
}Features:
- Exists only for the ride duration
- Auto-burns after completion
- Used for chat, payments, verification
- No phone numbers ever revealed
Instead of exposing locations:
- Driver proves: "I am within 2km of pickup" without revealing exact coordinates
- Uses ZK range proofs for proximity verification
- Location data remains encrypted
All stored data is encrypted by default:
- Pickup point
- Drop zone
- Fare
- Ratings
- Messages
Only rider & driver can decrypt their ride data.
- Shielded payments via Aleo credits
- Optional escrow smart contract
- Tip + fare hidden from public view
- No financial graph leak
If required for compliance:
- Driver can prove number of rides
- Platform can prove payments processed
- User can reveal ride history only if needed
- Create ride
- Mint temporary identity (
ride_identity.aleo) - Accept ride
- Private payment escrow
- Complete ride → identity burns
- ZK proximity proofs (
proximity_matching.aleo) - Encrypted chat
- Rating system (private)
- Delivery mode
- Multi-stop rides
- Tips & bonuses
- DAO governance
- Private reputation
- Fleet accounts
- Business delivery
- Rider creates ride - Request submitted with encrypted location
- Driver accepts - Proves proximity without revealing exact location
- Temporary ID created - ZK identity NFT minted for this ride only
- Payment escrowed privately - Funds locked in encrypted escrow
- Ride completes - Payment released, ride data encrypted
- Identity auto-deletes - Temporary identity burns automatically
- No trace remains on chain - Only encrypted state remains
GhostMove/
├── README.md # This file
├── programs/ # Leo smart contracts
│ ├── ride_identity/ # Temporary ZK Identity Tokens
│ │ ├── src/main.leo
│ │ └── program.json
│ ├── proximity_matching/ # ZK Proximity Proofs
│ │ ├── src/main.leo
│ │ └── program.json
│ └── README.md # Programs documentation
└── interface-ui/ # Frontend React application
├── src/
├── package.json
└── README.md
cd interface-ui
pnpm install
pnpm devThe core privacy primitives are implemented! See programs/README.md for detailed documentation.
# Install Leo
curl -L https://get.aleo.org/leo | bash
# Build ride identity program
cd programs/ride_identity
leo build
# Build proximity matching program
cd ../proximity_matching
leo build-
ride_identity.aleo- Temporary ZK Identity Tokens- Mint non-transferable identities for each ride
- Auto-expire after ride completion
- Stored in encrypted state (no public visibility)
-
proximity_matching.aleo- ZK Proximity Proofs- Drivers prove proximity without revealing coordinates
- Uses Haversine formula in zero-knowledge
- Only boolean result (within range) is public
- ✅ Zero-knowledge proofs for all proximity checks
- ✅ Encrypted state for all ride data
- ✅ Temporary identities that auto-expire
- ✅ Private payments with no public trace
- ✅ Selective disclosure for compliance when needed
This project is in active development. Contributions welcome!
[To be determined]
Built with ❤️ on Aleo