* 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
* removed some unnecessary comments from context
* debug program impl function
* contextenum for fhe and zkp ctx
* basic body for debug prgoram macro
* unwrap methods for context enum
* refactored some code to unwrap contextenum as an fhecontext
* compile errors on debug program
* removed is_multiplication from operatoin trait
* documentation for contextenum
* refactor code to not have current zkp or fhe ctx, instead generic enum
* changed uses of current fhe and zkp contexts to generic enum
* stashing changes
* add a clone call in fhe program macro so code compiles. this does not work
* fix mutability issue in fhe program macro
* fix mutability issue in zkp program macro
* modify methods for unwrapping contextenum
* fmt
* half of clippy fixes
* clippy
* fmt
* fixed mutability issue in create inputs test
* fmt
* 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>
* Export type alias for bulletproof backend fields
Also, keep bulletproof stuff namespaced to a `bulletproofs` module.
* Change sudoku to use pub over const
* Docs updates
* Rename / clean up sudoku
* Export `Proof` type
Basically required for being able to deserialize a proof
* Add zkp/serde workspace example
* Drive by cleaning
* Exports necessary for gadget impls
* Rename compute_inputs to compute_hidden_inputs
* Add prove/verify builders
* Export the builder types
This isnt strictly necessary but it would be weird for these to not show up in the cargo docs
* Clippy fix
* Add helper .compile() & .runtime() methods to fhe prog fns
I do wonder if these should be defined in a separate trait, just so that they don't live next to the more internal functions in documentation.
* Use new swag to simplify the front-facing api docs example
* Add some whitespace
* Switch to an extension trait
* Add an extension to ZkpProgramFn
* Take an owned ZkpBackend, rather than reference
Its typical to have the caller handle cloning, rather than taking a reference, requiring Clone impl, and forcing clone. Plus, as of now the only backend is a zero size null struct, so nothing to be gained by using a reference. It also just looks weird to always pass `&BulletproofsBackend::new()`
* Update sudoku to use new swag
* Target second attribute in multi attribute error
* Enforce ordering zkp inputs: constants,public,private
Honestly this feels a little unnatural to me. Might want to reverse: private, public, constant and then change all the prove/verify methods to that ordering
* Build whitelist example in CI
* Reorder constant->public->private to private->public->constant
* Fix trailing ws
* Fix example
* Make .runtime() more consistent with .compile()
* Get rid of some boilerplate impls
* Add custom zkp type example
* Move example run checks into example tests
Should speed up CI a bit
* Change whitelist -> allowlist
* commented out some code from main, bulid in debugger file to fix compile errors. also added optional field group_id for context
* added support for unique group ids
* added debug flag to sunscreen_fhe_program, need to check every instance of Context
* updated features and renamed feature to debugger
* removed atomic from context, renamed group_id to group_counter
* changed node id's to u64s instead of hashes
* modified expressiontreenode to be fheexpressiontreenode. will implement zkpexpressiontreenode later
* 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