OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
validation.hpp File Reference
#include "transaction.hpp"
#include <cassert>
#include <memory>
#include <optional>
#include <secp256k1.h>
#include <secp256k1_schnorrsig.h>
#include <set>
#include <variant>
Include dependency graph for validation.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  cbdc::transaction::validation::input_error
 An error that may occur when sentinels validate inputs. More...
 
struct  cbdc::transaction::validation::witness_error
 An error that may occur when sentinels validate witness commitments. More...
 
struct  cbdc::transaction::validation::output_error
 An error that may occur when sentinels validate transaction outputs. More...
 

Namespaces

namespace  cbdc
 
namespace  cbdc::transaction
 
namespace  cbdc::transaction::validation
 

Typedefs

using cbdc::transaction::validation::tx_error
 An error that may occur when sentinels or clients statically validate a transaction.
 

Enumerations

enum class  cbdc::transaction::validation::witness_program_type : uint8_t { cbdc::transaction::validation::p2pk = 0x0 }
 Specifies how validators should interpret the witness program. More...
 
enum class  cbdc::transaction::validation::input_error_code : uint8_t { cbdc::transaction::validation::duplicate , cbdc::transaction::validation::data_error }
 Types of input validation errors. More...
 
enum class  cbdc::transaction::validation::output_error_code : uint8_t { cbdc::transaction::validation::zero_value }
 A transaction input validation error. More...
 
enum class  cbdc::transaction::validation::witness_error_code : uint8_t {
  cbdc::transaction::validation::missing_witness_program_type , cbdc::transaction::validation::unknown_witness_program_type , cbdc::transaction::validation::malformed , cbdc::transaction::validation::program_mismatch ,
  cbdc::transaction::validation::invalid_public_key , cbdc::transaction::validation::invalid_signature
}
 Types of errors that may occur when sentinels validate witness commitments. More...
 
enum class  cbdc::transaction::validation::tx_error_code : uint8_t {
  cbdc::transaction::validation::no_inputs , cbdc::transaction::validation::no_outputs , cbdc::transaction::validation::missing_witness , cbdc::transaction::validation::asymmetric_values ,
  cbdc::transaction::validation::value_overflow
}
 Types of errors that may occur when a sentinel statically validates a transaction. More...
 

Functions

auto cbdc::transaction::validation::check_tx (const transaction::full_tx &tx) -> std::optional< tx_error >
 Runs static validation checks on the given transaction.
 
auto cbdc::transaction::validation::check_tx_structure (const cbdc::transaction::full_tx &tx) -> std::optional< tx_error >
 
auto cbdc::transaction::validation::check_input_structure (const cbdc::transaction::input &inp) -> std::optional< std::pair< input_error_code, std::optional< output_error_code > > >
 
auto cbdc::transaction::validation::check_in_out_set (const cbdc::transaction::full_tx &tx) -> std::optional< tx_error >
 
auto cbdc::transaction::validation::check_witness (const cbdc::transaction::full_tx &tx, size_t idx) -> std::optional< witness_error_code >
 
auto cbdc::transaction::validation::check_p2pk_witness (const cbdc::transaction::full_tx &tx, size_t idx) -> std::optional< witness_error_code >
 
auto cbdc::transaction::validation::check_p2pk_witness_len (const cbdc::transaction::full_tx &tx, size_t idx) -> std::optional< witness_error_code >
 
auto cbdc::transaction::validation::check_p2pk_witness_commitment (const cbdc::transaction::full_tx &tx, size_t idx) -> std::optional< witness_error_code >
 
auto cbdc::transaction::validation::check_p2pk_witness_signature (const cbdc::transaction::full_tx &tx, size_t idx) -> std::optional< witness_error_code >
 
auto cbdc::transaction::validation::check_input_count (const cbdc::transaction::full_tx &tx) -> std::optional< tx_error >
 
auto cbdc::transaction::validation::check_output_count (const cbdc::transaction::full_tx &tx) -> std::optional< tx_error >
 
auto cbdc::transaction::validation::check_witness_count (const cbdc::transaction::full_tx &tx) -> std::optional< tx_error >
 
auto cbdc::transaction::validation::check_input_set (const cbdc::transaction::full_tx &tx) -> std::optional< tx_error >
 
auto cbdc::transaction::validation::check_output_value (const cbdc::transaction::output &out) -> std::optional< output_error_code >
 
auto cbdc::transaction::validation::get_p2pk_witness_commitment (const pubkey_t &payee) -> hash_t
 
auto cbdc::transaction::validation::to_string (const tx_error &err) -> std::string
 
auto cbdc::transaction::validation::check_attestations (const transaction::compact_tx &tx, const std::unordered_set< pubkey_t, hashing::null > &pubkeys, size_t threshold) -> bool
 Validates the sentinel attestations attached to a compact transaction.