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
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
python-snarks-0.0.2.tar.gz
(17.3 kB
view hashes)
Built Distribution
Close
Hashes for python_snarks-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0df1e41fe20815dd7915917b9f54152806e60e77cb5c4ee4c74959861084af5b |
|
MD5 | 8051817d019b4442fbf0df9eaac9b408 |
|
BLAKE2b-256 | 7ce14695472bc0f98cc016ec9489feb56711837327b2693b09e874308ae2d319 |