Skip to content

sgns::RegistrationTransaction

Transaction for child-wallet registration under a main wallet. More...

#include <RegistrationTransaction.hpp>

Inherits from sgns::GeniusTransaction

Public Functions

Name
RegistrationTransaction New(std::string main_address, uint64_t sequence, SGTransaction::RegistrationMetadata metadata, SGTransaction::DAGStruct dag, bool detach_flag =false, uint64_t supersedes_sequence =0)
Factory — constructs a RegistrationTransaction and fills its hash.
std::shared_ptr< RegistrationTransaction > DeSerializeByteVector(const std::vector< uint8_t > & data)
Deserializes a RegistrationTransaction from bytes.
~RegistrationTransaction() override =default
Default destructor.
virtual std::vector< uint8_t > SerializeByteVector(const SGTransaction::DAGStruct & dag) const override
Serializes the transaction into a byte vector, including the DAG metadata.
virtual EmbeddedTransaction SerializeToEmbeddedTransaction(const SGTransaction::DAGStruct & dag) const override
Serializes the transaction into an EmbeddedTransaction proto with the appropriate oneof field set.
const std::string & GetMainAddress() const
Returns the registered main wallet public key.
uint64_t GetSequence() const
Returns the registration sequence number.
const SGTransaction::RegistrationMetadata & GetMetadata() const
Returns the registration metadata sub-message.
bool GetDetachFlag() const
Returns whether this registration is a Detach (child clears main_address).
uint64_t GetSupersedesSequence() const
Returns the sequence this lifecycle-change transaction supersedes.
virtual std::string GetTransactionSpecificPath() const override
Returns the transaction-specific path for storage, derived from GetType().
virtual std::unordered_set< std::string > GetTopics() const override
Returns the set of pubsub topics associated with this transaction.
virtual std::vector< uint8_t > SerializeByteVector(const SGTransaction::DAGStruct & dag) const
Serializes the transaction into a byte vector, including the DAG metadata.
std::vector< uint8_t > SerializeByteVector() const
Serializes the transaction using the internal DAG metadata.
virtual EmbeddedTransaction SerializeToEmbeddedTransaction(const SGTransaction::DAGStruct & dag) const
Serializes the transaction into an EmbeddedTransaction proto with the appropriate oneof field set.
EmbeddedTransaction SerializeToEmbeddedTransaction() const
Serializes using internal DAG metadata.

Additional inherited members

Public Types inherited from sgns::GeniusTransaction

Name
using std::function< std::shared_ptr< GeniusTransaction >(const std::vector< uint8_t > &)> TransactionDeserializeFn
Alias for the de-serializer method type to be implemented in derived classes.

Public Functions inherited from sgns::GeniusTransaction

Name
GeniusTransaction(std::string type, SGTransaction::DAGStruct dag)
Constructs a GeniusTransaction with the specified type and DAG metadata.
virtual ~GeniusTransaction() =default
Virtual destructor to avoid leakage when deleting derived classes through a base pointer.
std::string GetType() const
Returns the transaction type.
virtual bool HasUTXOParameters() const
Returns if transaction supports UTXOs.
virtual std::optional< UTXOTxParameters > GetUTXOParametersOpt() const
Returns the UTXOs.
virtual std::string GetChainId() const
Returns the source chain id for input validation routing.
std::string GetTransactionFullPath() const
Returns the full storage path for the transaction based on its hash.
std::string GetProofFullPath() const
Returns the full storage path for the proof based on the transaction hash.
std::string GetSrcAddress() const
Returns the source address for the transaction.
std::string GetHash() const
Returns the hash of the transaction.
std::string GetPreviousHash() const
Returns the hash of the previous transaction.
std::string GetUncleHash() const
Returns the hash of the uncle transaction.
uint64_t GetTimestamp() const
Returns the timestamp of the transaction.
uint64_t GetNonce() const
Returns the nonce of the transaction.
void FillHash()
Fills the data hash field in the DAG metadata based on the transaction content.
bool CheckHash() const
Checks the integrity of the transaction by verifying that the hash field matches the calculated hash.
std::vector< uint8_t > MakeSignature(GeniusAccount & account)
Creates a signature for the transaction using the provided GeniusAccount.
bool CheckSignature() const
Verifies the transaction signature using the source address and the serialized transaction content.
bool CheckSignatureAgainst(const std::string & address) const
Verifies the transaction signature against an arbitrary caller-supplied address, rather than the transaction's own declared source address. CheckSignature delegates to this with dag_st.source_addr().
bool CheckDAGSignatureLegacy() const
Legacy method to verify the transaction signature using the DAG metadata. This method may be used for backward compatibility with older transaction formats.
virtual std::string GetSlotID() const
Generates a slot ID used by consensus to identify competing transactions.
outcome::result< SGTransaction::DAGStruct > DeSerializeDAGStruct(const std::vector< uint8_t > & data)
Deserializes the DAG metadata from a byte vector.
outcome::result< SGTransaction::DAGStruct > DeSerializeDAGStruct(const std::string & data)
Deserializes the DAG metadata from a string.
SGTransaction::DAGStruct SetDAGWithType(SGTransaction::DAGStruct dag, const std::string & type)
Sets the transaction type in the DAG metadata and returns the modified DAGStruct.
std::string GetTransactionFullPath(const std::string & tx_hash)
Returns the full storage path for the transaction based on its hash.
void RegisterDeserializer(const std::string & transaction_type, TransactionDeserializeFn fn)
Registers a deserializer function for a specific transaction type.
std::unordered_map< std::string, TransactionDeserializeFn > & GetDeSerializers()
Returns the map of registered deserializer functions for transaction types.

