35 const std::vector<uint32_t>& public_inputs)
37 std::vector<uint32_t> proof;
38 proof.reserve(proof_in.size() + public_inputs.size());
41 proof.insert(proof.end(), public_inputs.begin(), public_inputs.end());
42 proof.insert(proof.end(), proof_in.begin(), proof_in.end());
55 const size_t num_public_inputs_to_extract)
58 auto pub_inputs_begin_itr = proof_witnesses.begin();
59 auto pub_inputs_end_itr = proof_witnesses.begin() +
static_cast<std::ptrdiff_t>(num_public_inputs_to_extract);
62 std::vector<FF> public_input_witnesses{ pub_inputs_begin_itr, pub_inputs_end_itr };
65 proof_witnesses.erase(pub_inputs_begin_itr, pub_inputs_end_itr);
67 return public_input_witnesses;
80 std::vector<uint32_t> public_input_witness_indices;
81 public_input_witness_indices.reserve(num_public_inputs_to_extract);
83 const size_t start = 0;
84 const size_t end = start + num_public_inputs_to_extract;
85 for (
size_t i = start; i < end; ++i) {
86 public_input_witness_indices.push_back(proof[i].get_witness_index());
89 return public_input_witness_indices;
113 std::vector<FF>& proof_witnesses,
114 const std::vector<FF>& key_witnesses,
115 const FF& key_hash_witness,
116 const size_t num_public_inputs_to_extract)
119 std::vector<FF> public_input_witnesses =
123 std::vector<uint32_t> key_indices = add_to_witness_and_track_indices<FF>(witness, key_witnesses);
124 uint32_t key_hash_index =
static_cast<uint32_t
>(witness.size());
125 witness.emplace_back(key_hash_witness);
126 std::vector<uint32_t> proof_indices = add_to_witness_and_track_indices<FF>(witness, proof_witnesses);
127 std::vector<uint32_t> public_input_indices =
128 add_to_witness_and_track_indices<FF>(witness, public_input_witnesses);
130 return { key_indices, key_hash_index, proof_indices, public_input_indices };
A simple wrapper around a vector of stdlib field elements representing a proof.
Base class templates for structures that contain data parameterized by the fundamental polynomials of...
std::vector< T, bb::ContainerSlabAllocator< T > > SlabVector
A vector that uses the slab allocator.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept