21 using G1Native = Curve::GroupNative::affine_element;
22 using FFNative = Curve::ScalarFieldNative;
26 G1Native P0_val = G1Native::random_element();
27 G1Native P1_val = G1Native::random_element();
28 G1Native kernel_return_data_val = G1Native::random_element();
29 G1Native app_return_data_val = G1Native::random_element();
31 for (
auto& commitment : ecc_op_tables_val) {
32 commitment = G1Native::random_element();
34 FFNative output_pg_accum_hash_val = FFNative::random_element();
45 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
50 table_commitment = G1::from_witness(&
builder, table_val);
58 for (
const auto& idx :
builder.public_inputs()) {
59 public_inputs.push_back(
builder.get_variable(idx));
67 std::vector<FF> stdlib_public_inputs;
68 stdlib_public_inputs.reserve(public_inputs.size());
69 for (
const auto& val : public_inputs) {
70 stdlib_public_inputs.push_back(FF::from_witness(&
builder, val));
80 EXPECT_EQ(kernel_input.
app_return_data.get_value(), app_return_data_val);
81 for (
auto [reconstructed_commitment, commitment] :
zip_view(kernel_input.
ecc_op_tables, ecc_op_tables_val)) {
82 EXPECT_EQ(reconstructed_commitment.get_value(), commitment);
95 using Curve = IO::Curve;
96 using FF = IO::Curve::ScalarField;
98 using PairingInputs = IO::PairingInputs;
100 using G1Native = Curve::GroupNative::affine_element;
101 using FFNative = IONative::FF;
103 G1Native P0_val = G1Native::random_element();
104 G1Native P1_val = G1Native::random_element();
115 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
116 io_output.pairing_inputs = pairing_inputs;
119 io_output.set_public();
122 for (
const auto& idx :
builder.public_inputs()) {
123 public_inputs.push_back(
builder.get_variable(idx));
132 std::vector<FF> stdlib_public_inputs;
133 stdlib_public_inputs.reserve(public_inputs.size());
134 for (
const auto& val : public_inputs) {
135 stdlib_public_inputs.push_back(FF::from_witness(&
builder, val));
139 io_input.reconstruct_from_public(stdlib_public_inputs);
142 EXPECT_EQ(io_input.pairing_inputs.P0.get_value(), P0_val);
143 EXPECT_EQ(io_input.pairing_inputs.P1.get_value(), P1_val);
148 IONative io_input_native;
149 io_input_native.reconstruct_from_public(public_inputs);
152 EXPECT_EQ(io_input_native.pairing_inputs.P0, P0_val);
153 EXPECT_EQ(io_input_native.pairing_inputs.P1, P1_val);
171 using G1Native = Curve::GroupNative::affine_element;
172 using ScalarFieldBn254Native = RollUpIONative::FF;
174 using G1GrumpkinNative = GrumpkinNative::AffineElement;
175 using ScalarFieldGrumpkinNative = GrumpkinNative::ScalarField;
177 G1Native P0_val = G1Native::random_element();
178 G1Native P1_val = G1Native::random_element();
179 ScalarFieldGrumpkinNative challenge_val = ScalarFieldGrumpkinNative::random_element();
180 ScalarFieldGrumpkinNative evaluation_val = ScalarFieldGrumpkinNative::random_element();
181 G1GrumpkinNative commitment_val = G1GrumpkinNative::random_element();
192 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
193 IpaClaim ipa_claim{ { ScalarFieldGrumpkin::from_witness(&
builder, challenge_val),
194 ScalarFieldGrumpkin::from_witness(&
builder, evaluation_val) },
195 G1Grumpkin::from_witness(&
builder, commitment_val) };
203 for (
const auto& idx :
builder.public_inputs()) {
204 public_inputs.push_back(
builder.get_variable(idx));
214 stdlib_public_inputs.reserve(public_inputs.size());
215 for (
const auto& val : public_inputs) {
216 stdlib_public_inputs.push_back(ScalarFieldBn254::from_witness(&
builder, val));
233 RollUpIONative rollup_io_input_native;
234 rollup_io_input_native.reconstruct_from_public(public_inputs);
237 EXPECT_EQ(rollup_io_input_native.pairing_inputs.P0, P0_val);
238 EXPECT_EQ(rollup_io_input_native.pairing_inputs.P1, P1_val);
239 EXPECT_EQ(rollup_io_input_native.ipa_claim.opening_pair.challenge, challenge_val);
240 EXPECT_EQ(rollup_io_input_native.ipa_claim.opening_pair.evaluation, evaluation_val);
241 EXPECT_EQ(rollup_io_input_native.ipa_claim.commitment, commitment_val);
255 using Curve = HidingIO::Curve;
256 using G1 = HidingIO::G1;
257 using FF = HidingIO::FF;
258 using PairingInputs = HidingIO::PairingInputs;
261 using G1Native = Curve::GroupNative::affine_element;
262 using FFNative = Curve::ScalarFieldNative;
266 G1Native P0_val = G1Native::random_element();
267 G1Native P1_val = G1Native::random_element();
269 for (
auto& commitment : ecc_op_tables_val) {
270 commitment = G1Native::random_element();
279 HidingIO hiding_output;
282 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
283 hiding_output.pairing_inputs = pairing_inputs;
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 for (
auto [reconstructed_commitment, commitment] :
zip_view(hiding_input.ecc_op_tables, ecc_op_tables_val)) {
317 EXPECT_EQ(reconstructed_commitment.get_value(), commitment);
323 HidingIONative hiding_input_native;
324 hiding_input_native.reconstruct_from_public(public_inputs);
327 EXPECT_EQ(hiding_input_native.pairing_inputs.P0, P0_val);
328 EXPECT_EQ(hiding_input_native.pairing_inputs.P1, P1_val);
329 for (
auto [reconstructed_commitment, commitment] :
330 zip_view(hiding_input_native.ecc_op_tables, ecc_op_tables_val)) {
331 EXPECT_EQ(reconstructed_commitment, commitment);