Skip to content

src/account/TransferTransaction.hpp

Transaction of currency transfer. More...

Namespaces

Name
sgns

Classes

Name
class sgns::TransferTransaction
Transaction for transferring funds between UTXO inputs and outputs.

Detailed Description

Transaction of currency transfer.

Date: 2024-03-11 Henrique A. Klein ([email protected])

Source code

#ifndef _TRANSFER_TRANSACTION_HPP_
#define _TRANSFER_TRANSACTION_HPP_

#include "account/IGeniusTransactions.hpp"
#include "UTXOStructs.hpp"
#include "account/proto/SGTransaction.pb.h"

namespace sgns
{
    class TransferTransaction final : public IGeniusTransactions
    {
    public:
        static TransferTransaction New( std::vector<InputUTXOInfo>  inputs,
                                        std::vector<OutputDestInfo> destinations,
                                        SGTransaction::DAGStruct    dag );
        ~TransferTransaction() override = default;

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

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

        std::vector<OutputDestInfo> GetDstInfos() const;
        std::vector<InputUTXOInfo>  GetInputInfos() const;

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

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

    private:
        TransferTransaction( std::vector<OutputDestInfo> destinations,
                             std::vector<InputUTXOInfo>  inputs,
                             SGTransaction::DAGStruct    dag );

        std::vector<InputUTXOInfo>  input_tx_;
        std::vector<OutputDestInfo> outputs_;

        static bool Register()
        {
            RegisterDeserializer( "transfer", &TransferTransaction::DeSerializeByteVector );
            return true;
        }

        static inline bool registered = Register();
    };

}

#endif

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