team-byof / zk-face-circuit

πŸ”πŸ”ŽπŸŒ BYOF Halo2 Circuit (ΰΈ‡'Μ€-'́)ΰΈ‡

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BYOF (Bring Your Own Face) - Halo2 Circuit πŸ”πŸ”ŽπŸŒ

image

Welcome to BYOF, where you bring your own face to unlock the secure and privacy-conscious world that enhances the user experience in web3 world like in web2 world. Leverage the power of facial recognition and zero-knowledge proofs to ensure ultimate security for your Ethereum wallets. Say goodbye to traditional passwords or keys and let your face be the key!

About πŸ“–

Inspired by the subtle and intricate patterns of human facial features, BYOF presents a robust Face Wallet Verification system for Ethereum wallets. By transforming biometric data into unique digital representations, our system guarantees that each access is secure, private, and intuitive.

This metaphorical human face you see here illustrates the blend of advanced technology with user convenience – a facial recognition technology that keeps your data safe secure and well-crafted user-experience within the web3 and zero-knowledge proof realm.

Setup πŸ’»

Prerequisites

  • Python 3.10 (maturin)
  • Rustup 1.26.0 (5af9b9484 2023-04-05)
  • Visit Pyo3 for getting started with Pyo3

Installation

# Install the required packages
pip install -r requirements.txt

# Navigate to bridge
cd bridge

# Run maturin
maturin develop

Generate Halo2 Circuit for Ethereum Solidity Verifier

  • Export the Halo2 circuit to Solidity Verifier
    • Run the command below from the root directory of this repository.
# Generate parameters with power of 2
cargo run gen-params --k 20

# Generate keys
cargo run gen-keys

# If you want to download the binaries directly, use the script
./halo2-binary.sh

# Generate EVM verifier
cargo run gen-evm-verifier

Disclaimer

Journey Ahead πŸš€

  • The on-chain verification is not yet to be implemented since the gas optimization is a hard task above the hackathon.

Example

image.png

