Skip to content

sgns::IInputValidator

Strategy interface for validating transaction inputs and their witness data.

#include <InputValidators.hpp>

Inherited by sgns::GeniusInputValidator, sgns::MigrationInputValidator, sgns::PublicChainInputValidator

Public Types

Name
using const IInputValidator * ValidatorPtr

Public Functions

Name
virtual ~IInputValidator() =default
Destroys the input validator.
virtual bool ValidateUTXOParameters(const UTXOTxParameters & params, const std::string & address, const UTXOManager & utxo_manager) const =0
Validates ownership and structure of the supplied UTXO parameters.
virtual bool ValidateWitness(const ConsensusSubject & subject, const std::shared_ptr< GeniusTransaction > & tx, const UTXOTxParameters & params, const std::shared_ptr< Blockchain > & blockchain) const =0
Validates the chain-specific witness data associated with a transaction input set.
virtual bool RequiresConsensusUTXOData() const =0
Indicates whether this validator requires consensus-provided UTXO data.
void Register(const std::string & chain_id, ValidatorPtr validator)
ValidatorPtr Get(const std::string & chain_id)

Public Types Documentation

using ValidatorPtr

using sgns::IInputValidator::ValidatorPtr = const IInputValidator *;

Public Functions Documentation

function ~IInputValidator

virtual ~IInputValidator() =default

Destroys the input validator.

function ValidateUTXOParameters

virtual bool ValidateUTXOParameters(
    const UTXOTxParameters & params,
    const std::string & address,
    const UTXOManager & utxo_manager
) const =0

Validates ownership and structure of the supplied UTXO parameters.

Parameters:

  • params UTXO inputs and outputs carried by the transaction.
  • address Source address expected to own or authorize the inputs.
  • utxo_manager Local UTXO manager used for ownership and signature checks when required.

Return: True when the parameters are structurally valid for this source chain.

Reimplemented by: sgns::GeniusInputValidator::ValidateUTXOParameters, sgns::MigrationInputValidator::ValidateUTXOParameters, sgns::PublicChainInputValidator::ValidateUTXOParameters

function ValidateWitness

virtual bool ValidateWitness(
    const ConsensusSubject & subject,
    const std::shared_ptr< GeniusTransaction > & tx,
    const UTXOTxParameters & params,
    const std::shared_ptr< Blockchain > & blockchain
) const =0

Validates the chain-specific witness data associated with a transaction input set.

Parameters:

  • subject Consensus subject that carries nonce, witness, and UTXO commitment data.
  • tx Transaction whose inputs and outputs are being validated.
  • params UTXO inputs and outputs carried by tx.
  • blockchain Blockchain service used to resolve producer certificates when required.

Return: True when the witness proves that params are valid for tx.

Reimplemented by: sgns::GeniusInputValidator::ValidateWitness, sgns::MigrationInputValidator::ValidateWitness, sgns::PublicChainInputValidator::ValidateWitness

function RequiresConsensusUTXOData

virtual bool RequiresConsensusUTXOData() const =0

Indicates whether this validator requires consensus-provided UTXO data.

Return: True when the validator needs UTXO witness and commitment data from consensus.

Reimplemented by: sgns::GeniusInputValidator::RequiresConsensusUTXOData, sgns::MigrationInputValidator::RequiresConsensusUTXOData, sgns::PublicChainInputValidator::RequiresConsensusUTXOData

function Register

static inline void Register(
    const std::string & chain_id,
    ValidatorPtr validator
)

function Get

static inline ValidatorPtr Get(
    const std::string & chain_id
)

Updated on 2026-06-28 at 18:54:57 -0700