Skip to content

src/account/EscrowReleaseTransaction.hpp

Declaration of the EscrowReleaseTransaction class.

Namespaces

Name
sgns

Classes

Name
class sgns::EscrowReleaseTransaction
Represents a transaction used to release funds from an escrow.

Source code

#ifndef _ESCROW_RELEASE_TRANSACTION_HPP_
#define _ESCROW_RELEASE_TRANSACTION_HPP_

#include "account/IGeniusTransactions.hpp"
#include "account/UTXOStructs.hpp"

namespace sgns
{
    class EscrowReleaseTransaction final : public IGeniusTransactions
    {
    public:
        static EscrowReleaseTransaction New( UTXOTxParameters         params,
                                             uint64_t                 release_amount,
                                             std::string              release_address,
                                             std::string              escrow_source,
                                             std::string              original_escrow_hash,
                                             SGTransaction::DAGStruct dag );

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

        ~EscrowReleaseTransaction() override = default;

        std::vector<uint8_t> SerializeByteVector() override;

        UTXOTxParameters GetUTXOParameters() const;

        uint64_t GetReleaseAmount() const;

        std::string GetReleaseAddress() const;

        std::string GetEscrowSource() const;

        std::string GetOriginalEscrowHash() const;

        std::string GetTransactionSpecificPath() const override;

        std::unordered_set<std::string> GetTopics() const override;

    private:
        EscrowReleaseTransaction( UTXOTxParameters         params,
                                  uint64_t                 release_amount,
                                  std::string              release_address,
                                  std::string              escrow_source,
                                  std::string              original_escrow_hash,
                                  SGTransaction::DAGStruct dag );

        UTXOTxParameters utxo_params_;          
        uint64_t         release_amount_;       
        std::string      release_address_;      
        std::string      escrow_source_;        
        std::string      original_escrow_hash_; 

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

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

#endif // _ESCROW_RELEASE_TRANSACTION_HPP_

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