Skip to content

account/RegistrationTransaction.hpp

Transaction for child-wallet registration. More...

Namespaces

Name
sgns

Classes

Name
class sgns::RegistrationTransaction
Transaction for child-wallet registration under a main wallet.

Detailed Description

Transaction for child-wallet registration.

Date: 2026-07-15 (Phase 4)

Source code

#ifndef _REGISTRATION_TRANSACTION_HPP_
#define _REGISTRATION_TRANSACTION_HPP_

#include "account/GeniusTransaction.hpp"
#include "account/proto/SGTransaction.pb.h"

namespace sgns
{
    class RegistrationTransaction final : public GeniusTransaction
    {
    public:
        static RegistrationTransaction New( std::string                    main_address,
                                            uint64_t                      sequence,
                                            SGTransaction::RegistrationMetadata metadata,
                                            SGTransaction::DAGStruct      dag,
                                            bool                          detach_flag = false,
                                            uint64_t                      supersedes_sequence = 0 );

        ~RegistrationTransaction() 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;

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

        const std::string &GetMainAddress() const
        {
            return main_address_;
        }

        uint64_t GetSequence() const
        {
            return sequence_;
        }

        const SGTransaction::RegistrationMetadata &GetMetadata() const
        {
            return metadata_;
        }

        bool GetDetachFlag() const
        {
            return detach_flag_;
        }

        uint64_t GetSupersedesSequence() const
        {
            return supersedes_sequence_;
        }

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

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

    private:
        RegistrationTransaction( std::string                          main_address,
                                 uint64_t                             sequence,
                                 SGTransaction::RegistrationMetadata  metadata,
                                 SGTransaction::DAGStruct             dag,
                                 bool                                 detach_flag,
                                 uint64_t                             supersedes_sequence );

        std::string                         main_address_;  
        uint64_t                            sequence_;      
        SGTransaction::RegistrationMetadata metadata_;      
        bool                                detach_flag_;         
        uint64_t                            supersedes_sequence_; 

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

        static inline bool registered = Register();
    };

}

#endif

Updated on 2026-09-17 at 06:29:15 +0000