Electroneum
wallet2.cpp File Reference
#include <numeric>
#include <limits>
#include <tuple>
#include <boost/format.hpp>
#include <boost/optional/optional.hpp>
#include <boost/utility/value_init.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/trim.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/join.hpp>
#include <boost/asio/ip/address.hpp>
#include <boost/range/adaptor/transformed.hpp>
#include <boost/preprocessor/stringize.hpp>
#include "include_base_utils.h"
#include <secp256k1/include/secp256k1.h>
#include "cryptonote_config.h"
#include "wallet2.h"
#include "cryptonote_basic/cryptonote_format_utils.h"
#include "rpc/core_rpc_server_commands_defs.h"
#include "misc_language.h"
#include "cryptonote_basic/cryptonote_basic_impl.h"
#include "multisig/multisig.h"
#include "common/boost_serialization_helper.h"
#include "common/command_line.h"
#include "common/threadpool.h"
#include "profile_tools.h"
#include "crypto/crypto.h"
#include "serialization/binary_utils.h"
#include "serialization/string.h"
#include "cryptonote_basic/blobdatatype.h"
#include "mnemonics/electrum-words.h"
#include "common/i18n.h"
#include "common/util.h"
#include "common/apply_permutation.h"
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include "common/json_util.h"
#include "memwipe.h"
#include "common/base58.h"
#include "common/combinator.h"
#include "common/dns_utils.h"
#include "common/notify.h"
#include "common/perf_timer.h"
#include "ringct/rctSigs.h"
#include "ringdb.h"
#include "device/device_cold.hpp"
#include "device_trezor/device_trezor.hpp"
#include "net/socks_connect.h"
#include "crypto/keccak.h"
#include "crypto/crypto-ops.h"

Go to the source code of this file.

Namespaces

 tools
 Various Tools.
 

Macros

#define ELECTRONEUM_DEFAULT_LOG_CATEGORY   "wallet.wallet2"
 
#define APPROXIMATE_INPUT_BYTES   80
 
#define TX_WEIGHT_TARGET(bytes)   (bytes*2/3)
 
#define CHACHA8_KEY_TAIL   0x8c
 
#define CACHE_KEY_TAIL   0x8d
 
#define UNSIGNED_TX_PREFIX   "Electroneum unsigned tx set\004"
 
#define SIGNED_TX_PREFIX   "Electroneum signed tx set\004"
 
#define MULTISIG_UNSIGNED_TX_PREFIX   "Electroneum multisig unsigned tx set\001"
 
#define RECENT_OUTPUT_RATIO   (0.5)
 
#define RECENT_OUTPUT_DAYS   (1.8)
 
#define RECENT_OUTPUT_ZONE   ((time_t)(RECENT_OUTPUT_DAYS * 86400))
 
#define RECENT_OUTPUT_BLOCKS   (RECENT_OUTPUT_DAYS * 720)
 
#define FEE_ESTIMATE_GRACE_BLOCKS   10
 
#define SECOND_OUTPUT_RELATEDNESS_THRESHOLD   0.0f
 
#define SUBADDRESS_LOOKAHEAD_MAJOR   50
 
#define SUBADDRESS_LOOKAHEAD_MINOR   200
 
#define KEY_IMAGE_EXPORT_FILE_MAGIC   "Electroneum key image export\002"
 
#define MULTISIG_EXPORT_FILE_MAGIC   "Electroneum multisig export\001"
 
#define SEGREGATION_FORK_HEIGHT   99999999
 
#define TESTNET_SEGREGATION_FORK_HEIGHT   99999999
 
#define STAGENET_SEGREGATION_FORK_HEIGHT   99999999
 
#define SEGREGATION_FORK_VICINITY   1500 /* blocks */
 
#define FIRST_REFRESH_GRANULARITY   1024
 
#define GAMMA_SHAPE   19.28
 
#define GAMMA_SCALE   (1/1.61)
 
#define DEFAULT_MIN_OUTPUT_COUNT   5
 
#define DEFAULT_MIN_OUTPUT_VALUE   (2*COIN)
 
#define OUTPUT_EXPORT_FILE_MAGIC   "Electroneum output export\003"
 
#define CMPF(f)   if (!(td.f == org_td.f)) goto process
 

Variables

const size_t tools::MAX_SPLIT_ATTEMPTS = 30
 

Macro Definition Documentation

◆ APPROXIMATE_INPUT_BYTES

#define APPROXIMATE_INPUT_BYTES   80

Definition at line 97 of file wallet2.cpp.

◆ CACHE_KEY_TAIL

#define CACHE_KEY_TAIL   0x8d

Definition at line 104 of file wallet2.cpp.

◆ CHACHA8_KEY_TAIL

#define CHACHA8_KEY_TAIL   0x8c

Definition at line 103 of file wallet2.cpp.

◆ CMPF

