src/proof/TransferProof.hpp¶
Derived class for generating and verifying transfer proofs. More...
Namespaces¶
| Name |
|---|
| sgns |
Classes¶
| Name | |
|---|---|
| class | sgns::TransferProof A class for generating and verifying transfer proofs. |
Detailed Description¶
Derived class for generating and verifying transfer proofs.
Date: 2024-09-29 Henrique A. Klein ([email protected])
Source code¶
#ifndef _TRANSFER_PROOF_HPP_
#define _TRANSFER_PROOF_HPP_
#include <string>
#include <cstdint>
#include <array>
#include <utility>
#include <optional>
#include <boost/json.hpp>
#include <string_view>
#include "IBasicProof.hpp"
#include "circuits/TransactionVerifierCircuit.hpp"
namespace sgns
{
class TransferProof : public IBasicProof
{
public:
explicit TransferProof( uint64_t balance, uint64_t amount, std::optional<std::string> bytecode = std::nullopt );
~TransferProof() = default;
std::string GetProofType() const override
{
return std::string( TRANSFER_TYPE_NAME );
}
template <typename T>
static boost::json::object GenerateCurveParameter( T value );
protected:
static constexpr uint64_t generator_X_point = 1;
static constexpr uint64_t generator_Y_point = 2;
static constexpr uint64_t base_seed = 12345;
static constexpr uint64_t provided_totp = 67890;
static constexpr std::array<uint64_t, 4> ranges = { 1000, 2000, 3000, 4000 };
outcome::result<std::vector<uint8_t>> SerializeFullProof(
const SGProof::BaseProofData &base_proof_data ) override;
std::pair<boost::json::array, boost::json::array> GenerateJsonParameters() override;
private:
uint64_t balance_;
uint64_t amount_;
static outcome::result<std::pair<boost::json::array, boost::json::array>> DeSerializePublicParams(
const std::vector<uint8_t> &full_proof_data );
static constexpr std::string_view TRANSFER_TYPE_NAME = "Transfer";
static inline bool Register()
{
RegisterDeserializer( std::string( TRANSFER_TYPE_NAME ), &TransferProof::DeSerializePublicParams );
#ifdef RELEASE_BYTECODE_CIRCUITS
RegisterBytecode( std::string( TRANSFER_TYPE_NAME ), std::string( TransactionCircuit ) );
#else
RegisterBytecode( std::string( TRANSFER_TYPE_NAME ), std::string( TransactionCircuit ) );
#endif
return true;
}
static inline bool registered = Register();
};
}
#endif
Updated on 2026-03-04 at 13:10:45 -0800