feat: add poly-proof-core crate - #380
Conversation
c63751f to
c09a9b8
Compare
c09a9b8 to
86aa8a6
Compare
d46f85d to
ece7f7a
Compare
86aa8a6 to
ea54658
Compare
|
migrated to v2 API and ready for review, @sinui0 |
|
This still constructs an in-memory DAG and pays for dispatch while traversing it. It should be possible to define the circuit statically using the |
|
I had a look at that, and my current feeling is that the gains of direct
There may be other concessions too (closure storage + re-invocation per evaluation, loss of pre-computed d_max / scratch layout, etc.). I'd rather revisit once profiling tells us which cost dominates, especially in the WASM environment. |
ece7f7a to
b909270
Compare
ea54658 to
22539cb
Compare
|
@sinui0 , implemented straight-line kernels, also updated the description with the bench results. Ready for review. |
8daea66 to
a8777fd
Compare
a8777fd to
4d1f2b0
Compare
|
This seems like it is severely more complex than it ought to be, especially the introduction of proc-macros. The implementation still has an in-memory circuit model, but all our circuits are statically determined. The polynomial proof functionality should get built into the existing Prover/Verifier types in zk-core-new, as we will be using a composite of polynomial constraints + degree 1, all with the same setup and My recommendation would be to clean slate this and restarting with the One simplification worth keeping in mind is that we don't need it to be fully generic, we know exactly what field sizes we want: F_2 and F_2^64. |
|
I took a look at this inline-trait approach, and I don't think we can both retain the Adding specialised methods or typed |
|
Enforcing 128-bit field size. Updated the description with benches for |
|
Closing in favor of #429 |
This PR adds the core of the Quicksilver polynomial proof protocol.
Also adds a
#[poly_kernel]proc macro that turns context-aware circuits into straight-line kernel constraints.Benchmarks
Polynomial set emulating the SpeakUp 50K-CPU-step constraints — 11.6M evaluations evaluations (~232 per step), single-threaded, using
Gf2_128.Native =
RUSTFLAGS="-C target-cpu=native"(lights uppclmulqdqforGf2_64); WASM =wasm32-wasip1-threadsonv8.