Skip to content

account/EscrowTransaction.hpp

Transaction type used to lock UTXO funds into an escrow address. More...

Namespaces

Name
sgns

Classes

Name
class sgns::EscrowTransaction
Transaction that reserves funds for a job escrow while tracking peer payout metadata.

Detailed Description

Transaction type used to lock UTXO funds into an escrow address.

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

Source code

#ifndef _ESCROW_TRANSACTION_HPP_
#define _ESCROW_TRANSACTION_HPP_

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

namespace sgns
{
    class EscrowTransaction : public GeniusTransaction
    {
    public:
        static EscrowTransaction New( UTXOTxParameters params, uint64_t amount, SGTransaction::DAGStruct dag );

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

        ~EscrowTransaction() override = default;

        using GeniusTransaction::SerializeByteVector;

        std::vector<uint8_t> SerializeByteVector( const SGTransaction::DAGStruct &dag ) const override;

        using GeniusTransaction::SerializeToEmbeddedTransaction;
        EmbeddedTransaction SerializeToEmbeddedTransaction( const SGTransaction::DAGStruct &dag ) const override;

        uint64_t GetNumChunks() const;

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

        UTXOTxParameters GetUTXOParameters() const
        {
            return utxo_params_;
        }

        bool HasUTXOParameters() const override
        {
            return true;
        }

        std::optional<UTXOTxParameters> GetUTXOParametersOpt() const override
        {
            return utxo_params_;
        }

        uint64_t GetAmount() const
        {
            return amount_;
        }

        void SetChainIdOverride( std::string chain_id )
        {
            chain_id_ = std::move( chain_id );
        }

        std::string GetChainId() const override
        {
            return chain_id_;
        }

    private:
        EscrowTransaction( UTXOTxParameters params, uint64_t amount, SGTransaction::DAGStruct dag );

        UTXOTxParameters utxo_params_; 
        uint64_t         amount_;      
        std::string chain_id_ = std::string( GeniusTransaction::GENIUS_CHAIN_ID );

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

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

#endif

Updated on 2026-10-06 at 13:34:21 +0000