21 using G1Native = Curve::GroupNative::affine_element;
22 using FFNative = Curve::ScalarFieldNative;
24 G1Native P0_val = G1Native::random_element();
25 G1Native P1_val = G1Native::random_element();
26 G1Native kernel_return_data_val = G1Native::random_element();
28 for (
auto&
value : app_return_data_val) {
29 value = G1Native::random_element();
31 FFNative ecc_op_hash_val = FFNative::random_element();
32 FFNative output_hn_accum_hash_val = FFNative::random_element();
43 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
46 for (
size_t idx = 0; idx < MAX_APPS_PER_KERNEL; ++idx) {
56 for (
const auto& idx :
builder.public_inputs()) {
57 public_inputs.push_back(
builder.get_variable(idx));
65 std::vector<FF> stdlib_public_inputs;
66 stdlib_public_inputs.reserve(public_inputs.size());
67 for (
const auto& val : public_inputs) {
68 stdlib_public_inputs.push_back(FF::from_witness(&
builder, val));
78 for (
size_t idx = 0; idx < MAX_APPS_PER_KERNEL; ++idx) {
79 EXPECT_EQ(kernel_input.
app_return_data[idx].get_value(), app_return_data_val[idx]);
93 using Curve = IO::Curve;
94 using FF = IO::Curve::ScalarField;
96 using PairingInputs = IO::PairingInputs;
98 using G1Native = Curve::GroupNative::affine_element;
99 using FFNative = IONative::FF;
101 G1Native P0_val = G1Native::random_element();
102 G1Native P1_val = G1Native::random_element();
113 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
114 io_output.pairing_inputs = pairing_inputs;
117 io_output.set_public();
120 for (
const auto& idx :
builder.public_inputs()) {
121 public_inputs.push_back(
builder.get_variable(idx));
130 std::vector<FF> stdlib_public_inputs;
131 stdlib_public_inputs.reserve(public_inputs.size());
132 for (
const auto& val : public_inputs) {
133 stdlib_public_inputs.push_back(FF::from_witness(&
builder, val));
137 io_input.reconstruct_from_public(stdlib_public_inputs);
140 EXPECT_EQ(io_input.pairing_inputs.P0().get_value(), P0_val);
141 EXPECT_EQ(io_input.pairing_inputs.P1().get_value(), P1_val);
146 IONative io_input_native;
147 io_input_native.reconstruct_from_public(public_inputs);
150 EXPECT_EQ(io_input_native.pairing_inputs.P0(), P0_val);
151 EXPECT_EQ(io_input_native.pairing_inputs.P1(), P1_val);
169 using G1Native = Curve::GroupNative::affine_element;
170 using ScalarFieldBn254Native = RollUpIONative::FF;
172 using G1GrumpkinNative = GrumpkinNative::AffineElement;
173 using ScalarFieldGrumpkinNative = GrumpkinNative::ScalarField;
175 G1Native P0_val = G1Native::random_element();
176 G1Native P1_val = G1Native::random_element();
177 ScalarFieldGrumpkinNative challenge_val = ScalarFieldGrumpkinNative::random_element();
178 ScalarFieldGrumpkinNative evaluation_val = ScalarFieldGrumpkinNative::random_element();
179 G1GrumpkinNative commitment_val = G1GrumpkinNative::random_element();
190 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
191 IpaClaim ipa_claim{ { ScalarFieldGrumpkin::from_witness(&
builder, challenge_val),
192 ScalarFieldGrumpkin::from_witness(&
builder, evaluation_val) },
193 G1Grumpkin::from_witness(&
builder, commitment_val) };
201 for (
const auto& idx :
builder.public_inputs()) {
202 public_inputs.push_back(
builder.get_variable(idx));
212 stdlib_public_inputs.reserve(public_inputs.size());
213 for (
const auto& val : public_inputs) {
214 stdlib_public_inputs.push_back(ScalarFieldBn254::from_witness(&
builder, val));
231 RollUpIONative rollup_io_input_native;
232 rollup_io_input_native.reconstruct_from_public(public_inputs);
235 EXPECT_EQ(rollup_io_input_native.pairing_inputs.P0(), P0_val);
236 EXPECT_EQ(rollup_io_input_native.pairing_inputs.P1(), P1_val);
237 EXPECT_EQ(rollup_io_input_native.ipa_claim.opening_pair.challenge, challenge_val);
238 EXPECT_EQ(rollup_io_input_native.ipa_claim.opening_pair.evaluation, evaluation_val);
239 EXPECT_EQ(rollup_io_input_native.ipa_claim.commitment, commitment_val);
253 using Curve = HidingIO::Curve;
254 using G1 = HidingIO::G1;
255 using FF = HidingIO::FF;
256 using PairingInputs = HidingIO::PairingInputs;
259 using G1Native = Curve::GroupNative::affine_element;
260 using FFNative = Curve::ScalarFieldNative;
262 static constexpr size_t NUM_WIRES = Builder::NUM_WIRES;
264 G1Native P0_val = G1Native::random_element();
265 G1Native P1_val = G1Native::random_element();
266 G1Native return_data_val = G1Native::random_element();
268 for (
auto& commitment : ecc_op_tables_val) {
269 commitment = G1Native::random_element();
278 HidingIO hiding_output;
281 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
282 hiding_output.pairing_inputs = pairing_inputs;
283 hiding_output.kernel_return_data = G1::from_witness(&
builder, return_data_val);
285 for (
auto [table_commitment, table_val] :
zip_view(hiding_output.ecc_op_tables, ecc_op_tables_val)) {
286 table_commitment = G1::from_witness(&
builder, table_val);
290 hiding_output.set_public();
293 for (
const auto& idx :
builder.public_inputs()) {
294 public_inputs.push_back(
builder.get_variable(idx));
304 std::vector<FF> stdlib_public_inputs;
305 stdlib_public_inputs.reserve(public_inputs.size());
306 for (
const auto& val : public_inputs) {
307 stdlib_public_inputs.push_back(FF::from_witness(&
builder, val));
310 HidingIO hiding_input;
311 hiding_input.reconstruct_from_public(stdlib_public_inputs);
314 EXPECT_EQ(hiding_input.pairing_inputs.P0().get_value(), P0_val);
315 EXPECT_EQ(hiding_input.pairing_inputs.P1().get_value(), P1_val);
316 EXPECT_EQ(hiding_input.kernel_return_data.get_value(), return_data_val);
317 for (
auto [reconstructed_commitment, commitment] :
zip_view(hiding_input.ecc_op_tables, ecc_op_tables_val)) {
318 EXPECT_EQ(reconstructed_commitment.get_value(), commitment);
324 HidingIONative hiding_input_native;
325 hiding_input_native.reconstruct_from_public(public_inputs);
328 EXPECT_EQ(hiding_input_native.pairing_inputs.P0(), P0_val);
329 EXPECT_EQ(hiding_input_native.pairing_inputs.P1(), P1_val);
330 EXPECT_EQ(hiding_input_native.kernel_return_data, return_data_val);
331 for (
auto [reconstructed_commitment, commitment] :
332 zip_view(hiding_input_native.ecc_op_tables, ecc_op_tables_val)) {
333 EXPECT_EQ(reconstructed_commitment, commitment);