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
enum class uint8_t WitnessVerdict { kValid, kNotSynced, kInvalid}
Verdict of a witness validation, distinguishing a missing local dependency from a structural failure.
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 WitnessVerdict ValidateWitness(const ConsensusSubject & subject, const GeniusTransaction & tx, const UTXOTxParameters & params, const 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.
bool Register(const std::string & chain_id, ValidatorPtr validator)
Register a validator for a chain if the chain is currently unowned.
void UnregisterIf(const std::string & chain_id, ValidatorPtr expected)
Remove a chain's registration only if it currently points to expected (compare-and-remove). This prevents a non-owner from removing the current registration and lets a validator self-clean on destruction.
ValidatorPtr Get(const std::string & chain_id)

Public Types Documentation

enum WitnessVerdict

Enumerator Value Description
kValid Witness proves the parameters valid.
kNotSynced A producer transaction or certificate has not CRDT-synced yet: retryable, NOT evidence of invalidity.
kInvalid Structural or cryptographic failure: permanently invalid.

Verdict of a witness validation, distinguishing a missing local dependency from a structural failure.

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 WitnessVerdict ValidateWitness(
    const ConsensusSubject & subject,
    const GeniusTransaction & tx,
    const UTXOTxParameters & params,
    const 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 bool Register(
    const std::string & chain_id,
    ValidatorPtr validator
)

Register a validator for a chain if the chain is currently unowned.

Return: True when the validator was inserted; false when the chain already has a validator or validator is null.

Registration is deliberately insert-only. The current owner must remove itself with UnregisterIf() before another validator can claim the chain.

function UnregisterIf

static inline void UnregisterIf(
    const std::string & chain_id,
    ValidatorPtr expected
)

Remove a chain's registration only if it currently points to expected (compare-and-remove). This prevents a non-owner from removing the current registration and lets a validator self-clean on destruction.

function Get

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

Updated on 2026-09-25 at 15:46:10 +0000