Commit Graph

287 Commits

Author SHA1 Message Date
Matthew Liu
bb71c20d24 merge debugger into mliu-backend 2023-08-01 16:28:00 -07:00
Matthew Liu
044e1c1c75 fmt 2023-08-01 16:11:58 -07:00
Matthew Liu
6da0352a84 refactor code to not have current zkp or fhe ctx, instead generic enum 2023-08-01 12:34:20 -07:00
Matthew Liu
2ef629d7ab removed is_multiplication from operatoin trait 2023-07-31 19:44:49 -07:00
Bryan Li
c4e6aef54f fixed some frontend stuff 2023-07-31 19:25:54 -07:00
Bryan Li
4179880b23 cargo fmt 2023-07-31 11:09:55 -07:00
Bryan Li
0f668bc3c9 removed duplicate serialization 2023-07-31 11:09:33 -07:00
Bryan Li
2377d3287f addressed some code review changes 2023-07-31 10:27:59 -07:00
Bryan Li
8c9c47b9f2 fixed formatting again 2023-07-30 22:03:39 -07:00
Bryan Li
f4128ecb5e fixed style and linting 2023-07-30 22:01:14 -07:00
Bryan Li
6f829a703c some ui fixes 2023-07-30 21:59:08 -07:00
Bryan Li
4019e47cd9 merged debugger into bryan/add-frontend 2023-07-30 21:29:16 -07:00
Bryan Li
5d75038053 changed fonts 2023-07-30 20:30:20 -07:00
mliu24
f66aa69b62 basically the whole debugger project (#269)
* added support for group id's in nodeinfo struct and modified new/add_node methods

* addedd support for group counter to fheprograms

* added support for group ids for zkp backend

* aded support for group id's in fhe and zkp programs

* finished support for group id in zkp programs

* added new function signature for creating new nodeinfo with debugger featuer on

* updated zkp jit compilation to support constructing nodes with group id

* added support for node group ids in fhe compiler

* format changes

* fixed clippy issues

* added a stacktrie struct

* added a function to add a stack trace. need to figure outhow to get group id's into the stacktrie

* Update rust.yml

* style fixes

* added structure for StackFrameLookup and stackframes trait

* support to add stack traces and updated dependencies

* clippy fixes

* clippy fixes

* created stackframeinfo struct, added get_stack_trace which has lifetime issues

* clippy fixes

* implementation for stackframelookup

* insertion and getting work

* formatting and documentation

* updated stackframeinfo constructor to not panic with no values

* changed it so trie stores stackframeinfo instead of backtraces

* format and clippy fixes

* started some work with fheprograms

* single frame insert test

* single backtrace insert

* single backtrace insert

* fixed minor loggic error in test single backtrace insert

* some more tests

* programcontext/programgroup structs defined

* more programgroup

* added a get for stackframelookup, added clone to programgroup

* infrastructure for groups

* fixed references of .0 into .graph and enabled conditional compilation of debugging structs, but this broke fhe_program proc macro

* cleaned up some conditional compilation logic in context, also formatting fixes

* fixed context compilation errors

* fixed dependency issues and can now return graph information of basic fhe program

* format fixes

* remains to figure out how to display graphs with rationals

* can display graph for given rational operations

* displays serialized graph strings

* added run_impl and debug_fhe_program, also added debuginfo struct and added parameter for secret key in run unchecked

* fixed compilation errors for tests in run file, now does tests with secret key

* updated measuredmodel call to run_program_unchecked with a secret key

* clippy and format fixes

* doc fixes

* fixed some fhe program tests based on changes to compilationresult data structure

* format fixes

* modified tests in validation.rs

* sessions file + data structure:

* documentation for sessions

* documentation, removed some unused dependencies

* format and clippy fix

* moved sessions to runtime

* rick's coimments/changes

* implemented set_data, also added calls to set_data in run unchecked

* fixed compilation rrors in tests for run.rs

* more compilation error fixes + moved fhe-debugger into debugger module

* added fhe-debugger files as modules

* fxied remaining compilation issues in run

* removed nodes file from debugger

* created start web server function

* fixed some depenendcy issues to enable debugger feature across workspace, now going to fix compilation results/add support with debugger feature

* enabled debugger in zkp backend

* compilation errors in graph construction test, enabled debugger feature in sunscreen_fhe_program

* fixed more compilation errors and enabled debugger feature in sunscreen_backend. next step: figure out secret vs privatekey and change debug_fhe_program accordingly

* modified visibility of sealsecretkey in privatekey struct to be public

* format

* modified debug_fhe_program to not return anything

* fixed compilation errors based on conditional dependencies when debugger not enabled

* fixed errors due to conditional compilation with debugger feature in fhe_program_tests

* managed to get webserver up and running. remains to figure out how to get the graph data

* can now support dynamic paths but currently web server is not set up in a way that you can debug multiple programs

* moved code from sessions.rs to server.rs

* server file

* added support for cors so frontend can now grab data from backend. currently it only grabs a string that allows the frontend to construct a graph

* proc macro updates to be able to get source code of an fhe program with .source()

* added support for fhe program source code. in debug mode, run.rs tests wont compile because debug_fhe_program now asks for 7 arguments instead of 6

* fmt fixes

* clippy fixes

* get fhe node data impleented, still doesnt ocmpile. need to figure out how to handle sealdata stuff

* fixed async issues, now can support multiple sessions

* rick fixes

* updated fhe_program_tests to have metadata fields and group_id. need to fix construction of graph so that group ids are updated

* fhe program tests now pass with debugger feature enabled, updated group counter when assigning ids to nodes

* passes tests with debugger feature enabled and disabled

* fmt fixes

* clippy fixes

* addressed race conditions in run tests, now pass those tests with and without debugger feature

* removed changes to settings.json

* removed unncessary comments from fhe_program_tests

* removed some unnecessary TODO

* removed more unnecessary comments

* removed group struct, defined Group type as a String

* modifying interface for lookup data structures

* removed unnecessary prints

* remove more prints

* removed secretkey from debug_fhe_program, now uses privatekey instead

* removed conditional compilation from a functoin that shouldnt have it

* removed group counter updates from common_subexpression_elimination test. graphs can be isomorphic even if group id's don't match up exactly

* clippy and fmt

* undid some clippy changes so that code compiles

* error handling for get_fhe_node_data and implemented idlookup trait for stackframelookup

* stack id for nodeinfo

* stack id for node info and context changes

* removed serialization of sealdata, instead created serializedsealdata struct which contains debugger info about cipher/plaintexts

* removed unnecessary todos

* skeleton for getting cipher/plaintext data

* modified visibility of Error field in lookup, cloned some values in server

* sunscreen fhe znd zkp support for stack ids on ndoes

* fmt

* clippy

* can now see dummy node data

* removed some old/dead code from server and added backtrace to compiler crate

* dependency updates

* put multiplicative depth on nodeinfo, also updated operationtrait

* enabled internal tagging with conditional compilation with debugger feature

* compile fixes, added multiplicative_depth field to nodeinfos

* attempted to allow for multiplicative depth ... this currently does not work. also group ids dont seem to be assigned correctly

* two changes: modified Operation enum to be struct instead of tuple variants and fixed associated compilation errors, also removed multiplicaitve depth field from NOdeInfo and fixed corresponding compilation errors

* more compilation errors for struct variants of Operatio nenum fixed

* moved group and stack counters off context and onto metadata ... maybe should move this onto the lookup structs themselves?

* skeleton for idlookup trait for grouplookup

* moved lookup to compiler ocmmon from runtime

* moved lookup into src

* documentation for lookup

* attempting naive multiplicative depth algorithm

* removed get_mult_depth that didn't function, currently returns 0

* can display coefficients for plaintexts

* moved build to sunscreen_runtime directory from debugger

* WIP

* rick's changes

* fixed webpack errors

* progress towards coefficients

* Don't ship dist folder

* WIP

* fmt changes. also can display coefficients of plaintexts

* attempting to debug ciphertext coefficient info

* removed groups.rs file

* conditional compilation for dependency import to stop clippy complaints

* more clippy fixes

* more conditional compilation for dependncies

* fmt

* implemented default trait for lookup structures

* combine 2 dependency imports

* just allowed for unused imports

* updated serialization types

* changed serializable enums to be internally tagged

* capturing stack traces

* format

* added sleep calls in infinite loop to reduce cpu usage

* remove default cals from chi_sq example

* format

* allow for insertion of ids/keys in lookup structure

* added a 2nd call to mad for debugging example. also inserted some dummy keys for stack lookup

* attempts to debug decryption of coefficients with seal:

* removed dbg from seal file

* added a stacktrace endpoint, but it doesnt display anything useful yet

* fmt

* can now display coefficients

* clippy fix

* fmt

* noise budget is nullable

* named cipher and plaintexts

* removed some unnecesasry comments

* error handling for run program unchecked

* remove internal tagging so that literals work

* format

* unnecessary comments removed

* get_mult_depth works in some cases, need to write tests

* singular empty etst

* attempt to redesign stack frame lookup -- this is a very inefficeint way of doing it, but should work

* added support to capture stack traces, but there's an issue with the data not being saved so it can be served to the frontend

* fmt

* clippy

* default implementation for gorup and stacklookup

* fmt

* can now display stack traces

* fmt

* clippy

* fmt

* refactoring code to change serializedsealdata to bfvnodetype

* comment out dead code

* start zkp sessions

* moved decrypt seal logic to a new function

* wrote polynomial multiplication functions

* zkpsession and imports

* overflow for polynomials

* overflow can now only be true for ciphertexts that are the output of an arithmetic operation

* examples for overflow and chaining

* remove some unnecssary imports

* server now supports serializing zkp data

* zkp now returns bigint as a string

* set up params that cause noise budget exceeded in debugger example

* remove tests from lookup

* added name metadata to zkp programs

* updated construction of expected graphs for fhe_program_tests

* modified tests for validation to account for struct variants

* added session provider

* SessionProvider

* added gorup and stack id for some validation tests

* Fix a test

* Fix tests

* Fix feature plumbing

* Fix lookup

* fuck off

* changed generic to Box of dyn

* functional zkp debugger

* clippy

* clippy

* fmt

* clippy

* fmt

* janky a solution to conditional compilation keeping variables out of scope

* fmt

* conditioanl compilation for debugdata

* remove print debug from measured model

* remove unnecssary comment

* remove todo

* removed serialize function for stackframeinfo, instead hashed it

* remove unnecessary conditional compilation in common subexpression eliminioatno

* change fhe program macro to preserve white space

* changed get_mult_depth to iterative bfs

* add functions to modularize overflow calculation

* overflow code now compiles but needs to actually be implemented

* can extract coefficients from innerplaintext

* implemented overflow detection for fhe programs

* modified checks for overflow

* remove internal tagging comments

* clippy

* removed unwrap or else and turned into expect

* clippy actually likes unwrap or else

* fmt

* gate some imports

* fix gating issues

* removed some gating

* removed gating from debugger module; zkp runtime uses it

* fmt

---------

Co-authored-by: Bryan Li <bryanyuezhouli@gmail.com>
Co-authored-by: rickwebiii <rick.weber.iii@gmail.com>
Co-authored-by: Bryan Li <51716784+bryanyli@users.noreply.github.com>
2023-07-30 18:14:22 -07:00
Matthew Liu
05861a80ac fmt 2023-07-30 17:58:07 -07:00
Matthew Liu
3985b9efb0 removed gating from debugger module; zkp runtime uses it 2023-07-30 17:55:01 -07:00
Matthew Liu
937f81d261 removed some gating 2023-07-30 17:39:11 -07:00
Matthew Liu
792751c4e7 fix gating issues 2023-07-30 17:17:50 -07:00
Matthew Liu
bf08dc5400 gate some imports 2023-07-30 17:02:43 -07:00
Matthew Liu
ca303a3585 fmt 2023-07-30 16:49:56 -07:00
Bryan Li
c37b978045 zkp stacktrace 2023-07-30 16:49:55 -07:00
Matthew Liu
591bfe8efc clippy actually likes unwrap or else 2023-07-30 16:49:46 -07:00
Matthew Liu
03d4ea9032 removed unwrap or else and turned into expect 2023-07-30 16:45:38 -07:00
Matthew Liu
a9d20b5040 remove internal tagging comments 2023-07-30 16:42:03 -07:00
Matthew Liu
7f6d3908d6 modified checks for overflow 2023-07-30 16:22:42 -07:00
Bryan Li
817e998aee stacktrace part 1 2023-07-30 16:18:46 -07:00
Matthew Liu
e2f51008e3 implemented overflow detection for fhe programs 2023-07-30 16:05:01 -07:00
Matthew Liu
c1ec13f787 can extract coefficients from innerplaintext 2023-07-29 22:54:30 -07:00
Bryan Li
6caef04edc added program source data to debug zkp programs 2023-07-29 17:01:55 -07:00
Matthew Liu
47e232ba36 overflow code now compiles but needs to actually be implemented 2023-07-28 17:03:58 -07:00
Matthew Liu
f18664aa54 add functions to modularize overflow calculation 2023-07-28 16:44:19 -07:00
Bryan Li
3d6d4e84eb added basic zkp frontend functionality 2023-07-28 15:46:11 -07:00
Matthew Liu
acb5120166 changed get_mult_depth to iterative bfs 2023-07-28 14:07:07 -07:00
Matthew Liu
e854036af2 fmt 2023-07-28 11:57:44 -07:00
Matthew Liu
ef90e87a2e janky a solution to conditional compilation keeping variables out of scope 2023-07-28 11:57:20 -07:00
Matthew Liu
df474a618c fmt 2023-07-28 11:21:42 -07:00
Matthew Liu
09a49f6a4d clippy 2023-07-28 11:21:30 -07:00
Matthew Liu
a2fa6df913 fmt 2023-07-28 11:10:12 -07:00
Matthew Liu
4bc4b43090 clippy 2023-07-28 11:10:05 -07:00
Matthew Liu
5f15507af6 clippy 2023-07-28 11:09:14 -07:00
Bryan Li
be18971068 merge conflicts 2023-07-28 11:07:22 -07:00
Bryan Li
51d5cede04 functional zkp debugger 2023-07-28 10:49:51 -07:00
Bryan Li
3ee8fd677a changed generic to Box of dyn 2023-07-27 19:33:55 -07:00
rickwebiii
30f293d752 SessionProvider 2023-07-27 14:28:18 -07:00
Bryan Li
70c1a08930 added session provider 2023-07-27 13:14:44 -07:00
Bryan Li
1651eec0a5 added name metadata to zkp programs 2023-07-27 11:55:58 -07:00
Bryan Li
5561b7b8b0 added stacktraces 2023-07-26 17:45:35 -07:00
Matthew Liu
5a1db2d812 set up params that cause noise budget exceeded in debugger example 2023-07-26 13:20:16 -07:00
Matthew Liu
1d9de5f03a zkp now returns bigint as a string 2023-07-26 12:56:43 -07:00
Matthew Liu
1ce1dea57f server now supports serializing zkp data 2023-07-26 12:54:26 -07:00