Monero
Loading...
Searching...
No Matches
blockchain_blackball.cpp File Reference
#include <boost/range/adaptor/transformed.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/filesystem.hpp>
#include "common/unordered_containers_boost_serialization.h"
#include "common/command_line.h"
#include "common/varint.h"
#include "serialization/crypto.h"
#include "cryptonote_basic/cryptonote_boost_serialization.h"
#include "cryptonote_core/tx_pool.h"
#include "cryptonote_core/cryptonote_core.h"
#include "cryptonote_core/blockchain.h"
#include "blockchain_db/blockchain_db.h"
#include "wallet/ringdb.h"
#include "version.h"
Include dependency graph for blockchain_blackball.cpp:

Classes

struct  output_data

Macros

#define MONERO_DEFAULT_LOG_CATEGORY   "bcutil"

Functions

static bool parse_db_sync_mode (std::string db_sync_mode)
static std::string get_default_db_path ()
static std::string get_cache_filename (boost::filesystem::path filename)
static int compare_hash32 (const MDB_val *a, const MDB_val *b)
int compare_uint64 (const MDB_val *a, const MDB_val *b)
static int compare_double64 (const MDB_val *a, const MDB_val *b)
static int resize_env (const char *db_path)
static void init (std::string cache_filename)
static void close ()
static std::string compress_ring (const std::vector< uint64_t > &ring, std::string s="")
static std::string compress_ring (uint64_t amount, const std::vector< uint64_t > &ring)
static std::vector< uint64_tdecompress_ring (const std::string &s)
static bool for_all_transactions (const std::string &filename, uint64_t &start_idx, uint64_t &n_txes, const std::function< bool(const cryptonote::transaction_prefix &)> &f)
static bool for_all_transactions (const std::string &filename, const uint64_t &start_idx, uint64_t &n_txes, const std::function< bool(bool, uint64_t, const cryptonote::transaction_prefix &)> &f)
static uint64_t find_first_diverging_transaction (const std::string &first_filename, const std::string &second_filename)
static std::vector< uint64_tcanonicalize (const std::vector< uint64_t > &v)
static uint64_t get_num_spent_outputs ()
static bool add_spent_output (MDB_cursor *cur, const output_data &od)
static bool is_output_spent (MDB_cursor *cur, const output_data &od)
static std::vector< output_dataget_spent_outputs (MDB_txn *txn)
static void get_per_amount_outputs (MDB_txn *txn, uint64_t amount, uint64_t &total, uint64_t &spent)
static void inc_per_amount_outputs (MDB_txn *txn, uint64_t amount, uint64_t total, uint64_t spent)
static uint64_t get_processed_txidx (const std::string &name)
static void set_processed_txidx (MDB_txn *txn, const std::string &name, uint64_t height)
static bool get_relative_ring (MDB_txn *txn, const crypto::key_image &ki, std::vector< uint64_t > &ring)
static void set_relative_ring (MDB_txn *txn, const crypto::key_image &ki, const std::vector< uint64_t > &ring)
static std::string keep_under_511 (const std::string &s)
static uint64_t get_ring_instances (MDB_txn *txn, uint64_t amount, const std::vector< uint64_t > &ring)
static uint64_t get_ring_subset_instances (MDB_txn *txn, uint64_t amount, const std::vector< uint64_t > &ring)
static uint64_t inc_ring_instances (MDB_txn *txn, uint64_t amount, const std::vector< uint64_t > &ring)
static std::vector< crypto::key_imageget_key_images (MDB_txn *txn, const output_data &od)
static void add_key_image (MDB_txn *txn, const output_data &od, const crypto::key_image &ki)
static bool get_stat (MDB_txn *txn, const char *key, uint64_t &data)
static void set_stat (MDB_txn *txn, const char *key, uint64_t data)
static void inc_stat (MDB_txn *txn, const char *key)
static void open_db (const std::string &filename, MDB_env **env, MDB_txn **txn, MDB_cursor **cur, MDB_dbi *dbi)
static void close_db (MDB_env *env, MDB_txn *txn, MDB_cursor *cur, MDB_dbi dbi)
static void get_num_outputs (MDB_txn *txn, MDB_cursor *cur, MDB_dbi dbi, uint64_t &pre_rct, uint64_t &rct)
static crypto::hash get_genesis_block_hash (const std::string &filename)
static std::vector< std::pair< uint64_t, uint64_t > > load_outputs (const std::string &filename)
static bool export_spent_outputs (MDB_cursor *cur, const std::string &filename)
int main (int argc, char *argv[])

Variables

static uint64_t records_per_sync = 200
static uint64_t db_flags = 0
static MDB_dbi dbi_relative_rings
static MDB_dbi dbi_outputs
static MDB_dbi dbi_processed_txidx
static MDB_dbi dbi_spent
static MDB_dbi dbi_per_amount
static MDB_dbi dbi_ring_instances
static MDB_dbi dbi_stats
static MDB_envenv = NULL

Macro Definition Documentation

◆ MONERO_DEFAULT_LOG_CATEGORY

#define MONERO_DEFAULT_LOG_CATEGORY   "bcutil"

Function Documentation

◆ add_key_image()

void add_key_image ( MDB_txn * txn,
const output_data & od,
const crypto::key_image & ki )
static

◆ add_spent_output()

bool add_spent_output ( MDB_cursor * cur,
const output_data & od )
static

◆ canonicalize()

std::vector< uint64_t > canonicalize ( const std::vector< uint64_t > & v)
static

◆ close()

void close ( )
static

◆ close_db()