Public Attributes inherited from sgns::GeniusTransaction

Name
constexpr std::string_view GENIUS_CHAIN_ID
The chain ID used for transactions that are not associated with a specific external chain.
SGTransaction::DAGStruct dag_st
The DAG metadata struct that is included in all transactions, containing common fields such as source address, hashes, timestamp, nonce, and signature.

Detailed Description

class sgns::RegistrationTransaction;

Transaction for child-wallet registration under a main wallet.

Child-signed-only per D-04/D-05 — the main wallet does NOT counter-sign. Carries DAG metadata (child's source_addr, nonce, signature), the main wallet's public key, a monotonic registration sequence, and optional game/publisher/dev metadata.

Public Functions Documentation

function New

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
)

Factory — constructs a RegistrationTransaction and fills its hash.

Parameters:

  • main_address Main wallet public address (128-hex, stored as bytes).
  • sequence Monotonic per-child registration sequence number.
  • metadata Optional game/publisher/dev metadata sub-message.
  • dag DAG struct describing the transaction graph.

Return: A constructed RegistrationTransaction with computed data_hash.

function DeSerializeByteVector

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

Deserializes a RegistrationTransaction from bytes.

Parameters:

  • data Serialized bytes.

Return: Shared pointer to the deserialized transaction, or nullptr on parse failure.

function ~RegistrationTransaction

~RegistrationTransaction() override =default

Default destructor.

function SerializeByteVector

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

Serializes the transaction into a byte vector, including the DAG metadata.

Parameters:

  • dag The DAG metadata to be included in the serialization.

Return: The serialized byte vector representing the transaction.

Note: This should be defined in the derived class, but the version without parameters is to used

Reimplements: sgns::GeniusTransaction::SerializeByteVector

function SerializeToEmbeddedTransaction

virtual EmbeddedTransaction SerializeToEmbeddedTransaction(
    const SGTransaction::DAGStruct & dag
) const override

Serializes the transaction into an EmbeddedTransaction proto with the appropriate oneof field set.

Parameters:

  • dag The DAG metadata to be included in the serialization.

Return: EmbeddedTransaction proto with the typed transaction field set.

Reimplements: sgns::GeniusTransaction::SerializeToEmbeddedTransaction

function GetMainAddress

inline const std::string & GetMainAddress() const

Returns the registered main wallet public key.

Return: The main_address_ string (128-hex).

function GetSequence

inline uint64_t GetSequence() const

Returns the registration sequence number.

Return: The sequence_ value.

function GetMetadata

inline const SGTransaction::RegistrationMetadata & GetMetadata() const

Returns the registration metadata sub-message.

Return: The metadata_ proto.

function GetDetachFlag

inline bool GetDetachFlag() const

Returns whether this registration is a Detach (child clears main_address).

Return: The detach_flag_ value.

function GetSupersedesSequence

inline uint64_t GetSupersedesSequence() const

Returns the sequence this lifecycle-change transaction supersedes.

Return: The supersedes_sequence_ value.

function GetTransactionSpecificPath

inline virtual std::string GetTransactionSpecificPath() const override

Returns the transaction-specific path for storage, derived from GetType().

Return: The transaction type string ("registration").

Reimplements: sgns::GeniusTransaction::GetTransactionSpecificPath

function GetTopics

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

Returns the set of pubsub topics associated with this transaction.

Return: A set containing the main_address_ for discovery.

Reimplements: sgns::GeniusTransaction::GetTopics

function SerializeByteVector

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

Serializes the transaction into a byte vector, including the DAG metadata.

Parameters:

  • dag The DAG metadata to be included in the serialization.

Return: The serialized byte vector representing the transaction.

Note: This should be defined in the derived class, but the version without parameters is to used

Reimplements: sgns::GeniusTransaction::SerializeByteVector

function SerializeByteVector

inline std::vector< uint8_t > SerializeByteVector() const

Serializes the transaction using the internal DAG metadata.

Return: The serialized byte vector representing the transaction.

function SerializeToEmbeddedTransaction

virtual EmbeddedTransaction SerializeToEmbeddedTransaction(
    const SGTransaction::DAGStruct & dag
) const

Serializes the transaction into an EmbeddedTransaction proto with the appropriate oneof field set.

Parameters:

  • dag The DAG metadata to be included in the serialization.

Return: EmbeddedTransaction proto with the typed transaction field set.

Reimplements: sgns::GeniusTransaction::SerializeToEmbeddedTransaction

function SerializeToEmbeddedTransaction

inline EmbeddedTransaction SerializeToEmbeddedTransaction() const

Serializes using internal DAG metadata.


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