{
    "code_error": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "hash_ecc_msg": "0x1759d7dbdcfe9541f9af1ea2b70f6e46ce5d3bc17478cb5d42fae3ac29acaec1",
    "new_feat": "0xfffffffffffffffffffffbffdfffffffffff7ffffffffffff7fffff7ffffffffffffffffffffffffffeffeffbfffbffffffffffefff7ffffff77ffbffffffeffffffee7befff7fffffbffbffeffbefbffbffdfffffffffffdffe9fefff7fffdffeffffff5feefffffffbffffbfbfeffffffffffffffffffeff7ef5ffffff9ffefdf3ffffb7f7ffffffffd77efffffffefefbfffffdffffffffffffdd7efffffdbffffffffffbfffaefbffffffeffffffffdafefffbbfffffffffffbefffffbffffffefedffdfffffffefffbffffdecbd7effffdffffffffffffff7fb7ffffbfffbffffdffffffbffffbffffffbfffffffbfeffffff3fffffffdffffffffffffffbffffffffffffefebfdff5bffdfffffffffffffdfffffffffffff7dfbbfdffffffffffffffefffff7fffbfefffffffffffd7ffbffff6fffbf7ffffbffffffffbdfbfffffffffffc",
    "proof": "0x174c2202565f30ae9e58c4707203aa0e695a35e9cb3998856355a0586dcd1b2c272aa7fa5bf912ff076046437d04de39df459e159978e290cf51fc1c862da6641dd85a9a55f9a245c5635b302ca3c5007c490dc90bcb6ad1f1bf4b82aa76308624d68fc04652a8424cb0baef4e7ddd97ce33d22fe27cecc0c150321a9c9a809f082e6f915edffa43e2e4baa0bf02da1b180f4177fc16d496111154f8017224ed2504fac5b233c73312d3c6a95178f1c305129a0e03afbb86e11a7c8011b1ae0401cfb6e88f5eb700a074841a21ded9858ffc34e7a78538cdda9503c8bf518b2b15dbdddf300b014bf3b9e024de3c6301a45859855627ba6e1912639d16ba1d4b1acc9aa40227504da2ae57fc95ed72c4de872e551181ee5c4f72303548cdb98f09489f5d5d26854d870285e13f3eded9737fd1c4f7f346f2e25b8bd4a129d31e11371e2874e18e414bf710391e2086d70c93a3a65f755ebe692b042b3c3981fd069584cb3235b0108cd40008ed2109fa776d2f3e350893420674f02796a86ccb05765013be6465a9b5f6c56b918db51d88dcd4e57f3104e79396c2b77598db63162bb6d85c4dc6c363953a2768239d6287194733aee1e8a379eb1cf8716193a60db827a80de22817cabc83bfb044a34111c2b6a03aa9394d329da3e90b8b38970b5db937973a3a8cc7a3b2fa69e42ec6a7a300e9d69a6982eb1202fe4232025012cc844c4f918b7f502e75964d148f450f7f465fdab20b1e0f0638621f3010012f9e4ee08d8e56595f24255dca83a235dc3e7f0b6aa4b846378231064305308b11f3f095baeed949fbf76413fd907a8e1628b2ab61f1c3921cb00326d233f95508efb51b3b82a502fcdc5e6b1243b0180c92dcdebd97ff8acd9f221aca61de4c2346dffb87729634aa5ad544780876cc2185e92fdfa3d8dbc81f05a2edad684e070a8f6dad40e98902e605cece9f230447708b41e7b667350ade1c642e08a4841690dd0f93f59fe449486021794ec6e4ad9400b6a5cc8b1220969f512a94bff12697ed837ac7c6e0768ef2026709accac8a0cd6c8042b82985d30129c20ba4c922d5f5391100447a90169bbfa979237ee8f76bb5b88831bf80ff4fa93df15d8e068a554cc6b02f5814884cc2f794b1e85d86b04246b7c51d553dd1d2403bd6e62794839162c1774645c236a3937e69bafdd716fc498e935e9d84e2c44cfb3bb91ce23544ac26af424fd5c3447e7c11cf8a97abc48c9807f484ac97483599130d1b82ae4906abcc81c5beb8cd3cf38554d36ca530923f9c85373cb96aeda643191f074b61833dcef639cf8a3e3deb6d5d19d2f915629f25f2d2cd4bc7af3302ca0f5197fa57fddee24ff4e2d527f4ec31ee66834ad8f65894497c68ac6fbe2c1f16e3e949b3aede853f10b36a7f32d68c0aa0253204284f202980f38de98457a420c601641538b483047818f798ef65026960c3959d37560840b4a6673c9fdeea141eb04a7cef9c77c1dcd8837c0e3c2d38a328bdc21c6e0b56bafd4acc34f3d721377ec0469f5493dd40b4776b22edb13b956f2a4a67e51399fda8d6e96543eb0ec250c09aad6b4ac1f83969d3340037b2533a32ca21c7e8ea91263817f91b4d2004e87dc8c954d91c1f64403ec90cc12ee9defcbf47a6571099b3ffa9d9352f0ae1950e40fc0b35bd177813fe3a8f5da8bca50a6ca5d96803bde260d4d36e4b2796d137fbad042e2e1685d13ee50d7e4fc3ba352ebe4aa8956e1ea5d678b73d0130fbb7858cd3121cdfb4682c74bcc65ae70dbe9c1bd7a2715766ad69caf487184a658a4d483697ed61b8595c1783434919f701377217e067055f063da0bbe22acf4345210a9366a7291eb072dc840b66795130496bca61d64c30aa7b1836b3092bf51b05c39a1e02ec724e2293cbf66497ecf4c12ce8e0ea1aff8c255226300ad7ae4683b85e62f93f91abfab697add157fe3f6ee2785df0e2f381e5bad88c21218c9fe8989709fb8387c265324ddc810ae1e7c0d73e2683e2abaa6632521f1d6e867dc239ad5a50e1acae6f69e811c742b8aaf2b8b93e09b7e17f5df0592e1f62b7d1e849fdc720c54b6343148899002b80dcd2dc347ba9906b81ed3c91a01cc649f6403c7e90fe0dbf72fcb6443f3441f537e1d419863570419272a628732390ce982b04eb41855d1771aaf8e181335d1a0cd2ab0c7d93ef63ddd6c15b0e",
    "proof_bin": "0x174c2202565f30ae9e58c4707203aa0e695a35e9cb3998856355a0586dcd1b2c272aa7fa5bf912ff076046437d04de39df459e159978e290cf51fc1c862da6641dd85a9a55f9a245c5635b302ca3c5007c490dc90bcb6ad1f1bf4b82aa76308624d68fc04652a8424cb0baef4e7ddd97ce33d22fe27cecc0c150321a9c9a809f082e6f915edffa43e2e4baa0bf02da1b180f4177fc16d496111154f8017224ed2504fac5b233c73312d3c6a95178f1c305129a0e03afbb86e11a7c8011b1ae0401cfb6e88f5eb700a074841a21ded9858ffc34e7a78538cdda9503c8bf518b2b15dbdddf300b014bf3b9e024de3c6301a45859855627ba6e1912639d16ba1d4b1acc9aa40227504da2ae57fc95ed72c4de872e551181ee5c4f72303548cdb98f09489f5d5d26854d870285e13f3eded9737fd1c4f7f346f2e25b8bd4a129d31e11371e2874e18e414bf710391e2086d70c93a3a65f755ebe692b042b3c3981fd069584cb3235b0108cd40008ed2109fa776d2f3e350893420674f02796a86ccb05765013be6465a9b5f6c56b918db51d88dcd4e57f3104e79396c2b77598db63162bb6d85c4dc6c363953a2768239d6287194733aee1e8a379eb1cf8716193a60db827a80de22817cabc83bfb044a34111c2b6a03aa9394d329da3e90b8b38970b5db937973a3a8cc7a3b2fa69e42ec6a7a300e9d69a6982eb1202fe4232025012cc844c4f918b7f502e75964d148f450f7f465fdab20b1e0f0638621f3010012f9e4ee08d8e56595f24255dca83a235dc3e7f0b6aa4b846378231064305308b11f3f095baeed949fbf76413fd907a8e1628b2ab61f1c3921cb00326d233f95508efb51b3b82a502fcdc5e6b1243b0180c92dcdebd97ff8acd9f221aca61de4c2346dffb87729634aa5ad544780876cc2185e92fdfa3d8dbc81f05a2edad684e070a8f6dad40e98902e605cece9f230447708b41e7b667350ade1c642e08a4841690dd0f93f59fe449486021794ec6e4ad9400b6a5cc8b1220969f512a94bff12697ed837ac7c6e0768ef2026709accac8a0cd6c8042b82985d30129c20ba4c922d5f5391100447a90169bbfa979237ee8f76bb5b88831bf80ff4fa93df15d8e068a554cc6b02f5814884cc2f794b1e85d86b04246b7c51d553dd1d2403bd6e62794839162c1774645c236a3937e69bafdd716fc498e935e9d84e2c44cfb3bb91ce23544ac26af424fd5c3447e7c11cf8a97abc48c9807f484ac97483599130d1b82ae4906abcc81c5beb8cd3cf38554d36ca530923f9c85373cb96aeda643191f074b61833dcef639cf8a3e3deb6d5d19d2f915629f25f2d2cd4bc7af3302ca0f5197fa57fddee24ff4e2d527f4ec31ee66834ad8f65894497c68ac6fbe2c1f16e3e949b3aede853f10b36a7f32d68c0aa0253204284f202980f38de98457a420c601641538b483047818f798ef65026960c3959d37560840b4a6673c9fdeea141eb04a7cef9c77c1dcd8837c0e3c2d38a328bdc21c6e0b56bafd4acc34f3d721377ec0469f5493dd40b4776b22edb13b956f2a4a67e51399fda8d6e96543eb0ec250c09aad6b4ac1f83969d3340037b2533a32ca21c7e8ea91263817f91b4d2004e87dc8c954d91c1f64403ec90cc12ee9defcbf47a6571099b3ffa9d9352f0ae1950e40fc0b35bd177813fe3a8f5da8bca50a6ca5d96803bde260d4d36e4b2796d137fbad042e2e1685d13ee50d7e4fc3ba352ebe4aa8956e1ea5d678b73d0130fbb7858cd3121cdfb4682c74bcc65ae70dbe9c1bd7a2715766ad69caf487184a658a4d483697ed61b8595c1783434919f701377217e067055f063da0bbe22acf4345210a9366a7291eb072dc840b66795130496bca61d64c30aa7b1836b3092bf51b05c39a1e02ec724e2293cbf66497ecf4c12ce8e0ea1aff8c255226300ad7ae4683b85e62f93f91abfab697add157fe3f6ee2785df0e2f381e5bad88c21218c9fe8989709fb8387c265324ddc810ae1e7c0d73e2683e2abaa6632521f1d6e867dc239ad5a50e1acae6f69e811c742b8aaf2b8b93e09b7e17f5df0592e1f62b7d1e849fdc720c54b6343148899002b80dcd2dc347ba9906b81ed3c91a01cc649f6403c7e90fe0dbf72fcb6443f3441f537e1d419863570419272a628732390ce982b04eb41855d1771aaf8e181335d1a0cd2ab0c7d93ef63ddd6c15b0e",
    "proof_succeed": true,
    "recovered_hash_ecc": "0x148d0e41c16f88ac5a7432d41e51658c67f97211f5a658d7191b0e2f97c385d2",
    "session_id": "uzikfltfneyrclemewuu"
}

About

πŸ”πŸ”ŽπŸŒ BYOF Halo2 Circuit (ΰΈ‡'Μ€-'́)ΰΈ‡

License:Apache License 2.0


Languages

Language:Rust 43.4%Language:Solidity 41.8%Language:Python 14.0%Language:Shell 0.4%Language:Makefile 0.4%