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.md
for 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
Circuit
toCircuitHeader
. - Renamed
connections
toinstance_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
structs
module and removed the "Owned" suffix. - (breaking) Organized code into
producers
andconsumers
modules. - (breaking) Renamed
reading::Messages
intoconsumers::reader::Reader
. - Renamed occurrences of
circuit
ormain
toheader
. - Simplified
StatementBuilder
. Renamed occurrences of "Store" to "Sink". - Moved helpers for external gadget calls into a
gadget_caller
module. - 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
*Owned
structures (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 (
json
andpretty
). - Human-readable decoder called
explain
. - Example circuit generator.
- Statistics for cost estimation (
stats
). - Support for byte streams to pipe with other CLIs (
cat
command and special-
filename meaning stdin/stdout).
- JSON converters (
- Established a convention for easy file-based usage. The tools accept a workspace directory where
.zkif
files are organized. - Structures to construct ZK statements. See
statement.rs / StatementBuilder
. - A trait
GadgetCallbacks
and 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
GadgetCallbacks
trait. - Tests with a TinyRAM gadget and
StatementBuilder
.
C++:
- Support for multiple messages of each type.
- Simplify the
zkif_snark
CLI and work well with the workspace and pipe modes of thezkif
CLI.
v1.1.2 - libsnark and gadgetlib for Rust
Rust:
- Introduce a new crate:
zkinterface-libsnark
. - Remove C++ integration from the
zkinterface
crate. - Support for
Command
messages. - 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_gadgetlib
library, 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()
.