Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Linking circuits with the databus (#7707)
The databus mechanism allows us to establish the transfer of data between circuits. Its more efficient for this purpose than the traditional public inputs mechanism because it replaces the passing of raw input/output data with the passing of commitments to that data. (If we pass the raw data as public input, we have to hash it in the recursive verifier. Say we pass 1000 field elements worth of raw data. Since 3 field elements can be hashed in 73 gates with poseidon, that would add 73*1000/3 = 25k gates to the recursive verifier. That's a 100% increase from its current size! A commitment on the other hand can be represented as 8 field elements, regardless of the size of the raw data). Roughly speaking, the idea of the databus is this: To establish that the output (return_data) of circuit A was the input (calldata) of circuit B, we take a commitment to output A and a commitment to input B then pass them to a third circuit, circuit C, which asserts that the two commitments are equal. This PR introduces the class `DataBusDepot` (a bit of a joke initially but it stuck..) which manages these databus commitment consistency checks. It is integrated only in the recently added `AztecIvc`, which will eventually replace ClientIvc.
- Loading branch information