void close_db ( MDB_env * env,
MDB_txn * txn,
MDB_cursor * cur,
MDB_dbi dbi )
static

◆ compare_double64()

int compare_double64 ( const MDB_val * a,
const MDB_val * b )
static

◆ compare_hash32()

int compare_hash32 ( const MDB_val * a,
const MDB_val * b )
static

◆ compare_uint64()

int compare_uint64 ( const MDB_val * a,
const MDB_val * b )

◆ compress_ring() [1/2]

std::string compress_ring ( const std::vector< uint64_t > & ring,
std::string s = "" )
static

◆ compress_ring() [2/2]

std::string compress_ring ( uint64_t amount,
const std::vector< uint64_t > & ring )
static

◆ decompress_ring()

std::vector< uint64_t > decompress_ring ( const std::string & s)
static

◆ export_spent_outputs()

bool export_spent_outputs ( MDB_cursor * cur,
const std::string & filename )
static

◆ find_first_diverging_transaction()

uint64_t find_first_diverging_transaction ( const std::string & first_filename,
const std::string & second_filename )
static

◆ for_all_transactions() [1/2]

bool for_all_transactions ( const std::string & filename,
const uint64_t & start_idx,
uint64_t & n_txes,
const std::function< bool(bool, uint64_t, const cryptonote::transaction_prefix &)> & f )
static

◆ for_all_transactions() [2/2]

bool for_all_transactions ( const std::string & filename,
uint64_t & start_idx,
uint64_t & n_txes,
const std::function< bool(const cryptonote::transaction_prefix &)> & f )
static

◆ get_cache_filename()

std::string get_cache_filename ( boost::filesystem::path filename)
static

◆ get_default_db_path()

std::string get_default_db_path ( )
static

◆ get_genesis_block_hash()

crypto::hash get_genesis_block_hash ( const std::string & filename)
static

◆ get_key_images()

std::vector< crypto::key_image > get_key_images ( MDB_txn * txn,
const output_data & od )
static

◆ get_num_outputs()

void get_num_outputs ( MDB_txn * txn,
MDB_cursor * cur,
MDB_dbi dbi,
uint64_t & pre_rct,
uint64_t & rct )
static

◆ get_num_spent_outputs()

uint64_t get_num_spent_outputs ( )
static

◆ get_per_amount_outputs()

void get_per_amount_outputs ( MDB_txn * txn,
uint64_t amount,
uint64_t & total,
uint64_t & spent )
static

◆ get_processed_txidx()

uint64_t get_processed_txidx ( const std::string & name)
static

◆ get_relative_ring()

bool get_relative_ring ( MDB_txn * txn,
const crypto::key_image & ki,
std::vector< uint64_t > & ring )
static

◆ get_ring_instances()

uint64_t get_ring_instances ( MDB_txn * txn,
uint64_t amount,
const std::vector< uint64_t > & ring )
static

◆ get_ring_subset_instances()

uint64_t get_ring_subset_instances ( MDB_txn * txn,
uint64_t amount,
const std::vector< uint64_t > & ring )
static

◆ get_spent_outputs()

std::vector< output_data > get_spent_outputs ( MDB_txn * txn)
static

◆ get_stat()

bool get_stat ( MDB_txn * txn,
const char * key,
uint64_t & data )
static

◆ inc_per_amount_outputs()

void inc_per_amount_outputs ( MDB_txn * txn,
uint64_t amount,
uint64_t total,
uint64_t spent )
static

◆ inc_ring_instances()

uint64_t inc_ring_instances ( MDB_txn * txn,
uint64_t amount,
const std::vector< uint64_t > & ring )
static

◆ inc_stat()

void inc_stat ( MDB_txn * txn,
const char * key )
static

◆ init()

void init ( std::string cache_filename)
static

◆ is_output_spent()

bool is_output_spent ( MDB_cursor * cur,
const output_data & od )
static

◆ keep_under_511()

std::string keep_under_511 ( const std::string & s)
static

◆ load_outputs()

std::vector< std::pair< uint64_t, uint64_t > > load_outputs ( const std::string & filename)
static

◆ main()

int main ( int argc,
char * argv[] )

◆ open_db()

void open_db ( const std::string & filename,
MDB_env ** env,
MDB_txn ** txn,
MDB_cursor ** cur,
MDB_dbi * dbi )
static

◆ parse_db_sync_mode()

bool parse_db_sync_mode ( std::string db_sync_mode)
static

◆ resize_env()

int resize_env ( const char * db_path)
static

◆ set_processed_txidx()

void set_processed_txidx ( MDB_txn * txn,
const std::string & name,
uint64_t height )
static

◆ set_relative_ring()

void set_relative_ring ( MDB_txn * txn,
const crypto::key_image & ki,
const std::vector< uint64_t > & ring )
static

◆ set_stat()

void set_stat ( MDB_txn * txn,
const char * key,
uint64_t data )
static

Variable Documentation

◆ db_flags

uint64_t db_flags = 0
static

◆ dbi_outputs

MDB_dbi dbi_outputs
static

◆ dbi_per_amount

MDB_dbi dbi_per_amount
static

◆ dbi_processed_txidx

MDB_dbi dbi_processed_txidx
static

◆ dbi_relative_rings

MDB_dbi dbi_relative_rings
static

◆ dbi_ring_instances

MDB_dbi dbi_ring_instances
static

◆ dbi_spent

MDB_dbi dbi_spent
static

◆ dbi_stats

MDB_dbi dbi_stats
static

◆ env

MDB_env* env = NULL
static

◆ records_per_sync

uint64_t records_per_sync = 200
static