Compliance Fort
January 23, 2026 · View on GitHub
Batch ZK-proof verification via Fortran FFI
Идея
Массовая верификация Zero-Knowledge доказательств для compliance-аудита.
Почему Fortran?
- Один вызов FFI для 10000 proofs вместо 10000 вызовов
- Fortran оптимизирован для числовых массивов
- Возможность OpenMP параллелизации
Когда это имеет смысл:
- Аудит-система получает пачку транзакций с ZK-доказательствами
- Нужно быстро проверить все доказательства
- Количество: 1000+ proofs за запрос
Когда НЕ имеет смысл:
- Единичные операции (Python справится за ~1мс)
- Нужна production криптография (используй libsecp256k1)
Quick Start
# Docker
docker-compose up --build
# Local
make lib && make api && make run
API: http://localhost:8000/docs
API Endpoints
Batch Verify (главный)
curl -X POST "http://localhost:8000/api/v1/batch/verify" \
-H "Content-Type: application/json" \
-d '{
"public_key": 17,
"proofs": [
{"id": 1, "data": 10, "proof_r": 10, "proof_s": 15, "public_key": 17},
{"id": 2, "data": 20, "proof_r": 8, "proof_s": 12, "public_key": 17}
]
}'
Response:
{
"total": 2,
"valid_count": 2,
"invalid_count": 0,
"results": [true, true],
"elapsed_ms": 0.15
}
Batch Create
curl -X POST "http://localhost:8000/api/v1/batch/create" \
-H "Content-Type: application/json" \
-d '{
"secret_key": 7,
"items": [
{"id": 1, "data": 100},
{"id": 2, "data": 200}
]
}'
Single Operations
POST /api/v1/proof/create- создать один proofPOST /api/v1/proof/verify- проверить один proofPOST /api/v1/key/generate- сгенерировать public key
Architecture
┌─────────────────┐
│ FastAPI │ REST API
│ (Python) │
└────────┬────────┘
│ ctypes FFI (batch calls)
▼
┌─────────────────┐
│ Fortran Core │ batch_verify, batch_create
│ Schnorr ZK │ mod_pow, verify_proof
└─────────────────┘
Ограничения
Это демо-проект:
- PRIME=23 (нужно 256+ бит для безопасности)
- Нет криптографического RNG
- Schnorr упрощён для наглядности
Для продакшена нужно:
- Использовать большие простые числа (2048+ бит)
- Заменить на cryptographically secure RNG
- Провести security audit
- Рассмотреть libsodium/libsecp256k1
Development
make lib # Скомпилировать Fortran
make api # Установить Python deps
make test # Запустить тесты
make clean # Очистить артефакты
License
MIT