|
Monero
|
Holds cryptonote related classes and helpers. More...
Namespaces | |
| namespace | bootstrap |
| namespace | levin |
| namespace | bootstrap_node |
| namespace | rpc |
| namespace | listener |
| namespace | json |
Typedefs | |
| typedef std::pair< crypto::hash, uint64_t > | tx_out_index |
| typedef struct cryptonote::mdb_block_info_1 | mdb_block_info_1 |
| typedef struct cryptonote::mdb_block_info_2 | mdb_block_info_2 |
| typedef struct cryptonote::mdb_block_info_3 | mdb_block_info_3 |
| typedef struct cryptonote::mdb_block_info_4 | mdb_block_info_4 |
| typedef mdb_block_info_4 | mdb_block_info |
| typedef struct cryptonote::blk_height | blk_height |
| typedef struct cryptonote::pre_rct_outkey | pre_rct_outkey |
| typedef struct cryptonote::outkey | outkey |
| typedef struct cryptonote::outtx | outtx |
| typedef struct cryptonote::txindex | txindex |
| typedef struct cryptonote::mdb_txn_cursors | mdb_txn_cursors |
| typedef struct cryptonote::mdb_rflags | mdb_rflags |
| typedef struct cryptonote::mdb_threadinfo | mdb_threadinfo |
| typedef std::string | blobdata |
| typedef boost::string_ref | blobdata_ref |
| typedef std::vector< crypto::signature > | ring_signature |
| typedef boost::variant< txin_gen, txin_to_script, txin_to_scripthash, txin_to_key > | txin_v |
| typedef boost::variant< txout_to_script, txout_to_scripthash, txout_to_key, txout_to_tagged_key > | txout_target_v |
| typedef boost::multiprecision::uint128_t | difficulty_type |
| typedef std::function< bool(const cryptonote::block &, uint64_t, const crypto::hash *, unsigned int, crypto::hash &)> | get_block_hash_t |
| typedef boost::variant< tx_extra_padding, tx_extra_pub_key, tx_extra_nonce, tx_extra_merge_mining_tag, tx_extra_additional_pub_keys, tx_extra_mysterious_minergate > | tx_extra_field |
| typedef std::function< const epee::span< const unsigned char >(cryptonote::network_type network)> | GetCheckpointsCallback |
| Callback routine that returns checkpoints data for specific network type. | |
| typedef boost::function< void(std::vector< txpool_event >)> | TxpoolNotifyCallback |
| typedef boost::function< void(uint64_t, epee::span< const block >)> | BlockNotifyCallback |
| typedef boost::function< void(uint8_t, uint64_t, const crypto::hash &, const crypto::hash &, difficulty_type, uint64_t, uint64_t, const std::vector< tx_block_template_backlog_entry > &)> | MinerNotifyCallback |
| typedef std::pair< std::pair< double, std::time_t >, crypto::hash > | tx_by_fee_and_receive_time_entry |
| pair of <transaction fee, transaction hash> for organization | |
| typedef std::set< tx_by_fee_and_receive_time_entry, txCompare > | sorted_tx_container |
| container for sorting transactions by fee per unit size | |
| using | rct_ver_cache_t = ::tools::data_cache<::crypto::hash, RCT_VER_CACHE_SIZE> |
Enumerations | |
| enum class | relay_category : uint8_t { broadcasted = 0 , relayable , legacy , all } |
| enum | { prune_mode_prune , prune_mode_update , prune_mode_check } |
| enum | network_type : uint8_t { MAINNET = 0 , TESTNET , STAGENET , FAKECHAIN , UNDEFINED = 255 } |
| enum | blockchain_db_sync_mode { db_defaultsync , db_sync , db_async , db_nosync } |
| enum class | relay_method : std::uint8_t { none = 0 , local , forward , stem , fluff , block } |
| Methods tracking how a tx was received and relayed. More... | |
Functions | |
| bool | matches_category (relay_method method, relay_category category) noexcept |
| BlockchainDB * | new_db () |
| void | lmdb_resized (MDB_env *env, int isactive) |
| int | lmdb_txn_begin (MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **txn) |
| int | lmdb_txn_renew (MDB_txn *txn) |
| static bool | is_v1_tx (MDB_cursor *c_txs_pruned, MDB_val *tx_id) |
| static void | derive_key (const crypto::chacha_key &base_key, crypto::chacha_key &key) |
| static epee::wipeable_string | get_key_stream (const crypto::chacha_key &base_key, const crypto::chacha_iv &iv, size_t bytes) |
| std::string | get_protocol_state_string (cryptonote_connection_context::state s) |
| char | get_protocol_state_char (cryptonote_connection_context::state s) |
| size_t | get_min_block_weight (uint8_t version) |
| size_t | get_max_tx_size () |
| bool | get_block_reward (size_t median_weight, size_t current_block_weight, uint64_t already_generated_coins, uint64_t &reward, uint8_t version) |
| uint8_t | get_account_address_checksum (const public_address_outer_blob &bl) |
| uint8_t | get_account_integrated_address_checksum (const public_integrated_address_outer_blob &bl) |
| std::string | get_account_address_as_str (network_type nettype, bool subaddress, account_public_address const &adr) |
| std::string | get_account_integrated_address_as_str (network_type nettype, account_public_address const &adr, crypto::hash8 const &payment_id) |
| bool | is_coinbase (const transaction &tx) |
| bool | get_account_address_from_str (address_parse_info &info, network_type nettype, std::string const &str) |
| bool | get_account_address_from_str_or_url (address_parse_info &info, network_type nettype, const std::string &str_or_url, std::function< std::string(const std::string &, const std::vector< std::string > &, bool)> dns_confirm) |
| bool | operator== (const cryptonote::transaction &a, const cryptonote::transaction &b) |
| bool | operator== (const cryptonote::block &a, const cryptonote::block &b) |
| static unsigned char * | operator& (ec_point &point) |
| static const unsigned char * | operator& (const ec_point &point) |
| static void | add_public_key (crypto::public_key &AB, const crypto::public_key &A, const crypto::public_key &B) |
| uint64_t | get_transaction_weight_clawback (const transaction &tx, size_t n_padded_outputs) |
| void | get_transaction_prefix_hash (const transaction_prefix &tx, crypto::hash &h, hw::device &hwdev) |
| crypto::hash | get_transaction_prefix_hash (const transaction_prefix &tx, hw::device &hwdev) |
| bool | expand_transaction_1 (transaction &tx, bool base_only) |
| bool | parse_and_validate_tx_from_blob (const blobdata_ref &tx_blob, transaction &tx) |
| bool | parse_and_validate_tx_base_from_blob (const blobdata_ref &tx_blob, transaction &tx) |
| bool | parse_and_validate_tx_prefix_from_blob (const blobdata_ref &tx_blob, transaction_prefix &tx) |
| bool | parse_and_validate_tx_from_blob (const blobdata_ref &tx_blob, transaction &tx, crypto::hash &tx_hash) |
| bool | parse_and_validate_tx_from_blob (const blobdata_ref &tx_blob, transaction &tx, crypto::hash &tx_hash, crypto::hash &tx_prefix_hash) |
| bool | is_v1_tx (const blobdata_ref &tx_blob) |
| bool | is_v1_tx (const blobdata &tx_blob) |
| bool | generate_key_image_helper (const account_keys &ack, const std::unordered_map< crypto::public_key, subaddress_index > &subaddresses, const crypto::public_key &out_key, const crypto::public_key &tx_public_key, const std::vector< crypto::public_key > &additional_tx_public_keys, size_t real_output_index, keypair &in_ephemeral, crypto::key_image &ki, hw::device &hwdev) |
| bool | generate_key_image_helper_precomp (const account_keys &ack, const crypto::public_key &out_key, const crypto::key_derivation &recv_derivation, size_t real_output_index, const subaddress_index &received_index, keypair &in_ephemeral, crypto::key_image &ki, hw::device &hwdev) |
| uint64_t | power_integral (uint64_t a, uint64_t b) |
| bool | parse_amount (uint64_t &amount, const std::string &str_amount_) |
| uint64_t | get_transaction_weight (const transaction &tx, size_t blob_size) |
| uint64_t | get_pruned_transaction_weight (const transaction &tx) |
| uint64_t | get_transaction_weight (const transaction &tx) |
| uint64_t | get_transaction_blob_size (const transaction &tx) |
| bool | get_tx_fee (const transaction &tx, uint64_t &fee) |
| uint64_t | get_tx_fee (const transaction &tx) |
| bool | parse_tx_extra (const std::vector< uint8_t > &tx_extra, std::vector< tx_extra_field > &tx_extra_fields) |
| template<typename T> | |
| static bool | pick (binary_archive< true > &ar, std::vector< tx_extra_field > &fields, uint8_t tag) |
| bool | sort_tx_extra (const std::vector< uint8_t > &tx_extra, std::vector< uint8_t > &sorted_tx_extra, bool allow_partial) |
| crypto::public_key | get_tx_pub_key_from_extra (const std::vector< uint8_t > &tx_extra, size_t pk_index) |
| crypto::public_key | get_tx_pub_key_from_extra (const transaction_prefix &tx_prefix, size_t pk_index) |
| crypto::public_key | get_tx_pub_key_from_extra (const transaction &tx, size_t pk_index) |
| bool | add_tx_pub_key_to_extra (transaction &tx, const crypto::public_key &tx_pub_key) |
| bool | add_tx_pub_key_to_extra (transaction_prefix &tx, const crypto::public_key &tx_pub_key) |
| bool | add_tx_pub_key_to_extra (std::vector< uint8_t > &tx_extra, const crypto::public_key &tx_pub_key) |
| std::vector< crypto::public_key > | get_additional_tx_pub_keys_from_extra (const std::vector< uint8_t > &tx_extra) |
| std::vector< crypto::public_key > | get_additional_tx_pub_keys_from_extra (const transaction_prefix &tx) |
| bool | add_additional_tx_pub_keys_to_extra (std::vector< uint8_t > &tx_extra, const std::vector< crypto::public_key > &additional_pub_keys) |
| bool | add_extra_nonce_to_tx_extra (std::vector< uint8_t > &tx_extra, const blobdata &extra_nonce) |
| bool | add_mm_merkle_root_to_tx_extra (std::vector< uint8_t > &tx_extra, const crypto::hash &mm_merkle_root, size_t mm_merkle_tree_depth) |
| bool | remove_field_from_tx_extra (std::vector< uint8_t > &tx_extra, const std::type_info &type) |
| void | set_payment_id_to_tx_extra_nonce (blobdata &extra_nonce, const crypto::hash &payment_id) |
| void | set_encrypted_payment_id_to_tx_extra_nonce (blobdata &extra_nonce, const crypto::hash8 &payment_id) |
| bool | get_payment_id_from_tx_extra_nonce (const blobdata &extra_nonce, crypto::hash &payment_id) |
| bool | get_encrypted_payment_id_from_tx_extra_nonce (const blobdata &extra_nonce, crypto::hash8 &payment_id) |
| bool | get_inputs_money_amount (const transaction &tx, uint64_t &money) |
| uint64_t | get_block_height (const block &b) |
| bool | check_inputs_types_supported (const transaction &tx) |
| bool | check_outs_valid (const transaction &tx) |
| bool | check_money_overflow (const transaction &tx) |
| bool | check_inputs_overflow (const transaction &tx) |
| bool | check_outs_overflow (const transaction &tx) |
| uint64_t | get_outs_money_amount (const transaction &tx) |
| bool | get_output_public_key (const cryptonote::tx_out &out, crypto::public_key &output_public_key) |
| boost::optional< crypto::view_tag > | get_output_view_tag (const cryptonote::tx_out &out) |
| std::string | short_hash_str (const crypto::hash &h) |
| void | set_tx_out (const uint64_t amount, const crypto::public_key &output_public_key, const bool use_view_tags, const crypto::view_tag &view_tag, tx_out &out) |
| bool | check_output_types (const transaction &tx, const uint8_t hf_version) |
| bool | out_can_be_to_acc (const boost::optional< crypto::view_tag > &view_tag_opt, const crypto::key_derivation &derivation, const size_t output_index, hw::device *hwdev) |
| bool | is_out_to_acc (const account_keys &acc, const crypto::public_key &output_public_key, const crypto::public_key &tx_pub_key, const std::vector< crypto::public_key > &additional_tx_pub_keys, size_t output_index, const boost::optional< crypto::view_tag > &view_tag_opt) |
| boost::optional< subaddress_receive_info > | is_out_to_acc_precomp (const std::unordered_map< crypto::public_key, subaddress_index > &subaddresses, const crypto::public_key &out_key, const crypto::key_derivation &derivation, const std::vector< crypto::key_derivation > &additional_derivations, size_t output_index, hw::device &hwdev, const boost::optional< crypto::view_tag > &view_tag_opt) |
| bool | lookup_acc_outs (const account_keys &acc, const transaction &tx, std::vector< size_t > &outs, uint64_t &money_transfered) |
| bool | lookup_acc_outs (const account_keys &acc, const transaction &tx, const crypto::public_key &tx_pub_key, const std::vector< crypto::public_key > &additional_tx_pub_keys, std::vector< size_t > &outs, uint64_t &money_transfered) |
| void | get_blob_hash (const blobdata_ref &blob, crypto::hash &res) |
| void | get_blob_hash (const blobdata &blob, crypto::hash &res) |
| void | set_default_decimal_point (unsigned int decimal_point) |
| unsigned int | get_default_decimal_point () |
| std::string | get_unit (unsigned int decimal_point) |
| static void | insert_money_decimal_point (std::string &s, unsigned int decimal_point) |
| std::string | print_money (uint64_t amount, unsigned int decimal_point) |
| std::string | print_money (const boost::multiprecision::uint128_t &amount, unsigned int decimal_point) |
| uint64_t | round_money_up (uint64_t amount, unsigned significant_digits) |
| std::string | round_money_up (const std::string &s, unsigned significant_digits) |
| crypto::hash | get_blob_hash (const blobdata &blob) |
| crypto::hash | get_blob_hash (const blobdata_ref &blob) |
| crypto::hash | get_transaction_hash (const transaction &t) |
| bool | get_transaction_hash (const transaction &t, crypto::hash &res) |
| bool | calculate_transaction_prunable_hash (const transaction &t, const cryptonote::blobdata_ref *blob, crypto::hash &res) |
| crypto::hash | get_transaction_prunable_hash (const transaction &t, const cryptonote::blobdata_ref *blobdata) |
| bool | get_pruned_transaction_hash (const transaction &t, const crypto::hash &pruned_data_hash, crypto::hash &res) |
| bool | calculate_transaction_hash (const transaction &t, crypto::hash &res, size_t *blob_size) |
| bool | get_transaction_hash (const transaction &t, crypto::hash &res, size_t *blob_size) |
| bool | get_transaction_hash (const transaction &t, crypto::hash &res, size_t &blob_size) |
| blobdata | get_block_hashing_blob (const block &b) |
| bool | calculate_block_hash (const block &b, crypto::hash &res, const blobdata_ref *blob) |
| bool | get_block_hash (const block &b, crypto::hash &res) |
| crypto::hash | get_block_hash (const block &b) |
| std::vector< uint64_t > | relative_output_offsets_to_absolute (const std::vector< uint64_t > &off) |
| std::vector< uint64_t > | absolute_output_offsets_to_relative (const std::vector< uint64_t > &off) |
| bool | parse_and_validate_block_from_blob (const blobdata_ref &b_blob, block &b, crypto::hash *block_hash) |
| bool | parse_and_validate_block_from_blob (const blobdata_ref &b_blob, block &b) |
| bool | parse_and_validate_block_from_blob (const blobdata_ref &b_blob, block &b, crypto::hash &block_hash) |
| blobdata | block_to_blob (const block &b) |
| bool | block_to_blob (const block &b, blobdata &b_blob) |
| blobdata | tx_to_blob (const transaction &tx) |
| bool | tx_to_blob (const transaction &tx, blobdata &b_blob) |
| void | get_tx_tree_hash (const std::vector< crypto::hash > &tx_hashes, crypto::hash &h) |
| crypto::hash | get_tx_tree_hash (const std::vector< crypto::hash > &tx_hashes) |
| crypto::hash | get_tx_tree_hash (const block &b) |
| bool | is_valid_decomposed_amount (uint64_t amount) |
| void | get_hash_stats (uint64_t &tx_hashes_calculated, uint64_t &tx_hashes_cached, uint64_t &block_hashes_calculated, uint64_t &block_hashes_cached) |
| crypto::secret_key | encrypt_key (crypto::secret_key key, const epee::wipeable_string &passphrase) |
| crypto::secret_key | decrypt_key (crypto::secret_key key, const epee::wipeable_string &passphrase) |
| void | get_transaction_prefix_hash (const transaction_prefix &tx, crypto::hash &h) |
| crypto::hash | get_transaction_prefix_hash (const transaction_prefix &tx) |
| template<typename T> | |
| bool | find_tx_extra_field_by_type (const std::vector< tx_extra_field > &tx_extra_fields, T &field, size_t index=0) |
| bool | sort_tx_extra (const std::vector< uint8_t > &tx_extra, std::vector< uint8_t > &sorted_tx_extra, bool allow_partial=false) |
| void | set_tx_out (const uint64_t amount, const crypto::public_key &output_public_key, const bool use_view_tags, const crypto::view_tag &view_tag, tx_out &out) |
| template<class t_object> | |
| bool | t_serializable_object_from_blob (t_object &to, const blobdata &b_blob) |
| template<class t_object> | |
| bool | t_serializable_object_to_blob (const t_object &to, blobdata &b_blob) |
| template<class t_object> | |
| blobdata | t_serializable_object_to_blob (const t_object &to) |
| template<class t_object> | |
| bool | get_object_hash (const t_object &o, crypto::hash &res) |
| template<class t_object> | |
| size_t | get_object_blobsize (const t_object &o) |
| template<class t_object> | |
| bool | get_object_hash (const t_object &o, crypto::hash &res, size_t &blob_size) |
| template<typename T> | |
| std::string | obj_to_json_str (T &obj) |
| template<typename chunk_handler_t, typename dust_handler_t> | |
| void | decompose_amount_into_digits (uint64_t amount, uint64_t dust_threshold, const chunk_handler_t &chunk_handler, const dust_handler_t &dust_handler) |
| static void | mul (uint64_t a, uint64_t b, uint64_t &low, uint64_t &high) |
| static bool | cadd (uint64_t a, uint64_t b) |
| static bool | cadc (uint64_t a, uint64_t b, bool c) |
| bool | check_hash_64 (const crypto::hash &hash, uint64_t difficulty) |
| checks if a hash fits the given difficulty | |
| uint64_t | next_difficulty_64 (std::vector< std::uint64_t > timestamps, std::vector< uint64_t > cumulative_difficulties, size_t target_seconds) |
| const difficulty_type | max64bit (std::numeric_limits< std::uint64_t >::max()) |
| const boost::multiprecision::uint256_t | max128bit (std::numeric_limits< boost::multiprecision::uint128_t >::max()) |
| const boost::multiprecision::uint512_t | max256bit (std::numeric_limits< boost::multiprecision::uint256_t >::max()) |
| bool | check_hash_128 (const crypto::hash &hash, difficulty_type difficulty) |
| bool | check_hash (const crypto::hash &hash, difficulty_type difficulty) |
| difficulty_type | next_difficulty (std::vector< uint64_t > timestamps, std::vector< difficulty_type > cumulative_difficulties, size_t target_seconds) |
| std::string | hex (difficulty_type v) |
| difficulty_type | next_difficulty (std::vector< std::uint64_t > timestamps, std::vector< difficulty_type > cumulative_difficulties, size_t target_seconds) |
| uint32_t | get_aux_slot (const crypto::hash &id, uint32_t nonce, uint32_t n_aux_chains) |
| uint32_t | get_path_from_aux_slot (uint32_t slot, uint32_t n_aux_chains) |
| uint32_t | encode_mm_depth (uint32_t n_aux_chains, uint32_t nonce) |
| bool | decode_mm_depth (uint32_t depth, uint32_t &n_aux_chains, uint32_t &nonce) |
| std::ostream & | operator<< (std::ostream &out, const cryptonote::subaddress_index &subaddr_index) |
| const config_t & | get_config (network_type nettype) |
| block_complete_entry | get_block_complete_entry (block &b, tx_memory_pool &pool) |
| double | factorial (unsigned int n) |
| static double | probability1 (unsigned int blocks, unsigned int expected) |
| static double | probability (unsigned int blocks, unsigned int expected) |
| void | classify_addresses (const std::vector< tx_destination_entry > &destinations, const boost::optional< cryptonote::account_public_address > &change_addr, size_t &num_stdaddresses, size_t &num_subaddresses, account_public_address &single_dest_subaddress) |
| bool | construct_miner_tx (size_t height, size_t median_weight, uint64_t already_generated_coins, size_t current_block_weight, uint64_t fee, const account_public_address &miner_address, transaction &tx, const blobdata &extra_nonce, size_t max_outs, uint8_t hard_fork_version) |
| crypto::public_key | get_destination_view_key_pub (const std::vector< tx_destination_entry > &destinations, const boost::optional< cryptonote::account_public_address > &change_addr) |
| bool | construct_tx_with_tx_key (const account_keys &sender_account_keys, const std::unordered_map< crypto::public_key, subaddress_index > &subaddresses, std::vector< tx_source_entry > &sources, std::vector< tx_destination_entry > &destinations, const boost::optional< cryptonote::account_public_address > &change_addr, const std::vector< uint8_t > &extra, transaction &tx, const crypto::secret_key &tx_key, const std::vector< crypto::secret_key > &additional_tx_keys, bool rct, const rct::RCTConfig &rct_config, bool shuffle_outs, bool use_view_tags) |
| bool | construct_tx_and_get_tx_key (const account_keys &sender_account_keys, const std::unordered_map< crypto::public_key, subaddress_index > &subaddresses, std::vector< tx_source_entry > &sources, std::vector< tx_destination_entry > &destinations, const boost::optional< cryptonote::account_public_address > &change_addr, const std::vector< uint8_t > &extra, transaction &tx, crypto::secret_key &tx_key, std::vector< crypto::secret_key > &additional_tx_keys, bool rct, const rct::RCTConfig &rct_config, bool use_view_tags) |
| bool | construct_tx (const account_keys &sender_account_keys, std::vector< tx_source_entry > &sources, const std::vector< tx_destination_entry > &destinations, const boost::optional< cryptonote::account_public_address > &change_addr, const std::vector< uint8_t > &extra, transaction &tx) |
| bool | generate_genesis_block (block &bl, std::string const &genesis_tx, uint32_t nonce) |
| void | get_altblock_longhash (const block &b, crypto::hash &res, const crypto::hash &seed_hash) |
| bool | get_block_longhash (const Blockchain *pbc, const blobdata &bd, crypto::hash &res, const uint64_t height, const int major_version, const crypto::hash *seed_hash, const int miners) |
| bool | get_block_longhash (const Blockchain *pbc, const block &b, crypto::hash &res, const uint64_t height, const crypto::hash *seed_hash, const int miners) |
| crypto::hash | get_block_longhash (const Blockchain *pbc, const block &b, const uint64_t height, const crypto::hash *seed_hash, const int miners) |
| bool | construct_tx_with_tx_key (const account_keys &sender_account_keys, const std::unordered_map< crypto::public_key, subaddress_index > &subaddresses, std::vector< tx_source_entry > &sources, std::vector< tx_destination_entry > &destinations, const boost::optional< cryptonote::account_public_address > &change_addr, const std::vector< uint8_t > &extra, transaction &tx, const crypto::secret_key &tx_key, const std::vector< crypto::secret_key > &additional_tx_keys, bool rct=false, const rct::RCTConfig &rct_config={ rct::RangeProofBorromean, 0 }, bool shuffle_outs=true, bool use_view_tags=false) |
| bool | construct_tx_and_get_tx_key (const account_keys &sender_account_keys, const std::unordered_map< crypto::public_key, subaddress_index > &subaddresses, std::vector< tx_source_entry > &sources, std::vector< tx_destination_entry > &destinations, const boost::optional< cryptonote::account_public_address > &change_addr, const std::vector< uint8_t > &extra, transaction &tx, crypto::secret_key &tx_key, std::vector< crypto::secret_key > &additional_tx_keys, bool rct=false, const rct::RCTConfig &rct_config={ rct::RangeProofBorromean, 0 }, bool use_view_tags=false) |
| bool | generate_output_ephemeral_keys (const size_t tx_version, const cryptonote::account_keys &sender_account_keys, const crypto::public_key &txkey_pub, const crypto::secret_key &tx_key, const cryptonote::tx_destination_entry &dst_entr, const boost::optional< cryptonote::account_public_address > &change_addr, const size_t output_index, const bool &need_additional_txkeys, const std::vector< crypto::secret_key > &additional_tx_keys, std::vector< crypto::public_key > &additional_tx_public_keys, std::vector< rct::key > &amount_keys, crypto::public_key &out_eph_public_key, const bool use_view_tags, crypto::view_tag &view_tag) |
| bool | tx_sanity_check (const cryptonote::blobdata &tx_blob, uint64_t rct_outs_available) |
| bool | tx_sanity_check (const std::set< uint64_t > &rct_indices, size_t n_indices, uint64_t rct_outs_available) |
| uint64_t | get_transaction_weight_limit (uint8_t hf_version) |
| Get the maximum transaction weight for a given hardfork. | |
| bool | ver_rct_non_semantics_simple_cached (transaction &tx, const rct::ctkeyM &mix_ring, rct_ver_cache_t &cache, std::uint8_t rct_type_to_cache) |
| Cached version of rct::verRctNonSemanticsSimple. | |
| bool | ver_mixed_rct_semantics (std::vector< const rct::rctSig * > rvv) |
| Verify the semantics of a group of RingCT signatures as a batch (if applicable). | |
| bool | ver_non_input_consensus (const transaction &tx, tx_verification_context &tvc, std::uint8_t hf_version) |
| Verify every non-input consensus rule for a group of non-coinbase transactions. | |
| bool | ver_non_input_consensus (const pool_supplement &ps, tx_verification_context &tvc, const std::uint8_t hf_version) |
| template<class CryptoHashContainer> | |
| bool | make_pool_supplement_from_block_entry (const std::vector< cryptonote::tx_blob_entry > &tx_entries, const CryptoHashContainer &blk_tx_hashes, const bool allow_pruned, cryptonote::pool_supplement &pool_supplement) |
| bool | make_full_pool_supplement_from_block_entry (const cryptonote::block_complete_entry &blk_entry, cryptonote::pool_supplement &pool_supplement) |
| static bool | operator== (const crypto::public_key &k0, const rct::key &k1) |
| static bool | operator!= (const crypto::public_key &k0, const rct::key &k1) |
| static bool | operator== (const crypto::secret_key &k0, const rct::key &k1) |
| static bool | operator!= (const crypto::secret_key &k0, const rct::key &k1) |
| size_t | slow_memmem (const void *start_buff, size_t buflen, const void *pat, size_t patlen) |
| std::string | make_rpc_payment_signature (const crypto::secret_key &skey) |
| bool | verify_rpc_payment_signature (const std::string &message, crypto::public_key &pkey, uint64_t &ts) |
| bool | expand_transaction_1 (transaction &tx, bool base_only) |
Holds cryptonote related classes and helpers.
| typedef struct cryptonote::blk_height cryptonote::blk_height |
| typedef std::string cryptonote::blobdata |
| typedef boost::string_ref cryptonote::blobdata_ref |
| typedef boost::function<void(uint64_t , epee::span<const block> )> cryptonote::BlockNotifyCallback |
| typedef boost::multiprecision::uint128_t cryptonote::difficulty_type |
| typedef std::function<bool(const cryptonote::block&, uint64_t, const crypto::hash*, unsigned int, crypto::hash&)> cryptonote::get_block_hash_t |
| typedef std::function<const epee::span<const unsigned char>(cryptonote::network_type network)> cryptonote::GetCheckpointsCallback |
Callback routine that returns checkpoints data for specific network type.
| network | network type |
| typedef struct cryptonote::mdb_block_info_1 cryptonote::mdb_block_info_1 |
| typedef struct cryptonote::mdb_block_info_2 cryptonote::mdb_block_info_2 |
| typedef struct cryptonote::mdb_block_info_3 cryptonote::mdb_block_info_3 |
| typedef struct cryptonote::mdb_block_info_4 cryptonote::mdb_block_info_4 |
| typedef struct cryptonote::mdb_rflags cryptonote::mdb_rflags |
| typedef struct cryptonote::mdb_threadinfo cryptonote::mdb_threadinfo |
| typedef struct cryptonote::mdb_txn_cursors cryptonote::mdb_txn_cursors |
| typedef boost::function<void(uint8_t , uint64_t , const crypto::hash& , const crypto::hash& , difficulty_type , uint64_t , uint64_t , const std::vector<tx_block_template_backlog_entry>& )> cryptonote::MinerNotifyCallback |
| typedef struct cryptonote::outkey cryptonote::outkey |
| typedef struct cryptonote::outtx cryptonote::outtx |
| typedef struct cryptonote::pre_rct_outkey cryptonote::pre_rct_outkey |
| typedef std::vector<crypto::signature> cryptonote::ring_signature |
| typedef std::set<tx_by_fee_and_receive_time_entry, txCompare> cryptonote::sorted_tx_container |
container for sorting transactions by fee per unit size
| typedef std::pair<std::pair<double, std::time_t>, crypto::hash> cryptonote::tx_by_fee_and_receive_time_entry |
pair of <transaction fee, transaction hash> for organization
| typedef boost::variant<tx_extra_padding, tx_extra_pub_key, tx_extra_nonce, tx_extra_merge_mining_tag, tx_extra_additional_pub_keys, tx_extra_mysterious_minergate> cryptonote::tx_extra_field |
| typedef std::pair<crypto::hash, uint64_t> cryptonote::tx_out_index |
a pair of <transaction hash, output index>, typedef for convenience
| typedef boost::variant<txin_gen, txin_to_script, txin_to_scripthash, txin_to_key> cryptonote::txin_v |
| typedef struct cryptonote::txindex cryptonote::txindex |
| typedef boost::variant<txout_to_script, txout_to_scripthash, txout_to_key, txout_to_tagged_key> cryptonote::txout_target_v |
| typedef boost::function<void(std::vector<txpool_event>)> cryptonote::TxpoolNotifyCallback |
Declares ways in which the BlockchainDB backend should be told to sync
| enum cryptonote::network_type : uint8_t |
|
strong |
| Enumerator | |
|---|---|
| broadcasted | Public txes received via block/fluff. |
| relayable | Every tx not marked relay_method::none. |
| legacy | relay_category::broadcasted + relay_method::none for rpc relay requests or historical reasons |
| all | Everything in the db. |
|
strong |
Methods tracking how a tx was received and relayed.
| std::vector< uint64_t > cryptonote::absolute_output_offsets_to_relative | ( | const std::vector< uint64_t > & | off | ) |
| bool cryptonote::add_additional_tx_pub_keys_to_extra | ( | std::vector< uint8_t > & | tx_extra, |
| const std::vector< crypto::public_key > & | additional_pub_keys ) |
| bool cryptonote::add_extra_nonce_to_tx_extra | ( | std::vector< uint8_t > & | tx_extra, |
| const blobdata & | extra_nonce ) |
| bool cryptonote::add_mm_merkle_root_to_tx_extra | ( | std::vector< uint8_t > & | tx_extra, |
| const crypto::hash & | mm_merkle_root, | ||
| size_t | mm_merkle_tree_depth ) |
|
static |
| bool cryptonote::add_tx_pub_key_to_extra | ( | std::vector< uint8_t > & | tx_extra, |
| const crypto::public_key & | tx_pub_key ) |
| bool cryptonote::add_tx_pub_key_to_extra | ( | transaction & | tx, |
| const crypto::public_key & | tx_pub_key ) |
| bool cryptonote::add_tx_pub_key_to_extra | ( | transaction_prefix & | tx, |
| const crypto::public_key & | tx_pub_key ) |
| bool cryptonote::calculate_block_hash | ( | const block & | b, |
| crypto::hash & | res, | ||
| const blobdata_ref * | blob ) |
| bool cryptonote::calculate_transaction_hash | ( | const transaction & | t, |
| crypto::hash & | res, | ||
| size_t * | blob_size ) |
| bool cryptonote::calculate_transaction_prunable_hash | ( | const transaction & | t, |
| const cryptonote::blobdata_ref * | blob, | ||
| crypto::hash & | res ) |
| bool cryptonote::check_hash | ( | const crypto::hash & | hash, |
| difficulty_type | difficulty ) |
| bool cryptonote::check_hash_128 | ( | const crypto::hash & | hash, |
| difficulty_type | difficulty ) |
| bool cryptonote::check_hash_64 | ( | const crypto::hash & | hash, |
| uint64_t | difficulty ) |
checks if a hash fits the given difficulty
The hash passes if (hash * difficulty) < 2^256. Phrased differently, if (hash * difficulty) fits without overflow into the least significant 256 bits of the 320 bit multiplication result.
| hash | the hash to check |
| difficulty | the difficulty to check against |
| bool cryptonote::check_inputs_overflow | ( | const transaction & | tx | ) |
| bool cryptonote::check_inputs_types_supported | ( | const transaction & | tx | ) |
| bool cryptonote::check_money_overflow | ( | const transaction & | tx | ) |
| bool cryptonote::check_output_types | ( | const transaction & | tx, |
| const uint8_t | hf_version ) |
| bool cryptonote::check_outs_overflow | ( | const transaction & | tx | ) |
| bool cryptonote::check_outs_valid | ( | const transaction & | tx | ) |
| void cryptonote::classify_addresses | ( | const std::vector< tx_destination_entry > & | destinations, |
| const boost::optional< cryptonote::account_public_address > & | change_addr, | ||
| size_t & | num_stdaddresses, | ||
| size_t & | num_subaddresses, | ||
| account_public_address & | single_dest_subaddress ) |
| bool cryptonote::construct_miner_tx | ( | size_t | height, |
| size_t | median_weight, | ||
| uint64_t | already_generated_coins, | ||
| size_t | current_block_weight, | ||
| uint64_t | fee, | ||
| const account_public_address & | miner_address, | ||
| transaction & | tx, | ||
| const blobdata & | extra_nonce, | ||
| size_t | max_outs, | ||
| uint8_t | hard_fork_version ) |
| bool cryptonote::construct_tx | ( | const account_keys & | sender_account_keys, |
| std::vector< tx_source_entry > & | sources, | ||
| const std::vector< tx_destination_entry > & | destinations, | ||
| const boost::optional< cryptonote::account_public_address > & | change_addr, | ||
| const std::vector< uint8_t > & | extra, | ||
| transaction & | tx ) |
| bool cryptonote::construct_tx_and_get_tx_key | ( | const account_keys & | sender_account_keys, |
| const std::unordered_map< crypto::public_key, subaddress_index > & | subaddresses, | ||
| std::vector< tx_source_entry > & | sources, | ||
| std::vector< tx_destination_entry > & | destinations, | ||
| const boost::optional< cryptonote::account_public_address > & | change_addr, | ||
| const std::vector< uint8_t > & | extra, | ||
| transaction & | tx, | ||
| crypto::secret_key & | tx_key, | ||
| std::vector< crypto::secret_key > & | additional_tx_keys, | ||
| bool | rct, | ||
| const rct::RCTConfig & | rct_config, | ||
| bool | use_view_tags ) |
| bool cryptonote::construct_tx_and_get_tx_key | ( | const account_keys & | sender_account_keys, |
| const std::unordered_map< crypto::public_key, subaddress_index > & | subaddresses, | ||
| std::vector< tx_source_entry > & | sources, | ||
| std::vector< tx_destination_entry > & | destinations, | ||
| const boost::optional< cryptonote::account_public_address > & | change_addr, | ||
| const std::vector< uint8_t > & | extra, | ||
| transaction & | tx, | ||
| crypto::secret_key & | tx_key, | ||
| std::vector< crypto::secret_key > & | additional_tx_keys, | ||
| bool | rct = false, | ||
| const rct::RCTConfig & | rct_config = { rct::RangeProofBorromean, 0 }, | ||
| bool | use_view_tags = false ) |
| bool cryptonote::construct_tx_with_tx_key | ( | const account_keys & | sender_account_keys, |
| const std::unordered_map< crypto::public_key, subaddress_index > & | subaddresses, | ||
| std::vector< tx_source_entry > & | sources, | ||
| std::vector< tx_destination_entry > & | destinations, | ||
| const boost::optional< cryptonote::account_public_address > & | change_addr, | ||
| const std::vector< uint8_t > & | extra, | ||
| transaction & | tx, | ||
| const crypto::secret_key & | tx_key, | ||
| const std::vector< crypto::secret_key > & | additional_tx_keys, | ||
| bool | rct, | ||
| const rct::RCTConfig & | rct_config, | ||
| bool | shuffle_outs, | ||
| bool | use_view_tags ) |
| bool cryptonote::construct_tx_with_tx_key | ( | const account_keys & | sender_account_keys, |
| const std::unordered_map< crypto::public_key, subaddress_index > & | subaddresses, | ||
| std::vector< tx_source_entry > & | sources, | ||
| std::vector< tx_destination_entry > & | destinations, | ||
| const boost::optional< cryptonote::account_public_address > & | change_addr, | ||
| const std::vector< uint8_t > & | extra, | ||
| transaction & | tx, | ||
| const crypto::secret_key & | tx_key, | ||
| const std::vector< crypto::secret_key > & | additional_tx_keys, | ||
| bool | rct = false, | ||
| const rct::RCTConfig & | rct_config = { rct::RangeProofBorromean, 0 }, | ||
| bool | shuffle_outs = true, | ||
| bool | use_view_tags = false ) |
| void cryptonote::decompose_amount_into_digits | ( | uint64_t | amount, |
| uint64_t | dust_threshold, | ||
| const chunk_handler_t & | chunk_handler, | ||
| const dust_handler_t & | dust_handler ) |
| crypto::secret_key cryptonote::decrypt_key | ( | crypto::secret_key | key, |
| const epee::wipeable_string & | passphrase ) |
|
static |
| crypto::secret_key cryptonote::encrypt_key | ( | crypto::secret_key | key, |
| const epee::wipeable_string & | passphrase ) |
| bool cryptonote::expand_transaction_1 | ( | transaction & | tx, |
| bool | base_only ) |
| bool cryptonote::expand_transaction_1 | ( | transaction & | tx, |
| bool | base_only ) |
| double cryptonote::factorial | ( | unsigned int | n | ) |
| bool cryptonote::find_tx_extra_field_by_type | ( | const std::vector< tx_extra_field > & | tx_extra_fields, |
| T & | field, | ||
| size_t | index = 0 ) |
| bool cryptonote::generate_genesis_block | ( | block & | bl, |
| std::string const & | genesis_tx, | ||
| uint32_t | nonce ) |
| bool cryptonote::generate_key_image_helper | ( | const account_keys & | ack, |
| const std::unordered_map< crypto::public_key, subaddress_index > & | subaddresses, | ||
| const crypto::public_key & | out_key, | ||
| const crypto::public_key & | tx_public_key, | ||
| const std::vector< crypto::public_key > & | additional_tx_public_keys, | ||
| size_t | real_output_index, | ||
| keypair & | in_ephemeral, | ||
| crypto::key_image & | ki, | ||
| hw::device & | hwdev ) |
| bool cryptonote::generate_key_image_helper_precomp | ( | const account_keys & | ack, |
| const crypto::public_key & | out_key, | ||
| const crypto::key_derivation & | recv_derivation, | ||
| size_t | real_output_index, | ||
| const subaddress_index & | received_index, | ||
| keypair & | in_ephemeral, | ||
| crypto::key_image & | ki, | ||
| hw::device & | hwdev ) |
| bool cryptonote::generate_output_ephemeral_keys | ( | const size_t | tx_version, |
| const cryptonote::account_keys & | sender_account_keys, | ||
| const crypto::public_key & | txkey_pub, | ||
| const crypto::secret_key & | tx_key, | ||
| const cryptonote::tx_destination_entry & | dst_entr, | ||
| const boost::optional< cryptonote::account_public_address > & | change_addr, | ||
| const size_t | output_index, | ||
| const bool & | need_additional_txkeys, | ||
| const std::vector< crypto::secret_key > & | additional_tx_keys, | ||
| std::vector< crypto::public_key > & | additional_tx_public_keys, | ||
| std::vector< rct::key > & | amount_keys, | ||
| crypto::public_key & | out_eph_public_key, | ||
| const bool | use_view_tags, | ||
| crypto::view_tag & | view_tag ) |
| std::string cryptonote::get_account_address_as_str | ( | network_type | nettype, |
| bool | subaddress, | ||
| account_public_address const & | adr ) |
| uint8_t cryptonote::get_account_address_checksum | ( | const public_address_outer_blob & | bl | ) |
| bool cryptonote::get_account_address_from_str | ( | address_parse_info & | info, |
| network_type | nettype, | ||
| std::string const & | str ) |
| bool cryptonote::get_account_address_from_str_or_url | ( | address_parse_info & | info, |
| network_type | nettype, | ||
| const std::string & | str_or_url, | ||
| std::function< std::string(const std::string &, const std::vector< std::string > &, bool)> | dns_confirm ) |
| std::string cryptonote::get_account_integrated_address_as_str | ( | network_type | nettype, |
| account_public_address const & | adr, | ||
| crypto::hash8 const & | payment_id ) |
| uint8_t cryptonote::get_account_integrated_address_checksum | ( | const public_integrated_address_outer_blob & | bl | ) |
| std::vector< crypto::public_key > cryptonote::get_additional_tx_pub_keys_from_extra | ( | const std::vector< uint8_t > & | tx_extra | ) |
| std::vector< crypto::public_key > cryptonote::get_additional_tx_pub_keys_from_extra | ( | const transaction_prefix & | tx | ) |
| void cryptonote::get_altblock_longhash | ( | const block & | b, |
| crypto::hash & | res, | ||
| const crypto::hash & | seed_hash ) |
| uint32_t cryptonote::get_aux_slot | ( | const crypto::hash & | id, |
| uint32_t | nonce, | ||
| uint32_t | n_aux_chains ) |
| crypto::hash cryptonote::get_blob_hash | ( | const blobdata & | blob | ) |
| void cryptonote::get_blob_hash | ( | const blobdata & | blob, |
| crypto::hash & | res ) |
| crypto::hash cryptonote::get_blob_hash | ( | const blobdata_ref & | blob | ) |
| void cryptonote::get_blob_hash | ( | const blobdata_ref & | blob, |
| crypto::hash & | res ) |
| block_complete_entry cryptonote::get_block_complete_entry | ( | block & | b, |
| tx_memory_pool & | pool ) |
| crypto::hash cryptonote::get_block_hash | ( | const block & | b | ) |
| bool cryptonote::get_block_hash | ( | const block & | b, |
| crypto::hash & | res ) |
| bool cryptonote::get_block_longhash | ( | const Blockchain * | pbc, |
| const blobdata & | bd, | ||
| crypto::hash & | res, | ||
| const uint64_t | height, | ||
| const int | major_version, | ||
| const crypto::hash * | seed_hash, | ||
| const int | miners ) |
| crypto::hash cryptonote::get_block_longhash | ( | const Blockchain * | pbc, |
| const block & | b, | ||
| const uint64_t | height, | ||
| const crypto::hash * | seed_hash, | ||
| const int | miners ) |
| bool cryptonote::get_block_longhash | ( | const Blockchain * | pbc, |
| const block & | b, | ||
| crypto::hash & | res, | ||
| const uint64_t | height, | ||
| const crypto::hash * | seed_hash, | ||
| const int | miners ) |
| bool cryptonote::get_block_reward | ( | size_t | median_weight, |
| size_t | current_block_weight, | ||
| uint64_t | already_generated_coins, | ||
| uint64_t & | reward, | ||
| uint8_t | version ) |
|
inline |
| unsigned int cryptonote::get_default_decimal_point | ( | ) |
| crypto::public_key cryptonote::get_destination_view_key_pub | ( | const std::vector< tx_destination_entry > & | destinations, |
| const boost::optional< cryptonote::account_public_address > & | change_addr ) |
| bool cryptonote::get_encrypted_payment_id_from_tx_extra_nonce | ( | const blobdata & | extra_nonce, |
| crypto::hash8 & | payment_id ) |
| void cryptonote::get_hash_stats | ( | uint64_t & | tx_hashes_calculated, |
| uint64_t & | tx_hashes_cached, | ||
| uint64_t & | block_hashes_calculated, | ||
| uint64_t & | block_hashes_cached ) |
| bool cryptonote::get_inputs_money_amount | ( | const transaction & | tx, |
| uint64_t & | money ) |
|
static |
| size_t cryptonote::get_max_tx_size | ( | ) |
| size_t cryptonote::get_min_block_weight | ( | uint8_t | version | ) |
| size_t cryptonote::get_object_blobsize | ( | const t_object & | o | ) |
| bool cryptonote::get_object_hash | ( | const t_object & | o, |
| crypto::hash & | res ) |
| bool cryptonote::get_object_hash | ( | const t_object & | o, |
| crypto::hash & | res, | ||
| size_t & | blob_size ) |
| bool cryptonote::get_output_public_key | ( | const cryptonote::tx_out & | out, |
| crypto::public_key & | output_public_key ) |
| boost::optional< crypto::view_tag > cryptonote::get_output_view_tag | ( | const cryptonote::tx_out & | out | ) |
| uint64_t cryptonote::get_outs_money_amount | ( | const transaction & | tx | ) |
| bool cryptonote::get_payment_id_from_tx_extra_nonce | ( | const blobdata & | extra_nonce, |
| crypto::hash & | payment_id ) |
|
inline |
|
inline |
| bool cryptonote::get_pruned_transaction_hash | ( | const transaction & | t, |
| const crypto::hash & | pruned_data_hash, | ||
| crypto::hash & | res ) |
| uint64_t cryptonote::get_pruned_transaction_weight | ( | const transaction & | tx | ) |
| uint64_t cryptonote::get_transaction_blob_size | ( | const transaction & | tx | ) |
| crypto::hash cryptonote::get_transaction_hash | ( | const transaction & | t | ) |
| bool cryptonote::get_transaction_hash | ( | const transaction & | t, |
| crypto::hash & | res ) |
| bool cryptonote::get_transaction_hash | ( | const transaction & | t, |
| crypto::hash & | res, | ||
| size_t & | blob_size ) |
| bool cryptonote::get_transaction_hash | ( | const transaction & | t, |
| crypto::hash & | res, | ||
| size_t * | blob_size ) |
| crypto::hash cryptonote::get_transaction_prefix_hash | ( | const transaction_prefix & | tx | ) |
| void cryptonote::get_transaction_prefix_hash | ( | const transaction_prefix & | tx, |
| crypto::hash & | h ) |
| void cryptonote::get_transaction_prefix_hash | ( | const transaction_prefix & | tx, |
| crypto::hash & | h, | ||
| hw::device & | hwdev ) |
| crypto::hash cryptonote::get_transaction_prefix_hash | ( | const transaction_prefix & | tx, |
| hw::device & | hwdev ) |
| crypto::hash cryptonote::get_transaction_prunable_hash | ( | const transaction & | t, |
| const cryptonote::blobdata_ref * | blobdata ) |
| uint64_t cryptonote::get_transaction_weight | ( | const transaction & | tx | ) |
| uint64_t cryptonote::get_transaction_weight | ( | const transaction & | tx, |
| size_t | blob_size ) |
| uint64_t cryptonote::get_transaction_weight_clawback | ( | const transaction & | tx, |
| size_t | n_padded_outputs ) |
Get the maximum transaction weight for a given hardfork.
| hf_version | hard fork version |
| uint64_t cryptonote::get_tx_fee | ( | const transaction & | tx | ) |
| bool cryptonote::get_tx_fee | ( | const transaction & | tx, |
| uint64_t & | fee ) |
| crypto::public_key cryptonote::get_tx_pub_key_from_extra | ( | const std::vector< uint8_t > & | tx_extra, |
| size_t | pk_index ) |
| crypto::public_key cryptonote::get_tx_pub_key_from_extra | ( | const transaction & | tx, |
| size_t | pk_index ) |
| crypto::public_key cryptonote::get_tx_pub_key_from_extra | ( | const transaction_prefix & | tx_prefix, |
| size_t | pk_index ) |
| crypto::hash cryptonote::get_tx_tree_hash | ( | const block & | b | ) |
| crypto::hash cryptonote::get_tx_tree_hash | ( | const std::vector< crypto::hash > & | tx_hashes | ) |
| void cryptonote::get_tx_tree_hash | ( | const std::vector< crypto::hash > & | tx_hashes, |
| crypto::hash & | h ) |
| std::string cryptonote::get_unit | ( | unsigned int | decimal_point | ) |
| std::string cryptonote::hex | ( | difficulty_type | v | ) |
|
static |
| bool cryptonote::is_coinbase | ( | const transaction & | tx | ) |
| bool cryptonote::is_out_to_acc | ( | const account_keys & | acc, |
| const crypto::public_key & | output_public_key, | ||
| const crypto::public_key & | tx_pub_key, | ||
| const std::vector< crypto::public_key > & | additional_tx_pub_keys, | ||
| size_t | output_index, | ||
| const boost::optional< crypto::view_tag > & | view_tag_opt ) |
| boost::optional< subaddress_receive_info > cryptonote::is_out_to_acc_precomp | ( | const std::unordered_map< crypto::public_key, subaddress_index > & | subaddresses, |
| const crypto::public_key & | out_key, | ||
| const crypto::key_derivation & | derivation, | ||
| const std::vector< crypto::key_derivation > & | additional_derivations, | ||
| size_t | output_index, | ||
| hw::device & | hwdev, | ||
| const boost::optional< crypto::view_tag > & | view_tag_opt ) |
| bool cryptonote::is_v1_tx | ( | const blobdata_ref & | tx_blob | ) |
|
static |
| void cryptonote::lmdb_resized | ( | MDB_env * | env, |
| int | isactive ) |
|
inline |
|
inline |
| bool cryptonote::lookup_acc_outs | ( | const account_keys & | acc, |
| const transaction & | tx, | ||
| const crypto::public_key & | tx_pub_key, | ||
| const std::vector< crypto::public_key > & | additional_tx_pub_keys, | ||
| std::vector< size_t > & | outs, | ||
| uint64_t & | money_transfered ) |
| bool cryptonote::lookup_acc_outs | ( | const account_keys & | acc, |
| const transaction & | tx, | ||
| std::vector< size_t > & | outs, | ||
| uint64_t & | money_transfered ) |
|
inline |
|
inline |
| std::string cryptonote::make_rpc_payment_signature | ( | const crypto::secret_key & | skey | ) |
|
noexcept |
| const boost::multiprecision::uint256_t cryptonote::max128bit | ( | std::numeric_limits< boost::multiprecision::uint128_t > | ::max() | ) |
| const boost::multiprecision::uint512_t cryptonote::max256bit | ( | std::numeric_limits< boost::multiprecision::uint256_t > | ::max() | ) |
| const difficulty_type cryptonote::max64bit | ( | std::numeric_limits< std::uint64_t > | ::max() | ) |
| BlockchainDB * cryptonote::new_db | ( | ) |
| difficulty_type cryptonote::next_difficulty | ( | std::vector< std::uint64_t > | timestamps, |
| std::vector< difficulty_type > | cumulative_difficulties, | ||
| size_t | target_seconds ) |
| difficulty_type cryptonote::next_difficulty | ( | std::vector< uint64_t > | timestamps, |
| std::vector< difficulty_type > | cumulative_difficulties, | ||
| size_t | target_seconds ) |
| uint64_t cryptonote::next_difficulty_64 | ( | std::vector< std::uint64_t > | timestamps, |
| std::vector< uint64_t > | cumulative_difficulties, | ||
| size_t | target_seconds ) |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inline |
|
inlinestatic |
|
inlinestatic |
| bool cryptonote::operator== | ( | const cryptonote::block & | a, |
| const cryptonote::block & | b ) |
| bool cryptonote::operator== | ( | const cryptonote::transaction & | a, |
| const cryptonote::transaction & | b ) |
| bool cryptonote::out_can_be_to_acc | ( | const boost::optional< crypto::view_tag > & | view_tag_opt, |
| const crypto::key_derivation & | derivation, | ||
| const size_t | output_index, | ||
| hw::device * | hwdev ) |
| bool cryptonote::parse_and_validate_block_from_blob | ( | const blobdata_ref & | b_blob, |
| block & | b ) |
| bool cryptonote::parse_and_validate_block_from_blob | ( | const blobdata_ref & | b_blob, |
| block & | b, | ||
| crypto::hash & | block_hash ) |
| bool cryptonote::parse_and_validate_block_from_blob | ( | const blobdata_ref & | b_blob, |
| block & | b, | ||
| crypto::hash * | block_hash ) |
| bool cryptonote::parse_and_validate_tx_base_from_blob | ( | const blobdata_ref & | tx_blob, |
| transaction & | tx ) |
| bool cryptonote::parse_and_validate_tx_from_blob | ( | const blobdata_ref & | tx_blob, |
| transaction & | tx ) |
| bool cryptonote::parse_and_validate_tx_from_blob | ( | const blobdata_ref & | tx_blob, |
| transaction & | tx, | ||
| crypto::hash & | tx_hash ) |
| bool cryptonote::parse_and_validate_tx_from_blob | ( | const blobdata_ref & | tx_blob, |
| transaction & | tx, | ||
| crypto::hash & | tx_hash, | ||
| crypto::hash & | tx_prefix_hash ) |
| bool cryptonote::parse_and_validate_tx_prefix_from_blob | ( | const blobdata_ref & | tx_blob, |
| transaction_prefix & | tx ) |
| bool cryptonote::parse_tx_extra | ( | const std::vector< uint8_t > & | tx_extra, |
| std::vector< tx_extra_field > & | tx_extra_fields ) |
|
static |
| std::string cryptonote::print_money | ( | const boost::multiprecision::uint128_t & | amount, |
| unsigned int | decimal_point ) |
| std::string cryptonote::print_money | ( | uint64_t | amount, |
| unsigned int | decimal_point ) |
|
static |
|
static |
| std::vector< uint64_t > cryptonote::relative_output_offsets_to_absolute | ( | const std::vector< uint64_t > & | off | ) |
| bool cryptonote::remove_field_from_tx_extra | ( | std::vector< uint8_t > & | tx_extra, |
| const std::type_info & | type ) |
| std::string cryptonote::round_money_up | ( | const std::string & | s, |
| unsigned | significant_digits ) |
| void cryptonote::set_default_decimal_point | ( | unsigned int | decimal_point | ) |
| void cryptonote::set_encrypted_payment_id_to_tx_extra_nonce | ( | blobdata & | extra_nonce, |
| const crypto::hash8 & | payment_id ) |
| void cryptonote::set_payment_id_to_tx_extra_nonce | ( | blobdata & | extra_nonce, |
| const crypto::hash & | payment_id ) |
| void cryptonote::set_tx_out | ( | const uint64_t | amount, |
| const crypto::public_key & | output_public_key, | ||
| const bool | use_view_tags, | ||
| const crypto::view_tag & | view_tag, | ||
| tx_out & | out ) |
| void cryptonote::set_tx_out | ( | const uint64_t | amount, |
| const crypto::public_key & | output_public_key, | ||
| const bool | use_view_tags, | ||
| const crypto::view_tag & | view_tag, | ||
| tx_out & | out ) |
| std::string cryptonote::short_hash_str | ( | const crypto::hash & | h | ) |
| size_t cryptonote::slow_memmem | ( | const void * | start_buff, |
| size_t | buflen, | ||
| const void * | pat, | ||
| size_t | patlen ) |
| bool cryptonote::sort_tx_extra | ( | const std::vector< uint8_t > & | tx_extra, |
| std::vector< uint8_t > & | sorted_tx_extra, | ||
| bool | allow_partial ) |
| bool cryptonote::sort_tx_extra | ( | const std::vector< uint8_t > & | tx_extra, |
| std::vector< uint8_t > & | sorted_tx_extra, | ||
| bool | allow_partial = false ) |
| bool cryptonote::t_serializable_object_from_blob | ( | t_object & | to, |
| const blobdata & | b_blob ) |
| blobdata cryptonote::t_serializable_object_to_blob | ( | const t_object & | to | ) |
| bool cryptonote::t_serializable_object_to_blob | ( | const t_object & | to, |
| blobdata & | b_blob ) |
| bool cryptonote::tx_sanity_check | ( | const cryptonote::blobdata & | tx_blob, |
| uint64_t | rct_outs_available ) |
| bool cryptonote::tx_sanity_check | ( | const std::set< uint64_t > & | rct_indices, |
| size_t | n_indices, | ||
| uint64_t | rct_outs_available ) |
| blobdata cryptonote::tx_to_blob | ( | const transaction & | tx | ) |
| bool cryptonote::tx_to_blob | ( | const transaction & | tx, |
| blobdata & | b_blob ) |
| bool cryptonote::ver_mixed_rct_semantics | ( | std::vector< const rct::rctSig * > | rvv | ) |
Verify the semantics of a group of RingCT signatures as a batch (if applicable).
Coinbase txs or other transaction with a RingCT type of RCTTypeNull will fail to verify.
| rvv | list of signatures to verify |
| bool cryptonote::ver_non_input_consensus | ( | const pool_supplement & | ps, |
| tx_verification_context & | tvc, | ||
| const std::uint8_t | hf_version ) |
| bool cryptonote::ver_non_input_consensus | ( | const transaction & | tx, |
| tx_verification_context & | tvc, | ||
| std::uint8_t | hf_version ) |
Verify every non-input consensus rule for a group of non-coinbase transactions.
List of checks that we do for each transaction:
For pool_supplement input: We assume the structure of the pool supplement is already correct: for each value entry, the cryptonote::transaction matches its corresponding blobdata and the TXID map key is correctly calculated for that transaction. We use the .nic_verified_hf_version field to skip verification for the pool supplement if hf_version matches, and we cache that version on success.
| tx | single transaction to verify |
| pool_supplement | pool supplement to verify |
| tvc | relevant flags will be set for if/why verification failed |
| hf_version | Hard fork version to run rules against |
| bool cryptonote::ver_rct_non_semantics_simple_cached | ( | transaction & | tx, |
| const rct::ctkeyM & | mix_ring, | ||
| rct_ver_cache_t & | cache, | ||
| std::uint8_t | rct_type_to_cache ) |
Cached version of rct::verRctNonSemanticsSimple.
This function will not affect how the transaction is serialized and it will never modify the transaction prefix.
The reference to tx is mutable since the transaction's ring signatures may be expanded by Blockchain::expand_transaction_2. However, on cache hits, the transaction will not be expanded. This means that the caller does not need to call expand_transaction_2 on this transaction before passing it; the transaction will not successfully verify with "old" RCT data if the transaction has been otherwise modified since the last verification.
But, if cryptonote::get_transaction_hash(tx) returns a "stale" hash, this function is not guaranteed to work. So make sure that the cryptonote::transaction passed has not had modifications to it since the last time its hash was fetched without properly invalidating the hashes.
rct_type_to_cache can be any RCT version value as long as rct::verRctNonSemanticsSimple works for this RCT version, but for most applications, it doesn't make sense to not make this version the "current" RCT version (i.e. the version that transactions in the mempool are).
| tx | transaction which contains RCT signature to verify |
| mix_ring | mixring referenced by this tx. THIS DATA MUST BE PREVIOUSLY VALIDATED |
| cache | saves tx+mixring hashes used to cache calls |
| rct_type_to_cache | Only RCT sigs with version (e.g. RCTTypeBulletproofPlus) will be cached |
| bool cryptonote::verify_rpc_payment_signature | ( | const std::string & | message, |
| crypto::public_key & | pkey, | ||
| uint64_t & | ts ) |
| const command_line::arg_descriptor< size_t > cryptonote::arg_block_download_max_size |
|
static |
|
static |
|
static |
|
static |
| const command_line::arg_descriptor< std::string, false, true, 3 > cryptonote::arg_data_dir |
| const command_line::arg_descriptor< bool, false > cryptonote::arg_db_salvage |
| const command_line::arg_descriptor< std::string > cryptonote::arg_db_sync_mode |
| const command_line::arg_descriptor<bool> cryptonote::arg_disable_dns_checkpoints |
|
static |
|
static |
| const command_line::arg_descriptor< difficulty_type > cryptonote::arg_fixed_difficulty |
|
static |
|
static |
| const command_line::arg_descriptor<bool> cryptonote::arg_keep_fakechain |
|
static |
| const command_line::arg_descriptor< bool > cryptonote::arg_offline |
|
static |
|
static |
| const command_line::arg_descriptor< bool, false > cryptonote::arg_regtest_on |
|
static |
|
static |
| const command_line::arg_descriptor< bool, false > cryptonote::arg_stagenet_on |
| const command_line::arg_descriptor< bool > cryptonote::arg_sync_pruned_blocks |
|
static |
|
static |
|
static |
| const command_line::arg_descriptor< bool, false > cryptonote::arg_testnet_on |
|
staticconstexpr |