-
Notifications
You must be signed in to change notification settings - Fork 613
Expand file tree
/
Copy pathpublic_tail_output_composer.nr
More file actions
47 lines (40 loc) · 1.87 KB
/
Copy pathpublic_tail_output_composer.nr
File metadata and controls
47 lines (40 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
mod combine_data;
mod generate_output_hints;
mod generate_overridable_public_data_writes;
mod generate_public_data_leaves;
use generate_output_hints::{LinkedIndexHint, OutputHints, SiloedNoteHashHint};
use crate::components::public_tail_output_composer::{combine_data::combine_data, generate_output_hints::generate_output_hints};
use dep::types::{
abis::{kernel_circuit_public_inputs::{KernelCircuitPublicInputs, PublicKernelCircuitPublicInputs}},
data::PublicDataLeafHint, partial_state_reference::PartialStateReference
};
struct PublicTailOutputComposer<let NUM_PUBLIC_DATA_LEAVES: u32> {
previous_kernel: PublicKernelCircuitPublicInputs,
start_state: PartialStateReference,
public_data_leaf_hints: [PublicDataLeafHint; NUM_PUBLIC_DATA_LEAVES],
}
impl<let NUM_PUBLIC_DATA_LEAVES: u32> PublicTailOutputComposer<NUM_PUBLIC_DATA_LEAVES> {
pub fn new(
previous_kernel: PublicKernelCircuitPublicInputs,
start_state: PartialStateReference,
public_data_leaf_hints: [PublicDataLeafHint; NUM_PUBLIC_DATA_LEAVES]
) -> Self {
PublicTailOutputComposer { previous_kernel, start_state, public_data_leaf_hints }
}
pub fn finish(self) -> (KernelCircuitPublicInputs, OutputHints<NUM_PUBLIC_DATA_LEAVES>) {
let output_hints = generate_output_hints(self.previous_kernel, self.public_data_leaf_hints);
let end = combine_data(
self.previous_kernel.end_non_revertible,
self.previous_kernel.end,
output_hints
);
(KernelCircuitPublicInputs {
rollup_validation_requests: self.previous_kernel.validation_requests.for_rollup,
end,
constants: self.previous_kernel.constants,
start_state: self.start_state,
revert_code: self.previous_kernel.revert_code,
fee_payer: self.previous_kernel.fee_payer
}, output_hints)
}
}