Skip to content

Releases: QED-it/zkinterface

v1.3.4, 2021-03, example --field-order

08 Mar 14:18
f3371d4
Compare
Choose a tag to compare

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

22 Feb 08:16
Compare
Choose a tag to compare

Rust:

  • Circuit generator for benchmarking (zkif metrics).
  • More documentation.

v1.3.2, 2020-10, Improve simulator

21 Oct 19:08
5eb619b
Compare
Choose a tag to compare

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

19 Oct 18:50
8b396fb
Compare
Choose a tag to compare

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

18 Oct 17:31
f5f2e9b
Compare
Choose a tag to compare

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

18 Oct 11:15
33c57fc
Compare
Choose a tag to compare

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

04 Oct 16:55
7e1268a
Compare
Choose a tag to compare

FlatBuffers schema (binary encoding remains unchanged):

  • Renamed Circuit to CircuitHeader.
  • Renamed connections to instance_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 and consumers modules.
  • (breaking) Renamed reading::Messages into consumers::reader::Reader.
  • Renamed occurrences of circuit or main to header.
  • 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

19 Aug 10:34
Compare
Choose a tag to compare

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

26 Jul 11:33
83643dd
Compare
Choose a tag to compare

Rust:

  • (breaking) Expanded *Owned structures (KeyValueOwned, rename write_into, serialization of ConstraintSystemOwned).
  • (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 and pretty).
    • 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).
  • 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 the zkif CLI.

v1.1.2 - libsnark and gadgetlib for Rust

30 Jun 12:19
e35f58b
Compare
Choose a tag to compare

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().