#evaluate #memory #binary #opcode #foreign

brillig_vm

The virtual machine that processes Brillig bytecode, used to introduce non-determinism to the ACVM

28 releases (15 breaking)

new 0.27.0 Sep 20, 2023
0.25.0 Sep 4, 2023
0.21.0 Jul 26, 2023

#68 in Emulators

Download history 1071/week @ 2023-06-05 905/week @ 2023-06-12 756/week @ 2023-06-19 158/week @ 2023-06-26 510/week @ 2023-07-03 552/week @ 2023-07-10 583/week @ 2023-07-17 682/week @ 2023-07-24 539/week @ 2023-07-31 1040/week @ 2023-08-07 1184/week @ 2023-08-14 1657/week @ 2023-08-21 1500/week @ 2023-08-28 1822/week @ 2023-09-04 1661/week @ 2023-09-11 1043/week @ 2023-09-18

6,128 downloads per month
Used in 2 crates (via acvm)

MIT license

160KB
3K SLoC

ACIR - Abstract Circuit Intermediate Representation

ACIR is an NP complete language that generalizes R1CS and arithmetic circuits while not losing proving system specific optimizations through the use of black box functions.

ACVM - Abstract Circuit Virtual Machine

This can be seen as the ACIR compiler. It will take an ACIR instance and convert it to the format required by a particular proving system to create a proof.


lib.rs:

The Brillig VM is a specialized VM which allows the ACVM to perform custom non-determinism.

Brillig bytecode is distinct from regular ACIR in that it does not generate constraints. This is a generalization over the fixed directives that exists within in the ACVM.

Dependencies

~6MB
~105K SLoC