Electroneum
Classes | Macros | Functions | Variables
blockchain_blackball.cpp File Reference
#include <boost/range/adaptor/transformed.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/archive/portable_binary_iarchive.hpp>
#include <boost/archive/portable_binary_oarchive.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 "blockchain_db/db_types.h"
#include "wallet/ringdb.h"
#include "version.h"
Include dependency graph for blockchain_blackball.cpp:

Classes

struct  output_data
 

Macros

#define ELECTRONEUM_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_t > decompress_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 uint64_t find_first_diverging_transaction (const std::string &first_filename, const std::string &second_filename)
 
static std::vector< uint64_t > canonicalize (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 const char zerokey [8] = {0}
 
static const MDB_val zerokval = { sizeof(zerokey), (void *)zerokey }
 
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_env * env = NULL
 

Macro Definition Documentation

◆ ELECTRONEUM_DEFAULT_LOG_CATEGORY

#define ELECTRONEUM_DEFAULT_LOG_CATEGORY   "bcutil"

Function Documentation

◆ add_key_image()

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

◆ add_spent_output()

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

◆ canonicalize()

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

◆ close()

static void close ( )
static

◆ close_db()

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

◆ compare_double64()

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

◆ compare_hash32()

static 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]

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

◆ compress_ring() [2/2]

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

◆ decompress_ring()

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

◆ export_spent_outputs()

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

◆ find_first_diverging_transaction()

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

◆ for_all_transactions()

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

◆ get_cache_filename()

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

◆ get_default_db_path()

static std::string get_default_db_path ( )
static

◆ get_genesis_block_hash()

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

◆ get_key_images()

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

◆ get_num_outputs()

static 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()

static uint64_t get_num_spent_outputs ( )
static

◆ get_per_amount_outputs()

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

◆ get_processed_txidx()

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

◆ get_relative_ring()

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

◆ get_ring_instances()

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

◆ get_ring_subset_instances()

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

◆ get_spent_outputs()

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

◆ get_stat()

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

◆ inc_per_amount_outputs()

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

◆ inc_ring_instances()

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

◆ inc_stat()

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

◆ init()

static void init ( std::string  cache_filename)
static

◆ is_output_spent()

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

◆ keep_under_511()

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

◆ load_outputs()

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

◆ main()

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

◆ open_db()

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

◆ parse_db_sync_mode()

static bool parse_db_sync_mode ( std::string  db_sync_mode)
static

◆ resize_env()

static int resize_env ( const char *  db_path)
static

◆ set_processed_txidx()

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

◆ set_relative_ring()

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

◆ set_stat()

static 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

◆ zerokey

const char zerokey[8] = {0}
static

◆ zerokval

const MDB_val zerokval = { sizeof(zerokey), (void *)zerokey }
static