Releases: QED-it/zkinterface
Releases · QED-it/zkinterface
v1.3.4, 2021-03, example --field-order
Rust:
- Generate example circuit with a configurable field order in the header:
zkif example --field-order 101
Ecosystem:
- Upgrade of Bellman and Bulletproofs repos.
- Update
ecosystem/README.mdfor better reproducibility.
v1.3.3, 2021-02, Metrics
Rust:
- Circuit generator for benchmarking (
zkif metrics). - More documentation.
v1.3.2, 2020-10, Improve simulator
Rust:
- Fix a bug when using simulate from stdin.
- Simplify and unify the interface of Validator and Simulator.
- Method
CircuitHeader.list_witness_ids().
v1.3.1, 2020-10, Rust streaming
Rust:
- WorkspaceSink creates multiple constraints files instead of a large one.
- Example code to read in chunked/streamed mode.
- Consolidate the workspace file discovery into its module.
v1.3.0, 2020-10, Rust streaming
Rust:
- Unified Workspace reader with streaming mode.
- Supports reading from stdin stream.
- Supports reading chunk by chunk from unlimited files.
- CLI stats, validate, and simulate work in streaming mode.
- (breaking) Renamed FileSink to WorkspaceSink.
v1.2.1, 2020-10
Rust:
- Make CLI tools available as a library.
- Fix a bug in the simulator.
- Start organizing workspace features in a module.
- clean_workspace() function.
v1.2.0, 2020-09, Rust refactor
FlatBuffers schema (binary encoding remains unchanged):
- Renamed
CircuittoCircuitHeader. - Renamed
connectionstoinstance_variables.
CLI:
to-json- Convert messages into one-line compact JSON.to-yaml- Convert messages into readable YAML.validate- Validate the format of messages, from the point of view of the verifier.simulate- Validate the format of messages and verify that the statement is true, from the point of view of the prover.
Rust:
- (breaking) Moved "owned" structures to a
structsmodule and removed the "Owned" suffix. - (breaking) Organized code into
producersandconsumersmodules. - (breaking) Renamed
reading::Messagesintoconsumers::reader::Reader. - Renamed occurrences of
circuitormaintoheader. - Simplified
StatementBuilder. Renamed occurrences of "Store" to "Sink". - Moved helpers for external gadget calls into a
gadget_callermodule. - Using the StructOpt library for the CLI.
v1.1.4, 2020-08, Rust fixes
Rust:
- Default trait, build() method, doctests for *Owned structures.
- Fix all potential divide-by-zero.
v1.1.3 - Rust/C++/libSNARK end-to-end integration
Rust:
- (breaking) Expanded
*Ownedstructures (KeyValueOwned, renamewrite_into, serialization ofConstraintSystemOwned). - (breaking) Generic code improvements (Rust 2018, common
Result, naming, modules re-exports). - Consolidated all tools into one CLI called
zkif. - Available commands:
- JSON converters (
jsonandpretty). - Human-readable decoder called
explain. - Example circuit generator.
- Statistics for cost estimation (
stats). - Support for byte streams to pipe with other CLIs (
catcommand and special-filename meaning stdin/stdout).
- JSON converters (
- Established a convention for easy file-based usage. The tools accept a workspace directory where
.zkiffiles are organized. - Structures to construct ZK statements. See
statement.rs / StatementBuilder. - A trait
GadgetCallbacksand basic implementations to interact with gadgets (e.g. libSNARK below). - Fixed a bug on empty variables array.
libsnark-rust:
- Support zero-copy mode using the generic
GadgetCallbackstrait. - Tests with a TinyRAM gadget and
StatementBuilder.
C++:
- Support for multiple messages of each type.
- Simplify the
zkif_snarkCLI and work well with the workspace and pipe modes of thezkifCLI.
v1.1.2 - libsnark and gadgetlib for Rust
Rust:
- Introduce a new crate:
zkinterface-libsnark. - Remove C++ integration from the
zkinterfacecrate. - Support for
Commandmessages. - CMake integration in
build.rs. - C++ libsnark wrapper. See
gadgetlib_call_gadget(). - A test as an example. See
test_cpp_gadget().
C++:
- Organize built artifacts:
zkif_gadgetliblibrary, headers, dependencies, CLI wrappers. - Clean up and organize code.
- Fix and clarify the translation between libsnark variables and zkInterface IDs. See class
VarIdConverter. - Demonstrate a working gadget: a TinyRAM ALU operation. See
gadgetlib_alu::call_gadget().