Deploy ZAP1

Run your own attestation instance on Zcash. 60 seconds from clone to running.

What you get

Prerequisites

Setup

1
Clone and build
git clone https://github.com/Frontier-Compute/zap1 cd zap1 docker build -t zap1:latest .
2
Generate operator keys
bash scripts/operator-setup.sh myoperator 3081

Creates keys, .env, docker-compose, and a run script in operators/myoperator/

3
Start
cd operators/myoperator ./run.sh
4
Verify
curl http://127.0.0.1:3081/health curl http://127.0.0.1:3081/protocol/info curl http://127.0.0.1:3081/stats
5
Create your first event
curl -X POST http://127.0.0.1:3081/event \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "event_type": "DEPLOYMENT", "wallet_hash": "your_wallet_hash", "serial_number": "deploy-001", "facility_id": "dc-west-01" }'
6
Anchor to Zcash

Open the admin QR page in your browser:

http://127.0.0.1:3081/admin/anchor/qr?key=YOUR_API_KEY

Scan with any Zcash wallet (Zodl, Zashi, etc). The QR encodes the Merkle root as a shielded memo. After sending, enter the txid to record the anchor.

What's in the box

Architecture

Your app --> ZAP1 API --> Merkle tree --> Zcash anchor | | event types shielded memo (DEPLOYMENT, etc) (ZAP1:09:{root})

Each operator runs their own instance with their own keys, tree, and anchors. No shared state between operators.