Skip to content

Commit c4e40a9

Browse files
committed
inner_6 PoC - no surprises
1 parent ed18d04 commit c4e40a9

5 files changed

Lines changed: 84 additions & 0 deletions

File tree

noir-projects/noir-protocol-circuits/Nargo.template.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ members = [
1616
"crates/private-kernel-init-simulated",
1717
"crates/private-kernel-inner",
1818
"crates/private-kernel-inner-3",
19+
"crates/private-kernel-inner-6",
1920
"crates/private-kernel-inner-simulated",
2021
"crates/private-kernel-reset",
2122
"crates/private-kernel-reset-simulated",
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "private_kernel_inner_6"
3+
type = "bin"
4+
authors = [""]
5+
compiler_version = ">=0.18.0"
6+
7+
[dependencies]
8+
private_kernel_lib = { path = "../private-kernel-lib" }
9+
types = { path = "../types" }
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
use private_kernel_lib::{private_kernel_inner_6, PrivateKernelInner6CircuitPrivateInputs};
2+
use types::{
3+
abis::{
4+
private_circuit_public_inputs::PrivateCircuitPublicInputs,
5+
private_kernel::private_call_data::PrivateCallDataWithoutPublicInputs,
6+
private_kernel_data::PrivateKernelDataWithoutPublicInputs,
7+
},
8+
PrivateKernelCircuitPublicInputs,
9+
};
10+
11+
fn main(
12+
previous_kernel: PrivateKernelDataWithoutPublicInputs,
13+
previous_kernel_public_inputs: call_data(0) PrivateKernelCircuitPublicInputs,
14+
private_call_0: PrivateCallDataWithoutPublicInputs,
15+
private_call_1: PrivateCallDataWithoutPublicInputs,
16+
private_call_2: PrivateCallDataWithoutPublicInputs,
17+
private_call_3: PrivateCallDataWithoutPublicInputs,
18+
private_call_4: PrivateCallDataWithoutPublicInputs,
19+
private_call_5: PrivateCallDataWithoutPublicInputs,
20+
app_public_inputs_0: call_data(1) PrivateCircuitPublicInputs,
21+
app_public_inputs_1: call_data(2) PrivateCircuitPublicInputs,
22+
app_public_inputs_2: call_data(3) PrivateCircuitPublicInputs,
23+
app_public_inputs_3: call_data(4) PrivateCircuitPublicInputs,
24+
app_public_inputs_4: call_data(5) PrivateCircuitPublicInputs,
25+
app_public_inputs_5: call_data(6) PrivateCircuitPublicInputs,
26+
) -> return_data PrivateKernelCircuitPublicInputs {
27+
let private_inputs = PrivateKernelInner6CircuitPrivateInputs {
28+
previous_kernel: previous_kernel.to_private_kernel_data(previous_kernel_public_inputs),
29+
private_call_0: private_call_0.to_private_call_data(app_public_inputs_0),
30+
private_call_1: private_call_1.to_private_call_data(app_public_inputs_1),
31+
private_call_2: private_call_2.to_private_call_data(app_public_inputs_2),
32+
private_call_3: private_call_3.to_private_call_data(app_public_inputs_3),
33+
private_call_4: private_call_4.to_private_call_data(app_public_inputs_4),
34+
private_call_5: private_call_5.to_private_call_data(app_public_inputs_5),
35+
};
36+
private_kernel_inner_6::execute(private_inputs)
37+
}

noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/lib.nr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ pub mod private_kernel_init_3;
77
pub(crate) mod private_kernel_batch;
88
pub mod private_kernel_inner;
99
pub mod private_kernel_inner_3;
10+
pub mod private_kernel_inner_6;
1011
pub mod private_kernel_tail;
1112
pub mod private_kernel_tail_to_public;
1213
pub mod private_kernel_reset;
@@ -21,6 +22,7 @@ pub use private_kernel_init::PrivateKernelInitCircuitPrivateInputs;
2122
pub use private_kernel_init_3::PrivateKernelInit3CircuitPrivateInputs;
2223
pub use private_kernel_inner::PrivateKernelInnerCircuitPrivateInputs;
2324
pub use private_kernel_inner_3::PrivateKernelInner3CircuitPrivateInputs;
25+
pub use private_kernel_inner_6::PrivateKernelInner6CircuitPrivateInputs;
2426
pub use private_kernel_reset::PrivateKernelResetCircuitPrivateInputs;
2527
pub use private_kernel_tail::PrivateKernelTailCircuitPrivateInputs;
2628
pub use private_kernel_tail_to_public::PrivateKernelTailToPublicCircuitPrivateInputs;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
use crate::{
2+
private_kernel_batch::execute_next_private_call,
3+
private_kernel_inner::ALLOWED_PREVIOUS_CIRCUITS,
4+
};
5+
use types::abis::{
6+
kernel_circuit_public_inputs::PrivateKernelCircuitPublicInputs,
7+
private_kernel::private_call_data::PrivateCallData, private_kernel_data::PrivateKernelData,
8+
};
9+
10+
pub struct PrivateKernelInner6CircuitPrivateInputs {
11+
pub previous_kernel: PrivateKernelData,
12+
pub private_call_0: PrivateCallData,
13+
pub private_call_1: PrivateCallData,
14+
pub private_call_2: PrivateCallData,
15+
pub private_call_3: PrivateCallData,
16+
pub private_call_4: PrivateCallData,
17+
pub private_call_5: PrivateCallData,
18+
}
19+
20+
pub fn execute(
21+
inputs: PrivateKernelInner6CircuitPrivateInputs,
22+
) -> PrivateKernelCircuitPublicInputs {
23+
if !::std::runtime::is_unconstrained() {
24+
inputs.previous_kernel.verify(false);
25+
}
26+
inputs.previous_kernel.validate_vk_in_vk_tree(ALLOWED_PREVIOUS_CIRCUITS);
27+
28+
let output_0 =
29+
execute_next_private_call(inputs.previous_kernel.public_inputs, inputs.private_call_0);
30+
let output_1 = execute_next_private_call(output_0, inputs.private_call_1);
31+
let output_2 = execute_next_private_call(output_1, inputs.private_call_2);
32+
let output_3 = execute_next_private_call(output_2, inputs.private_call_3);
33+
let output_4 = execute_next_private_call(output_3, inputs.private_call_4);
34+
execute_next_private_call(output_4, inputs.private_call_5)
35+
}

0 commit comments

Comments
 (0)