1 #ifndef __ZETH_CIRCUITS_SHA256_ETHEREUM_HPP__
2 #define __ZETH_CIRCUITS_SHA256_ETHEREUM_HPP__
11 #include <libsnark/gadgetlib1/gadget.hpp>
12 #include <libsnark/gadgetlib1/gadgets/basic_gadgets.hpp>
13 #include <libsnark/gadgetlib1/gadgets/hashes/hash_io.hpp>
14 #include <libsnark/gadgetlib1/gadgets/hashes/sha256/sha256_components.hpp>
15 #include <libsnark/gadgetlib1/gadgets/hashes/sha256/sha256_gadget.hpp>
16 #include <libsnark/gadgetlib1/protoboard.hpp>
17 #include <libsnark/reductions/r1cs_to_qap/r1cs_to_qap.hpp>
25 template<
typename FieldT>
29 std::shared_ptr<libsnark::block_variable<FieldT>> block1;
30 std::shared_ptr<libsnark::block_variable<FieldT>> block2;
31 std::shared_ptr<libsnark::sha256_compression_function_gadget<FieldT>>
33 std::shared_ptr<libsnark::digest_variable<FieldT>> intermediate_hash;
34 std::shared_ptr<libsnark::sha256_compression_function_gadget<FieldT>>
41 typedef libsnark::merkle_authentication_path
45 libsnark::protoboard<FieldT> &pb,
46 const libsnark::block_variable<FieldT> &input_block,
47 const libsnark::digest_variable<FieldT> &output,
48 const std::string &annotation_prefix =
"sha256_ethereum");
55 static libff::bit_vector
get_hash(
const libff::bit_vector &input);
64 #endif // __ZETH_CIRCUITS_SHA256_ETHEREUM_HPP__