python_snarks
Project description
python-snarks
This is a Python implementation of zkSNARK schemes. This library is based on snarkjs, and uses the output from circom.
For now, it is for research purpose, not implemented for product.
Install
$ pip install python-snarks
Usage
import os
from python_snarks import Groth, Calculator, gen_proof, is_valid
def test_groth():
## 1. setup zkp
print("1. setting up...")
gr = Groth(os.path.dirname(os.path.realpath(__file__)) + "/circuit/circuit.r1cs")
gr.setup_zk()
## 2. proving
print("2. proving...")
wasm_path = os.path.dirname(os.path.realpath(__file__)) + "/circuit/circuit.wasm"
c = Calculator(wasm_path)
witness = c.calculate({"a": 33, "b": 34})
proof, publicSignals = gen_proof(gr.setup["vk_proof"], witness)
print("#"*80)
print(proof)
print("#"*80)
print(publicSignals)
print("#"*80)
## 3. verifying
print("3. verifying...")
result = is_valid(gr.setup["vk_verifier"], proof, publicSignals)
print(result)
assert result == True
export solidity verifier
Groth class's export_solidity_verifier function creates solidity file. You can deploy it on ethereum network and use it as a verifier.
import os
from python_snarks import Groth, Calculator, gen_proof, is_valid
def test_groth():
## 1. setup zkp
print("1. setting up...")
gr = Groth(os.path.dirname(os.path.realpath(__file__)) + "/circuit/circuit.r1cs")
gr.setup_zk()
gr.export_solidity_verifier("verifier.sol")
verifying on contract
result = contract_instance.functions.verifyProof(
...proof and public signals...
).call()
Test
$ pytest tests/test_groth16.py
Supported platforms
The supported platforms currently support are set to the requirements of the wasmer-python.
TODO
- Compatibility with the latest snarkjs, circom
- Performance optimizing
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python-snarks-0.0.3.tar.gz.
File metadata
- Download URL: python-snarks-0.0.3.tar.gz
- Upload date:
- Size: 18.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3963f4a3b228bba217d88befcebd68b81831c4bd4948573bd7028f89ba39ba1
|
|
| MD5 |
9dd476df80463a3439b8af40f9ab0680
|
|
| BLAKE2b-256 |
17f5af1db9e5299c8d90ad7fed7f3b9da3163c8d5b3aeca1efa2317b94521f1f
|
File details
Details for the file python_snarks-0.0.3-py3-none-any.whl.
File metadata
- Download URL: python_snarks-0.0.3-py3-none-any.whl
- Upload date:
- Size: 35.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7a33935e6379f22b66a4984f6392c96dac2484130bf48fedf8aa32c0724b1ec
|
|
| MD5 |
e45599b864bc0557561854b92ed70103
|
|
| BLAKE2b-256 |
b2ac5cd2ceab6842394b837d84dfba49846a8046837aeee205320a398316b970
|