Implémentation d'un simple mécanisme de vérification d'âge utilisant des preuves à divulgation nulle de connaissance (ZK-SNARK) pour la validation d'identité.
- Rust (pour compiler Circom)
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
- Node.js (v16+ recommandée)
- Cloner et compiler Circom :
git clone https://github.com/iden3/circom.git
cd circom
cargo build --release
cargo install --path circom
- Vérifier l'installation :
circom --version
npm install -g snarkjs
- Cloner le repository
git clone https://github.com/lorcann-rauzduel/zk-snark-age-verification.git
- Installer les dépendances :
pnpm install
- Compiler le circuit :
# Compilation du circuit
pnpm compile
# Génération de la trusted setup
pnpm trusted-setup
# Contribution à la trusted setup
pnpm contribute
- Lancer les tests
npx hardhat test
const { proof, publicSignals } = await generateProof({
age: 22, // Âge à prouver
});
await ageGateway.verify(
[proof.pi_a[0], proof.pi_a[1]],
[
[proof.pi_b[0][1], proof.pi_b[0][0]],
[proof.pi_b[1][1], proof.pi_b[1][0]],
],
[proof.pi_c[0], proof.pi_c[1]],
publicSignals
);