feat: add marketplace metrics, privacy features, and service registry endpoints
- Add Prometheus metrics for marketplace API throughput and error rates with new dashboard panels - Implement confidential transaction models with encryption support and access control - Add key management system with registration, rotation, and audit logging - Create services and registry routers for service discovery and management - Integrate ZK proof generation for privacy-preserving receipts - Add metrics instru
This commit is contained in:
170
apps/zk-circuits/README.md
Normal file
170
apps/zk-circuits/README.md
Normal file
@ -0,0 +1,170 @@
|
||||
# AITBC ZK Circuits
|
||||
|
||||
Zero-knowledge circuits for privacy-preserving receipt attestation in the AITBC network.
|
||||
|
||||
## Overview
|
||||
|
||||
This project implements zk-SNARK circuits to enable privacy-preserving settlement flows while maintaining verifiability of receipts.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 16+
|
||||
- npm or yarn
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
cd apps/zk-circuits
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compile Circuit
|
||||
|
||||
```bash
|
||||
npm run compile
|
||||
```
|
||||
|
||||
### Generate Trusted Setup
|
||||
|
||||
```bash
|
||||
# Start phase 1 setup
|
||||
npm run setup
|
||||
|
||||
# Contribute to setup (run multiple times with different participants)
|
||||
npm run contribute
|
||||
|
||||
# Prepare phase 2
|
||||
npm run prepare
|
||||
|
||||
# Generate proving key
|
||||
npm run generate-zkey
|
||||
|
||||
# Contribute to zkey (optional)
|
||||
npm run contribute-zkey
|
||||
|
||||
# Export verification key
|
||||
npm run export-verification-key
|
||||
```
|
||||
|
||||
### Generate and Verify Proof
|
||||
|
||||
```bash
|
||||
# Generate proof
|
||||
npm run generate-proof
|
||||
|
||||
# Verify proof
|
||||
npm run verify
|
||||
|
||||
# Run tests
|
||||
npm test
|
||||
```
|
||||
|
||||
## Circuit Design
|
||||
|
||||
### Current Implementation
|
||||
|
||||
The initial circuit (`receipt.circom`) implements a simple hash preimage proof:
|
||||
|
||||
- **Public Inputs**: Receipt hash
|
||||
- **Private Inputs**: Receipt data (job ID, miner ID, result, pricing)
|
||||
- **Proof**: Demonstrates knowledge of receipt data without revealing it
|
||||
|
||||
### Future Enhancements
|
||||
|
||||
1. **Full Receipt Attestation**: Complete validation of receipt structure
|
||||
2. **Signature Verification**: ECDSA signature validation
|
||||
3. **Arithmetic Validation**: Pricing and reward calculations
|
||||
4. **Range Proofs**: Confidential transaction amounts
|
||||
|
||||
## Development
|
||||
|
||||
### Circuit Structure
|
||||
|
||||
```
|
||||
receipt.circom # Main circuit file
|
||||
├── ReceiptHashPreimage # Simple hash preimage proof
|
||||
├── ReceiptAttestation # Full receipt validation (WIP)
|
||||
└── ECDSAVerify # Signature verification (WIP)
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
npm test
|
||||
|
||||
# Run specific test
|
||||
npx mocha test.js
|
||||
```
|
||||
|
||||
### Integration
|
||||
|
||||
The circuits integrate with:
|
||||
|
||||
1. **Coordinator API**: Proof generation service
|
||||
2. **Settlement Layer**: On-chain verification contracts
|
||||
3. **Pool Hub**: Privacy options for miners
|
||||
|
||||
## Security
|
||||
|
||||
### Trusted Setup
|
||||
|
||||
The Groth16 setup requires a trusted setup ceremony:
|
||||
|
||||
1. Multi-party participation (>100 recommended)
|
||||
2. Public documentation
|
||||
3. Destruction of toxic waste
|
||||
|
||||
### Audits
|
||||
|
||||
- Circuit formal verification
|
||||
- Third-party security review
|
||||
- Public disclosure of circuits
|
||||
|
||||
## Performance
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Proof Size | ~200 bytes |
|
||||
| Prover Time | 5-15 seconds |
|
||||
| Verifier Time | 3ms |
|
||||
| Gas Cost | ~200k |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Circuit compilation fails**: Check circom version and syntax
|
||||
2. **Setup fails**: Ensure sufficient disk space and memory
|
||||
3. **Proof generation slow**: Consider using faster hardware or PLONK
|
||||
|
||||
### Debug Commands
|
||||
|
||||
```bash
|
||||
# Check circuit constraints
|
||||
circom receipt.circom --r1cs --inspect
|
||||
|
||||
# View witness
|
||||
snarkjs wtns check witness.wtns receipt.wasm input.json
|
||||
|
||||
# Debug proof generation
|
||||
DEBUG=snarkjs npm run generate-proof
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
- [Circom Documentation](https://docs.circom.io/)
|
||||
- [snarkjs Documentation](https://github.com/iden3/snarkjs)
|
||||
- [ZK Whitepaper](https://eprint.iacr.org/2016/260)
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create feature branch
|
||||
3. Submit pull request with tests
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user