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.

operator docs cover receipt generation, policy edges, and verifier checks.
Review protocol surfaces