-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: chip handler refactor #80
Conversation
…nd from_bytes easier
@@ -378,6 +380,7 @@ impl<Ext: ExtensionField> CircuitBuilder<Ext> { | |||
let a1b1 = self.create_cell(); | |||
self.add_internal(a1b1, in_0[1], in_1[1]); | |||
self.add(out[0], a0b0, Ext::BaseField::ONE); | |||
// TODO: is this a bug, should there be a random 7 here?? | |||
self.add(out[0], a1b1, Ext::BaseField::from(7)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's just following the definition of extension field multiplication. You can refer the code here: https://github.com/hero78119/Goldilocks/blob/master/src/primefield/fp2.rs#L14
// instantiate chips | ||
let global_state_chip = GlobalStateChip::new(ram_handler.clone()); | ||
let mut range_chip = RangeChip::new(rom_handler.clone()); | ||
let stack_chip = StackChip::new(ram_handler.clone()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why does range_chip
have mut
, but global_state_chip
and stack_chip
doesn't?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed in #94
Could you run |
* define chip handler structure * fix calldata chip * fix global state chip * fix memory chip * fix uint arithmetic unit * fix range chip * fix stack chip * fix uint cmp * fix singer-utils chips * fix add instruction * fix calldata chip * fix dup instruction * fix jum and jumpdest * fix jumpi instruction * fix mstore + pop instruction * fix push instruction * fix ret instruction * fix swap instruction * fix pro add instruction * fix pro calldata instruction * fix pro gt instruction * fix jumpi inst pro * fix pro mstore inst * fix pro ret instruction * fix bb_final * fix bb_ret * fix bb_start * fix gt inst * tests passing * fix constant generation: use max_cell_bit instead of C for computations * cleanup * resolve pr commenets
* confirm const across file impl * implement try from cell_id's to uint * add test for uint from cell ids * add documentation * document N_OPERAND_CELLS constant * wip * test cell repacking * add documentation * update packing test, ensure remaining values are 0s * add more uint instantiation methods * add test placeholders * sketch base plan for cmp * implement and test pad cells * modify from_range and from_bytes to use cell padding * extract logic for uint from arbitrary cell_width to make from_range and from_bytes easier * add compile time evaluated min function * introduce new constant cleans up uint_from* * update uint from cell id test to test greater than N_OPERANDS * add test for uint from different sized cells * implement add_unsafe * add functions sketch * wip * all func * building * test compiling * use range checker * refactor constants second pass * document cmp * wip * arithmetic second pass * delete old uint * refactor arithmetic * fix documentation * add test for add * test add constant unsafe * add test for add_small_unsafe * implement handle borrow * test sub_unsafe * rename add_small to add_cell * wip * change uint mod management * setup structure for namespacing constants * refactor counter vector implementation * introduce difference * define ram and rom structures * potential bug * rom phase 1 * rename * implement oam handler phase 1 * implement ram handler phase 1 * bytecode chip attempt 1 * implement call data records builder p1 * implement global state chip record generator p1 * implement memory chip record generator * implement stack chip record generator p1 * wip * util method for cell to mixed * start work on range chip * wip * document range check uint * clean up range check uint * remove range_chip_bit_width injection * move non-zero * add interior mutability to range chip * add interior mutability to bytecode * add interior mutability to call data chip * add interior mutability to memory chip * add interior mutability to stack * ram handler using single source oam handler * update signer utils * big wip * fix singer compile errors * fix compile errors * delete old chip handler * cleanup * merge oam handler with ram handler * fmt * remove random 7 comments * feat: remove interior mutability (#94) * define chip handler structure * fix calldata chip * fix global state chip * fix memory chip * fix uint arithmetic unit * fix range chip * fix stack chip * fix uint cmp * fix singer-utils chips * fix add instruction * fix calldata chip * fix dup instruction * fix jum and jumpdest * fix jumpi instruction * fix mstore + pop instruction * fix push instruction * fix ret instruction * fix swap instruction * fix pro add instruction * fix pro calldata instruction * fix pro gt instruction * fix jumpi inst pro * fix pro mstore inst * fix pro ret instruction * fix bb_final * fix bb_ret * fix bb_start * fix gt inst * tests passing * fix constant generation: use max_cell_bit instead of C for computations * cleanup * resolve pr commenets
* confirm const across file impl * implement try from cell_id's to uint * add test for uint from cell ids * add documentation * document N_OPERAND_CELLS constant * wip * test cell repacking * add documentation * update packing test, ensure remaining values are 0s * add more uint instantiation methods * add test placeholders * sketch base plan for cmp * implement and test pad cells * modify from_range and from_bytes to use cell padding * extract logic for uint from arbitrary cell_width to make from_range and from_bytes easier * add compile time evaluated min function * introduce new constant cleans up uint_from* * update uint from cell id test to test greater than N_OPERANDS * add test for uint from different sized cells * implement add_unsafe * add functions sketch * wip * all func * building * test compiling * use range checker * refactor constants second pass * document cmp * wip * arithmetic second pass * delete old uint * refactor arithmetic * fix documentation * add test for add * test add constant unsafe * add test for add_small_unsafe * implement handle borrow * test sub_unsafe * rename add_small to add_cell * wip * change uint mod management * setup structure for namespacing constants * refactor counter vector implementation * introduce difference * define ram and rom structures * potential bug * rom phase 1 * rename * implement oam handler phase 1 * implement ram handler phase 1 * bytecode chip attempt 1 * implement call data records builder p1 * implement global state chip record generator p1 * implement memory chip record generator * implement stack chip record generator p1 * wip * util method for cell to mixed * start work on range chip * wip * document range check uint * clean up range check uint * remove range_chip_bit_width injection * move non-zero * add interior mutability to range chip * add interior mutability to bytecode * add interior mutability to call data chip * add interior mutability to memory chip * add interior mutability to stack * ram handler using single source oam handler * update signer utils * big wip * fix singer compile errors * fix compile errors * delete old chip handler * cleanup * merge oam handler with ram handler * fmt * remove random 7 comments * feat: remove interior mutability (#94) * define chip handler structure * fix calldata chip * fix global state chip * fix memory chip * fix uint arithmetic unit * fix range chip * fix stack chip * fix uint cmp * fix singer-utils chips * fix add instruction * fix calldata chip * fix dup instruction * fix jum and jumpdest * fix jumpi instruction * fix mstore + pop instruction * fix push instruction * fix ret instruction * fix swap instruction * fix pro add instruction * fix pro calldata instruction * fix pro gt instruction * fix jumpi inst pro * fix pro mstore inst * fix pro ret instruction * fix bb_final * fix bb_ret * fix bb_start * fix gt inst * tests passing * fix constant generation: use max_cell_bit instead of C for computations * cleanup * resolve pr commenets
General Goals
Currently, the integration between chips and their underlying memory checking structure uses interior mutability, a subsequent PR will get rid of this interior mutability hack by having a new memory checking instance per chip then we combine the records generated for each at the end.
see corresponding issue: #87