A dynamic ZKP rule compiler and proover CLI for Circom and snarkjs
npm install zkp-logos-compilerЭтот проект представляет собой инструментарий для работы с Доказательствами с Нулевым Разглашением (ZKP). Он позволяет динамически создавать, компилировать и верифицировать бизнес-правила на основе криптографии.
Проект состоит из двух основных компонентов:
1. Веб-приложение: Интерактивный интерфейс для демонстрации и тестирования правил через браузер.
2. CLI (Интерфейс Командной Строки): Инструмент для разработчиков для локальной работы и интеграции в автоматизированные процессы.
- Криптография: zk-SNARKs (Groth16)
- Язык схем: Circom
- Библиотека для ZKP: snarkjs
- Бэкенд: Node.js + Express.js
- CLI: Commander.js
- Менеджер процессов (для веб-сервера): PM2
- Фронтенд: Ванильный HTML / CSS / JavaScript
---
Этот компонент предоставляет веб-интерфейс для интерактивной работы с компилятором правил.
1. Клонировать репозиторий и установить зависимости:
``bash`
git clone https://github.com/apollokz/zkp.git
cd zkp
npm install
2. Скомпилировать базовые схемы (если необходимо):
`bash`
circom circuits/CheckAmount.circom --r1cs --wasm --sym -o circuits
3. Провести "Trusted Setup" (генерацию ключей):
Этот процесс необходимо выполнить только один раз.
`bash
# Фаза 1: Powers of Tau
snarkjs powersoftau new bn128 14 keys/pot14_0000.ptau -v
snarkjs powersoftau contribute keys/pot14_0000.ptau keys/pot14_0001.ptau --name="First contribution" -v
snarkjs powersoftau prepare phase2 keys/pot14_0001.ptau keys/pot14_final.ptau -v
# Фаза 2: Специфичная для схемы
snarkjs groth16 setup circuits/CheckAmount.r1cs keys/pot14_final.ptau keys/checkamount_0000.zkey
snarkjs zkey export verificationkey keys/checkamount_0000.zkey keys/verification_key_checkamount.json
`
4. Запустить сервер с помощью PM2:
* Установите PM2 глобально: npm install pm2 -gpm2 start server.js --name zkp-service
* Запустите сервис:
5. Открыть демо в браузере:
Перейдите по адресу http://<ваш_ip_адрес>:3000.
- Показать список сервисов: pm2 listpm2 logs zkp-service
- Посмотреть логи: pm2 restart zkp-service
- Перезапустить сервис: pm2 stop zkp-service
- Остановить сервис:
---
Этот компонент предоставляет набор утилит для локальной компиляции, генерации доказательств и верификации.
После выполнения шага 1 из инструкции выше (установки зависимостей), выполните:
`bash`
npm linkzkp-compiler
Эта команда делает команду доступной из любой директории в вашей системе.
1. Создайте файл с определением правила, например, myRule.json:`
json`
{
"ruleId": "isAdult",
"type": "greaterThan",
"privateInputs": ["age"],
"publicInputs": ["minimumAge"]
}
2. Скомпилируйте правило:
`bash`
zkp-compiler compile myRule.json
3. Создайте файл с входными данными, например, myInputs.json:`
json`
{
"age": 25,
"minimumAge": 18
}
4. Сгенерируйте доказательство:
`bash`
zkp-compiler prove isAdult -i myInputs.json
5. Верифицируйте доказательство:
`bash`
zkp-compiler verify isAdult -p zkp_output/isAdult_proof.json -s zkp_output/isAdult_public.json
#### compilezkp-compiler compile
Компилирует новую ZKP-схему из JSON-файла.
#### provezkp-compiler prove
Генерирует доказательство для ранее скомпилированного правила.
#### verifyzkp-compiler verify
Верифицирует сгенерированное доказательство.
``