#
Python bindings
#
using ezkl from Python
pip install ezkl
python
>>> import ezkl
lets you use ezkl
directly from Python. Here is a colab notebook that shows how to produce and verify a proof from Python.
When installing ezkl
with pip, you may want to use a virtualenv.
Some virtualenv management solutions for python includes venv
, pipenv
, conda
, and poetry
.
#
development
Python bindings are built for ezkl
using PyO3 and Maturin.
To test the development Python bindings you will need to install Python3.
Note, ezkl
is only supported for Python>=3.7
.
# using venv
python -m venv .env
source .env/bin/activate
pip install ezkl
#
2. Install solc-select or svm-rs
To run solidity and evm related functionality make sure to have solc available in your environment.
We will need solc >= 0.8.20
, otherwise contracts will fail to compile.
Otherwise, you are likely to encounter errors when dealing with solidity and evm related functionality that is used within ezkl.
It is recommended that you use solc-select if you prefer a python based management solution or svm if you prefer a rust based management solution. With a solidity version manager you are then able to change solidity versions in your environment easily.
#
3. Try out EZKL Examples in the repository with a Jupyter Notebook
Clone the pyezkl repository.
git clone https://github.com/zkonduit/pyezkl.git
Install jupyter and start the jupyter notebook
pip install jupyter
jupyter notebook
Navigate to the ezkl_demo.ipynb file which is located in the examples folder. It contains a minimal setup for running ezkl within python.
#
Developmental python bindings
Setting up the development python bindings can be an involved process.
#
ezkl repository
In the event that you may want to use the developmental bindings on the main ezkl
repository, you can clone and build the main ezkl repository written in rust instead.
git clone https://github.com/zkonduit/ezkl.git
It's recommended that you set up a separate virtual environment for this.
# using venv
python -m venv .env
source .env/bn/activate
pip install -r requirements.txt
Ensure that rust is installed in your local environment, this is needed by maturin/pyo3 to build the project.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Change the default toolchain to the nightly version as this is needed by some of the libraries used.
rustup override set nightly
After which, you should be able to build via maturin build
. This will build ezkl_lib
not ezkl
.
ezkl_lib
only includes the basic rust bindings without other Python functionality.
# Unoptimized development build, use this if you require visibility regarding Rust errors
# Note that this can result in long proving/verification times, if this is a problem use the optimized development build below
maturin build --features python-bindings
# Optimized development build, use this if you find that the proving/verification times become long
maturin develop --release --features python-bindings
#
API Reference
This reference details function, modules, and objects included in both ezkl
.
You can find the full api reference here.