nilfoundation / zkllvm Goto Github PK
View Code? Open in Web Editor NEWZero-Knowledge Proof Systems Circuit Compiler
Home Page: https://docs.nil.foundation/zkllvm
Zero-Knowledge Proof Systems Circuit Compiler
Home Page: https://docs.nil.foundation/zkllvm
Guys, it's unclear how can I make my own .cpp compilation
make -C ${ZKLLVM_BUILD:-build} circuit_examples -j$(nproc)
what should I put instead of circuit_examples?
Add "-target assigner" to CircuitCompile.cmake
Add list of crypto3 dependencies for circuits and pass corresponding include directories into clang.
Extend examples set to include:
Config file config.zkllvm.toml
in rslang
default configs will be removed. So in CMakeLists.txt
we should provide configuration for building rslang
using libs/rslang/configure
script.
This also will provide more accurate paths to LLVM and allow to use absolute paths. As mentioned in this issue, absolute paths are required sometimes.
Introduce verifier interface compatibility with NilFoundation/evm-placeholder-verification#17.
--option allows to put multiple small gates in one .sol file.
It's compatible with:
NilFoundation/evm-placeholder-verification#37
NilFoundation/zkllvm-transpiler#3
The main issue is:
As a result Python script and shell script invoking it should be added here.
Currently proof market does not take *bc files as input and needs *ll files.
Cmake workspace for this project is zkllvm. However, the crypto3 suite has crypto3 workspace inside and some cmake configs inside it throw warnings because of it.
rslang repo should be a submodule of zkllvm
, not circifier
, so move it to libs
.
Sha2-256 and Poseidon intrinsics support has been recently added to circifier and assigner. We need to update the SDK and the submodules as well in order to show this functionality in the examples.
Use github Actions to automate tests execution (or manually trigger tests execution). Use self-hosted actions runners to run CI.
Use ccache in CI builds on self-hosted Linux machines.
Options:
Make the repository dependant only on one repository.
Follow-up to #2: build zkllvm in CI on macOS, at least in one environment (os version × compiler × boost).
Stdlib dev deb packet for installation
Add file with library version. If necessary, the developer will change the major and minor versions of the library in it.
Make automatic change of library patch version in case of merge to master. (In case of successful closing of PR)
Build rslang from the root CMake file.
Linked branch should be merged only after merging rslang into circifier.
Devs who start working with zkllvm need a prepared environment. Besides installing zkllvm, they need to get other dependencies, and sometimes build a custom version of boost. It's not a good developer experience.
Implementation:
After building and releasing new packages build and publish a docker image.
https://hub.docker.com/r/nilfoundation/zkllvm
We can use tags for slim (just zkllvm) and fat/full builds (+cmake, boost, etc.).
Warp transpiler does not support low-level Yul (asm) . We need to use warp to make our gates transpiled to cairo so they can be deployed on starknet.
We have two options here :
- Option 1: Output solidity without assembly -> Use warp (upcoming version) to generate cairo. We need to get a better estimate from nethermind team on when this version will be ready.
- Option 2: Output pure cairo 1.0
Curve arithmetic examples on the old interface fail in the assigner with Core dump.
Add curve types to clang and IR, support basic operation for curves
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.