ethan-000 / halo2_backend Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
issue with rust-toolchain. can only run on rust 2022-10-28. not compatible with noir front end rust 1.66
Ideally, we want to configure the circuit based on the opcodes required.
For example, if the circuit doesn't use ecdsa opcode there's no need to configure ecdsa.
currently the configure function of the Circuit
trait in halo2 doesn't take self
, so it doesn't have access to the fields of the struct (NoirHalo2Translator). I'm wondering if theres a way around this.
Given requirements for interoperating between axiom gate chips and standard halo2 chips (given with example of keccak rather than StandardPlonk, but same process):
Likely requires a custom thread builder!
BTreeMap of Witness
to a vector of AssignedCell
structs.
For public IO:
If noir circuit has public inputs and/or return values add a single instance column. At end of proof synthesis iterate through public inputs/ outputs and constrain values to be instance values. Use index of public inputs (then num public inputs + index of public output) to determine row of instance column to assign
For equality constraints:
Idea WIP - when assigning advice, check if witness already has cell assignment. If assignments >= 1 constrain current assignment to be equal to previously assigned cell instead of assigning witness from OpCode
It would be ideal to verify the authenticity of Halo2 circuits natively. We should run MockProver against generated circuits to verify their outputs. One issue is that the witness solver will fail to generate values that cause the circuit to fail. Therefore, to fully ensure that circuits behave in the expected case for each of the examples/ tests, we will need to have custom witness maps that will cause the halo2 prover to fail.
I tried randomly assigning the witnesses for arithmetic constraints in Axiom and the proof verifies always.
but PSE seems to constrain correctly (incorrectly setting a/b/c will cause verification to fail)
This already needs to be refactored slightly to use Axiom's contexts in order to support QuantumCells
across all witnesses which is needed for equality constraints, will update with more diagnostics/ solution
Want to add table for feature-list. Easier and more space efficient to look at.
Written using markdown (example for reference).
features | halo2-pse | halo2-axiom |
---|---|---|
feature X | supported | supported |
feature Y | supported | not supported |
feature Z | not supported | supported |
No response
No response
Yes
No response
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.