Skip to content

wabalabudabdab/iot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zk-snark-iot (Sepolia) medical iot

Описание

Проект для генерации и проверки zkSNARK-доказательств (Groth16) с использованием circom, snarkjs, Python (Flask) и смарт-контрактов на Ethereum Sepolia.

Подтверждение и фиксация в чейне событий по данным с датчика + автоматичекие реакции на происшествия.

image

Деплой смарт-контрактов

  1. Перейдите в папку с контрактами:
    cd hardhat
  2. Скомпилируйте контракты:
    npx hardhat compile
  3. Задеплойте Verifier:
    npx hardhat run scripts/deploy-verifier.js --network sepolia
    • Скопируйте адрес Verifier в .env как VERIFIER_ADDRESS.
  4. Задеплойте PulseAlert:
    npx hardhat run scripts/deploy.js --network sepolia
    • Скопируйте адрес PulseAlert в .env как CONTRACT_ADDRESS.

Генерация proof (на хосте, без Docker)

  1. Перейдите в папку circom:
    cd ../circom
  2. Скомпилируйте схему (если менялась):
    circom pulse_check.circom --r1cs --wasm --sym
  3. Скачайте ptau (если ещё не скачан):
    curl -L -o pot12_final.ptau [источник пока не нашла где]
  4. Сгенерируйте zkey и Verifier.sol (только один раз для деплоя!):
    snarkjs groth16 setup pulse_check.r1cs pot12_final.ptau pulse_check.zkey
    snarkjs zkey export verificationkey pulse_check.zkey verification_key.json
    snarkjs zkey export solidityverifier pulse_check.zkey Verifier.sol
  5. Для каждого нового input.json:
    node pulse_check_js/generate_witness.js pulse_check_js/pulse_check.wasm input.json witness.wtns
    snarkjs groth16 prove pulse_check.zkey witness.wtns proof.json public.json
    snarkjs groth16 verify verification_key.json public.json proof.json

Запуск backend (Flask)

  1. Установите зависимости:
    pip install -r requirements.txt
  2. Запустите сервер:
    python api/app.py

Примечания

  • Все переменные окружения должны быть прописаны в .env.
  • Для корректной работы используйте одну и ту же версию zkey для генерации proof и деплоя Verifier.sol.
  • Для тестов используйте Sepolia ETH (можно получить в кранах).

Быстрый старт

cd hardhat
npx hardhat compile
npx hardhat run scripts/deploy-verifier.js --network sepolia
npx hardhat run scripts/deploy.js --network sepolia
cd ../circom
circom pulse_check.circom --r1cs --wasm --sym
curl -L -o pot12_final.ptau https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_12.ptau
snarkjs groth16 setup pulse_check.r1cs pot12_final.ptau pulse_check.zkey
snarkjs zkey export verificationkey pulse_check.zkey verification_key.json
snarkjs zkey export solidityverifier pulse_check.zkey Verifier.sol
node pulse_check_js/generate_witness.js pulse_check_js/pulse_check.wasm input.json witness.wtns
snarkjs groth16 prove pulse_check.zkey witness.wtns proof.json public.json
snarkjs groth16 verify verification_key.json public.json proof.json
cd ../api
pip install -r requirements.txt
python app.py

Схемыч

image

About

Medical IoT, current: sensor events with zk-SNARK proofs on Ethereum Sepolia.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors