account/InputValidators.hpp¶
Input validation strategy interface for transaction inputs. More...
Namespaces¶
| Name |
|---|
| sgns |
| sgns::input_validator_constants |
Classes¶
| Name | |
|---|---|
| class | sgns::IInputValidator Strategy interface for validating transaction inputs and their witness data. |
Attributes¶
| Name | |
|---|---|
| size_t | HASH256_BYTES |
| size_t | SERIALIZED_UINT32_BYTES |
| size_t | SERIALIZED_UINT64_BYTES |
| size_t | OUTPUT_INDEX_OFFSET |
| size_t | OWNER_ADDRESS_LENGTH_OFFSET |
| size_t | OWNER_ADDRESS_OFFSET |
| size_t | TOKEN_ID_BYTES_IN_PAYLOAD |
| size_t | AMOUNT_BYTES_IN_PAYLOAD |
| uint32_t | ESCROW_LOCK_OUTPUT_INDEX |
| std::string_view | TRANSFER_TX_TYPE |
Detailed Description¶
Input validation strategy interface for transaction inputs.
Date: 2026-03-23 Henrique A. Klein ([email protected])
Attributes Documentation¶
variable HASH256_BYTES¶
variable SERIALIZED_UINT32_BYTES¶
variable SERIALIZED_UINT64_BYTES¶
variable OUTPUT_INDEX_OFFSET¶
variable OWNER_ADDRESS_LENGTH_OFFSET¶
variable OWNER_ADDRESS_OFFSET¶
variable TOKEN_ID_BYTES_IN_PAYLOAD¶
variable AMOUNT_BYTES_IN_PAYLOAD¶
variable ESCROW_LOCK_OUTPUT_INDEX¶
variable TRANSFER_TX_TYPE¶
Source code¶
#pragma once
#include <cstddef>
#include <cstdint>
#include <memory>
#include <string>
#include <string_view>
#include <unordered_map>
#include <vector>
#include "account/UTXOStructs.hpp"
#include "base/blob.hpp"
namespace sgns
{
namespace input_validator_constants
{
constexpr size_t HASH256_BYTES = base::Hash256::size();
constexpr size_t SERIALIZED_UINT32_BYTES = sizeof( uint32_t );
constexpr size_t SERIALIZED_UINT64_BYTES = sizeof( uint64_t );
constexpr size_t OUTPUT_INDEX_OFFSET = HASH256_BYTES;
constexpr size_t OWNER_ADDRESS_LENGTH_OFFSET = OUTPUT_INDEX_OFFSET + SERIALIZED_UINT32_BYTES;
constexpr size_t OWNER_ADDRESS_OFFSET = OWNER_ADDRESS_LENGTH_OFFSET + SERIALIZED_UINT32_BYTES;
constexpr size_t TOKEN_ID_BYTES_IN_PAYLOAD = HASH256_BYTES;
constexpr size_t AMOUNT_BYTES_IN_PAYLOAD = SERIALIZED_UINT64_BYTES;
constexpr uint32_t ESCROW_LOCK_OUTPUT_INDEX = 0;
constexpr std::string_view TRANSFER_TX_TYPE = "transfer";
} // namespace input_validator_constants
class Blockchain;
class ConsensusSubject;
class GeniusTransaction;
class UTXOManager;
class IInputValidator
{
public:
virtual ~IInputValidator() = default;
virtual bool ValidateUTXOParameters( const UTXOTxParameters ¶ms,
const std::string &address,
const UTXOManager &utxo_manager ) const = 0;
virtual bool ValidateWitness( const ConsensusSubject &subject,
const std::shared_ptr<GeniusTransaction> &tx,
const UTXOTxParameters ¶ms,
const std::shared_ptr<Blockchain> &blockchain ) const = 0;
virtual bool RequiresConsensusUTXOData() const = 0;
};
} // namespace sgns
Updated on 2026-06-05 at 17:22:19 -0700