21 using G1Native = Curve::GroupNative::affine_element;
22 using FFNative = Curve::ScalarFieldNative;
24 static constexpr size_t NUM_WIRES = Builder::NUM_WIRES;
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_hn_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;
264 static constexpr size_t NUM_WIRES = Builder::NUM_WIRES;
266 G1Native P0_val = G1Native::random_element();
267 G1Native P1_val = G1Native::random_element();
268 G1Native return_data_val = G1Native::random_element();
270 for (
auto& commitment : ecc_op_tables_val) {
271 commitment = G1Native::random_element();
280 HidingIO hiding_output;
283 PairingInputs pairing_inputs{ G1::from_witness(&
builder, P0_val), G1::from_witness(&
builder, P1_val) };
284 hiding_output.pairing_inputs = pairing_inputs;
285 hiding_output.kernel_return_data = G1::from_witness(&
builder, return_data_val);
287 for (
auto [table_commitment, table_val] :
zip_view(hiding_output.ecc_op_tables, ecc_op_tables_val)) {
288 table_commitment = G1::from_witness(&
builder, table_val);
292 hiding_output.set_public();
295 for (
const auto& idx :
builder.public_inputs()) {
296 public_inputs.push_back(
builder.get_variable(idx));
306 std::vector<FF> stdlib_public_inputs;
307 stdlib_public_inputs.reserve(public_inputs.size());
308 for (
const auto& val : public_inputs) {
309 stdlib_public_inputs.push_back(FF::from_witness(&
builder, val));
312 HidingIO hiding_input;
313 hiding_input.reconstruct_from_public(stdlib_public_inputs);
316 EXPECT_EQ(hiding_input.pairing_inputs.P0.get_value(), P0_val);
317 EXPECT_EQ(hiding_input.pairing_inputs.P1.get_value(), P1_val);
318 EXPECT_EQ(hiding_input.kernel_return_data.get_value(), return_data_val);
319 for (
auto [reconstructed_commitment, commitment] :
zip_view(hiding_input.ecc_op_tables, ecc_op_tables_val)) {
320 EXPECT_EQ(reconstructed_commitment.get_value(), commitment);
326 HidingIONative hiding_input_native;
327 hiding_input_native.reconstruct_from_public(public_inputs);
330 EXPECT_EQ(hiding_input_native.pairing_inputs.P0, P0_val);
331 EXPECT_EQ(hiding_input_native.pairing_inputs.P1, P1_val);
332 EXPECT_EQ(hiding_input_native.kernel_return_data, return_data_val);
333 for (
auto [reconstructed_commitment, commitment] :
334 zip_view(hiding_input_native.ecc_op_tables, ecc_op_tables_val)) {
335 EXPECT_EQ(reconstructed_commitment, commitment);