Zeth - Zerocash on Ethereum  0.8
Reference implementation of the Zeth protocol by Clearmatics
extended_proof.tcc
Go to the documentation of this file.
1 // Copyright (c) 2015-2022 Clearmatics Technologies Ltd
2 //
3 // SPDX-License-Identifier: LGPL-3.0+
4 
5 #ifndef __ZETH_TYPES_EXTENDED_PROOF_TCC__
6 #define __ZETH_TYPES_EXTENDED_PROOF_TCC__
7 
8 #include "libzeth/core/extended_proof.hpp"
9 #include "libzeth/core/field_element_utils.hpp"
10 #include "libzeth/serialization/r1cs_serialization.hpp"
11 
12 namespace libzeth
13 {
14 
15 template<typename ppT, typename snarkT>
16 extended_proof<ppT, snarkT>::extended_proof(
17  typename snarkT::proof &&in_proof,
18  libsnark::r1cs_primary_input<libff::Fr<ppT>> &&in_primary_inputs)
19  : proof(in_proof), primary_inputs(in_primary_inputs)
20 {
21 }
22 
23 template<typename ppT, typename snarkT>
24 const typename snarkT::proof &extended_proof<ppT, snarkT>::get_proof() const
25 {
26  return proof;
27 }
28 
29 template<typename ppT, typename snarkT>
30 const libsnark::r1cs_primary_input<libff::Fr<ppT>>
31  &extended_proof<ppT, snarkT>::get_primary_inputs() const
32 {
33  return primary_inputs;
34 }
35 
36 template<typename ppT, typename snarkT>
37 std::ostream &extended_proof<ppT, snarkT>::write_json(std::ostream &out_s) const
38 {
39  out_s << "{\n"
40  " \"proof\": ";
41  snarkT::proof_write_json(proof, out_s);
42  out_s << ",\n"
43  " \"inputs\": ";
44  primary_inputs_write_json(primary_inputs, out_s);
45  out_s << "\n"
46  "}\n";
47  return out_s;
48 }
49 
50 } // namespace libzeth
51 
52 #endif // __ZETH_TYPES_EXTENDED_PROOF_TCC__