Skip to content

src/account/EscrowTransaction.hpp

More...

Namespaces

Name
sgns

Classes

Name
class sgns::EscrowTransaction

Detailed Description

Date: 2024-04-24 Henrique A. Klein ([email protected])

Source code

#ifndef _ESCROW_TRANSACTION_HPP_
#define _ESCROW_TRANSACTION_HPP_

#include <string>
#include "account/IGeniusTransactions.hpp"
#include "UTXOStructs.hpp"

namespace sgns
{
    class EscrowTransaction : public IGeniusTransactions
    {
    public:
        static EscrowTransaction New( UTXOTxParameters         params,
                                      uint64_t                 amount,
                                      std::string              dev_addr,
                                      uint64_t                 peers_cut,
                                      SGTransaction::DAGStruct dag );

        static std::shared_ptr<EscrowTransaction> DeSerializeByteVector( const std::vector<uint8_t> &data );

        ~EscrowTransaction() override = default;

        std::vector<uint8_t> SerializeByteVector() override;
        uint64_t             GetNumChunks() const;

        std::string GetTransactionSpecificPath() const override
        {
            return GetType();
        }

        UTXOTxParameters GetUTXOParameters() const
        {
            return utxo_params_;
        }

        std::string GetDevAddress() const
        {
            return dev_addr_;
        }

        uint64_t GetAmount() const
        {
            return amount_;
        }

        uint64_t GetPeersCut() const
        {
            return peers_cut_;
        }

    private:
        EscrowTransaction( UTXOTxParameters         params,
                           uint64_t                 amount,
                           std::string              dev_addr,
                           uint64_t                 peers_cut,
                           SGTransaction::DAGStruct dag );

        UTXOTxParameters utxo_params_;
        uint64_t         amount_;
        std::string      dev_addr_;
        uint64_t         peers_cut_;

        static bool Register()
        {
            RegisterDeserializer( "escrow-hold", &EscrowTransaction::DeSerializeByteVector );
            return true;
        }

        static inline bool registered = Register();
    };
}

#endif

Updated on 2026-03-04 at 13:10:44 -0800