#define CMPF (   f)    if (!(td.f == org_td.f)) goto process

◆ DEFAULT_MIN_OUTPUT_COUNT

#define DEFAULT_MIN_OUTPUT_COUNT   5

Definition at line 137 of file wallet2.cpp.

◆ DEFAULT_MIN_OUTPUT_VALUE

#define DEFAULT_MIN_OUTPUT_VALUE   (2*COIN)

Definition at line 138 of file wallet2.cpp.

◆ ELECTRONEUM_DEFAULT_LOG_CATEGORY

#define ELECTRONEUM_DEFAULT_LOG_CATEGORY   "wallet.wallet2"

Definition at line 94 of file wallet2.cpp.

◆ FEE_ESTIMATE_GRACE_BLOCKS

#define FEE_ESTIMATE_GRACE_BLOCKS   10

Definition at line 116 of file wallet2.cpp.

◆ FIRST_REFRESH_GRANULARITY

#define FIRST_REFRESH_GRANULARITY   1024

Definition at line 132 of file wallet2.cpp.

◆ GAMMA_SCALE

#define GAMMA_SCALE   (1/1.61)

Definition at line 135 of file wallet2.cpp.

◆ GAMMA_SHAPE

#define GAMMA_SHAPE   19.28

Definition at line 134 of file wallet2.cpp.

◆ KEY_IMAGE_EXPORT_FILE_MAGIC

#define KEY_IMAGE_EXPORT_FILE_MAGIC   "Electroneum key image export\002"

Definition at line 123 of file wallet2.cpp.

◆ MULTISIG_EXPORT_FILE_MAGIC

#define MULTISIG_EXPORT_FILE_MAGIC   "Electroneum multisig export\001"

Definition at line 125 of file wallet2.cpp.

◆ MULTISIG_UNSIGNED_TX_PREFIX

#define MULTISIG_UNSIGNED_TX_PREFIX   "Electroneum multisig unsigned tx set\001"

Definition at line 109 of file wallet2.cpp.

◆ OUTPUT_EXPORT_FILE_MAGIC

#define OUTPUT_EXPORT_FILE_MAGIC   "Electroneum output export\003"

Definition at line 140 of file wallet2.cpp.

◆ RECENT_OUTPUT_BLOCKS

#define RECENT_OUTPUT_BLOCKS   (RECENT_OUTPUT_DAYS * 720)

Definition at line 114 of file wallet2.cpp.

◆ RECENT_OUTPUT_DAYS

#define RECENT_OUTPUT_DAYS   (1.8)

Definition at line 112 of file wallet2.cpp.

◆ RECENT_OUTPUT_RATIO

#define RECENT_OUTPUT_RATIO   (0.5)

Definition at line 111 of file wallet2.cpp.

◆ RECENT_OUTPUT_ZONE

#define RECENT_OUTPUT_ZONE   ((time_t)(RECENT_OUTPUT_DAYS * 86400))

Definition at line 113 of file wallet2.cpp.

◆ SECOND_OUTPUT_RELATEDNESS_THRESHOLD

#define SECOND_OUTPUT_RELATEDNESS_THRESHOLD   0.0f

Definition at line 118 of file wallet2.cpp.

◆ SEGREGATION_FORK_HEIGHT

#define SEGREGATION_FORK_HEIGHT   99999999

Definition at line 127 of file wallet2.cpp.

◆ SEGREGATION_FORK_VICINITY

#define SEGREGATION_FORK_VICINITY   1500 /* blocks */

Definition at line 130 of file wallet2.cpp.

◆ SIGNED_TX_PREFIX

#define SIGNED_TX_PREFIX   "Electroneum signed tx set\004"

Definition at line 108 of file wallet2.cpp.

◆ STAGENET_SEGREGATION_FORK_HEIGHT

#define STAGENET_SEGREGATION_FORK_HEIGHT   99999999

Definition at line 129 of file wallet2.cpp.

◆ SUBADDRESS_LOOKAHEAD_MAJOR

#define SUBADDRESS_LOOKAHEAD_MAJOR   50

Definition at line 120 of file wallet2.cpp.

◆ SUBADDRESS_LOOKAHEAD_MINOR

#define SUBADDRESS_LOOKAHEAD_MINOR   200

Definition at line 121 of file wallet2.cpp.

◆ TESTNET_SEGREGATION_FORK_HEIGHT

#define TESTNET_SEGREGATION_FORK_HEIGHT   99999999

Definition at line 128 of file wallet2.cpp.

◆ TX_WEIGHT_TARGET

#define TX_WEIGHT_TARGET (   bytes)    (bytes*2/3)

Definition at line 100 of file wallet2.cpp.

◆ UNSIGNED_TX_PREFIX

#define UNSIGNED_TX_PREFIX   "Electroneum unsigned tx set\004"

Definition at line 107 of file wallet2.cpp.