aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core/blockchain.cpp (follow)
AgeCommit message (Collapse)AuthorFilesLines
2018-01-10Merge pull request #2971Riccardo Spagni1-2/+2
ae860230 Fix exceptions not finding txpool txes when relaying (moneromooo-monero)
2017-12-20Fix exceptions not finding txpool txes when relayingmoneromooo-monero1-2/+2
2017-12-18cryptonote_core: remove unused functions with off by one bugsmoneromooo-monero1-43/+0
2017-12-18blockchain: don't leave dangling pointers in thismoneromooo-monero1-0/+2
2017-12-18cryptonote_core: fix db leak on errormoneromooo-monero1-0/+1
2017-12-18check accessing an element past the end of a containermoneromooo-monero1-4/+6
2017-12-18fix a few leaks by throwing objects, not newed pointers to objectsmoneromooo-monero1-1/+1
2017-12-16Merge pull request #2878Riccardo Spagni1-5/+6
abebe392 rpc: add offline state in info rpc (moneromooo-monero) 7696e849 core: make --offline also disable DNS lookups (moneromooo-monero)
2017-12-08add bulletproofs from v7 on testnetmoneromooo-monero1-9/+26
2017-11-30core: make --offline also disable DNS lookupsmoneromooo-monero1-5/+6
2017-11-14remove "using namespace std" from headersmoneromooo-monero1-0/+2
It's nasty, and actually breaks on Solaris, where if.h fails to build due to: struct map *if_memmap;
2017-11-14Merge pull request #2615Riccardo Spagni1-4/+4
10013e94 Protect node privacy by proper filtering in restricted-mode RPC answers (binaryFate)
2017-11-08Protect node privacy by proper filtering in restricted-mode RPC answersbinaryFate1-4/+4
This patch allows to filter out sensitive information for queries that rely on the pool state, when running in restricted mode. This filtering is only applied to data sent back to RPC queries. Results of inline commands typed locally in the daemon are not affected. In practice, when running with `--restricted-rpc`: * get_transaction_pool will list relayed transactions with the fields "last relayed time" and "received time" set to zero. * get_transaction_pool will not list transaction that have do_not_relay set to true, and will not list key images that are used only for such transactions * get_transaction_pool_hashes.bin will not list such transaction * get_transaction_pool_stats will not count such transactions in any of the aggregated values that are computed The implementation does not make filtering the default, so developers should be mindful of this if they add new RPC functionality. Fixes #2590.
2017-11-06track double spending in the txpoolmoneromooo-monero1-6/+6
Transactions in the txpool are marked when another transaction is seen double spending one or more of its inputs. This is then exposed wherever appropriate. Note that being marked with this "double spend seen" flag does NOT mean this transaction IS a double spend and will never be mined: it just means that the network has seen at least another transaction spending at least one of the same inputs, so care should be taken to wait for a few confirmations before acting upon that transaction (ie, mostly of use for merchants wanting to accept unconfirmed transactions).
2017-10-30blockchain: do not lock the blockchain lock for simple DB gettersmoneromooo-monero1-7/+28
It is safe in those cases, though might return slightly out of date information if another thread is busy modifying the blockchain, but it avoids potentially lengthy delays just to get things like the current blockchain height.
2017-10-15Merge pull request #2656Riccardo Spagni1-3/+3
3492de01 fix lightwallet and subaddresses conflict (Jaquee) 329f149e remove reference to cryptonote::null_hash (Jaquee)
2017-10-15remove reference to cryptonote::null_hashJaquee1-3/+3
2017-10-15Merge pull request #2640Riccardo Spagni1-2/+12
22b51e06 db_lmdb: include chain height when failing to find an output key (moneromooo-monero) 5db433b3 blockchain: avoid exceptions in output verification (moneromooo-monero)
2017-10-15Merge pull request #2552Riccardo Spagni1-9/+18
69ce33f2 core: fix failure to sync when a tx is already in the pool (moneromooo-monero)
2017-10-15Merge pull request #2469Riccardo Spagni1-9/+119
7adceee6 precomputed block hashes are now in blocks of N (currently 256) (moneromooo-monero)
2017-10-12blockchain: avoid exceptions in output verificationmoneromooo-monero1-2/+12
This can happen if we get a bad tx, so let's not spam the log.
2017-10-06Merge pull request #2537Riccardo Spagni1-2/+2
269a2a01 blockchain: fix off by one getting blocks (moneromooo-monero)
2017-09-29core: fix failure to sync when a tx is already in the poolmoneromooo-monero1-9/+18
2017-09-27core: remove out sorting from v7 rulesmoneromooo-monero1-20/+0
and restore random shuffle of outputs This turned out to have a flaw (sort order depends on output index), and this doesn't really bring much anyway
2017-09-27blockchain: fix off by one getting blocksmoneromooo-monero1-2/+2
2017-09-25move checkpoints in a separate librarymoneromooo-monero1-1/+0
2017-09-25Merge pull request #2457Riccardo Spagni1-1/+10
d2d8a41c Use actual batch size for resize estimates (Howard Chu)
2017-09-25Merge pull request #2440Riccardo Spagni1-0/+39
6137a0b9 blockchain: reject unsorted ins and outs from v7 (moneromooo-monero) 16afab90 core: sort ins and outs key key image and public key, respectively (moneromooo-monero) 0c36b9f9 common: add apply_permutation file and function (moneromooo-monero)
2017-09-20blockchain: fix crash checking pre-validated txidsmoneromooo-monero1-2/+2
2017-09-18precomputed block hashes are now in blocks of N (currently 256)moneromooo-monero1-9/+119
This shaves a lot of space off binaries
2017-09-18Merge pull request #2446Riccardo Spagni1-56/+16
6d0ca7d1 Tweak concurrency limits (Howard Chu) 510d0d47 Use a threadpool (Howard Chu)
2017-09-18Merge pull request #2044Riccardo Spagni1-74/+129
0299cb77 Fix various oversights/bugs in ZMQ RPC server code (Thomas Winget) 77986023 json serialization for rpc-relevant monero types (Thomas Winget) 5c1e08fe Refactor some things into more composable (smaller) functions (Thomas Winget) 9ac2ad07 DRY refactoring (Thomas Winget)
2017-09-18blockchain: reject unsorted ins and outs from v7moneromooo-monero1-0/+39
This ensures no information is leaked by the ordering
2017-09-17Use actual batch size for resize estimatesHoward Chu1-1/+10
And optimize import startup: Remember start_height position during initial count_blocks pass to avoid having to reread entire file again to arrive at start_height
2017-09-14Use a threadpoolHoward Chu1-56/+16
Instead of constantly creating and destroying threads
2017-09-06update checkpoint hashesRiccardo Spagni1-1/+1
2017-09-05json serialization for rpc-relevant monero typesThomas Winget1-1/+1
Structured {de-,}serialization methods for (many new) types which are used for requests or responses in the RPC. New types include RPC requests and responses, and structs which compose types within those. # Conflicts: # src/cryptonote_core/blockchain.cpp
2017-09-05Refactor some things into more composable (smaller) functionsThomas Winget1-73/+123
This commit refactors some of the rpc-related functions in the Blockchain class to be more composable. This change was made in order to make implementing the new zmq rpc easier without trampling on the old rpc. New functions: Blockchain::get_num_mature_outputs Blockchain::get_random_outputs Blockchain::get_output_key Blockchain::get_output_key_mask_unlocked Blockchain::find_blockchain_supplement (overload) functions which previously had this functionality inline now call these functions as necessary.
2017-08-31DRY refactoringThomas Winget1-1/+6
2017-08-29Fix blockchain_import wedge on exception in cleanup_handle_incoming_blocksmoneromooo-monero1-3/+14
2017-08-27Merge pull request #2347Riccardo Spagni1-2/+7
5807529e blockchain: cap memory size of retrieved blocks (moneromooo-monero) c1b10381 rpc: decrease memory usage a bit in getblocks.bin (moneromooo-monero)
2017-08-26Merge pull request #2314Riccardo Spagni1-1/+18
c22d22e2 Cleanup test impact of adding safesyncmode() method (Howard Chu) 9a859844 Toggle SAFE syncmode on and off automatically (Howard Chu)
2017-08-26blockchain: cap memory size of retrieved blocksmoneromooo-monero1-2/+7
It helps keep memory usage down when a wallet refreshes through a string of large blocks
2017-08-20Toggle SAFE syncmode on and off automaticallyHoward Chu1-1/+18
If monerod is started with default sync mode, set it to SAFE after synchronization completes. Set it back to FAST if synchronization restarts (e.g. because another peer has a longer blockchain). If monerod is started with an explicit sync mode, none of this automation takes effect.
2017-08-18core: add mainnet v6 fork height at 1400000moneromooo-monero1-0/+3
2017-08-15protocol: pass blockchain cumulative difficulty when syncingmoneromooo-monero1-0/+1
Not used yet.
2017-08-15Merge pull request #2250Riccardo Spagni1-1/+3
f4f7eeba blockchain: log more info when we reject an orphan (moneromooo-monero)
2017-08-15Merge pull request #2246Riccardo Spagni1-11/+3
d732c73e blockchain: remove a few unused variables (moneromooo-monero)
2017-08-15Merge pull request #2237Riccardo Spagni1-8/+8
5d4ef719 core: speed up output index unique set calculation (moneromooo-monero) 19d7f568 perf_timer: allow profiling more granular than millisecond (moneromooo-monero) bda8c598 epee: add nanosecond timer and pause/restart profiling macros (moneromooo-monero)
2017-08-07change mixin to ring size in user visible placesmoneromooo-monero1-6/+6
2017-08-07Merge pull request #2225Riccardo Spagni1-0/+9
5d91b26c blockchain: skip checking tx semantics in embedded block hash range (moneromooo-monero)
2017-08-07Merge pull request #2243Riccardo Spagni1-0/+2
4d873046 blockchain: add testnet v6 fork height at 971400 (moneromooo-monero)
2017-08-07Merge pull request #2222Riccardo Spagni1-1/+2
878205f1 core: fix lock ordering bug at init time (moneromooo-monero)
2017-08-07Merge pull request #2216Riccardo Spagni1-6/+6
d8becf2e blockchain: fix cryptonight buffer leak on exit (moneromooo-monero) 91aa90fc blockchain: ensure all blocks get their longhash precalculated (moneromooo-monero) ff4bcaed blockchain: pass correct height to get_block_longhash (moneromooo-monero)
2017-08-07blockchain: add testnet v6 fork height at 971400moneromooo-monero1-0/+2
2017-08-04blockchain: log more info when we reject an orphanmoneromooo-monero1-1/+3
We want to know what happened when a block is wrongly rejected
2017-08-03blockchain: remove a few unused variablesmoneromooo-monero1-11/+3
2017-08-01core: speed up output index unique set calculationmoneromooo-monero1-8/+8
A sort+uniq step was done for every tx in a 200 block chunk, causing a lot of repeated scanning as the size of the offset map got larger with every added tx. We now do the step only once at the end of the loop. Doing it this way potentially uses more memory, but testing shows that it's currently only about 2% more.
2017-07-30blockchain: skip checking tx semantics in embedded block hash rangemoneromooo-monero1-0/+9
If the txes are bad, this'll be picked up by the block hash mismatch since the tx merkle root is part of the block hash.
2017-07-29core: fix lock ordering bug at init timemoneromooo-monero1-1/+2
2017-07-28blockchain: fix cryptonight buffer leak on exitmoneromooo-monero1-1/+1
2017-07-27blockchain: ensure all blocks get their longhash precalculatedmoneromooo-monero1-1/+3
If the number of blocks to check was not a multiple of the number of preparation threads, the last few blocks would not be included in the threaded long hash calculation. Those would still get calculated when the block gets added to the chain, however, so this was only a tiny performance hit, rather than a security bug.
2017-07-27blockchain: pass correct height to get_block_longhashmoneromooo-monero1-4/+2
2017-07-24blockchain: one off warning when seeing a block with unknown versionmoneromooo-monero1-0/+14
2017-06-11blockchain_db: add a txpool tx getter which returns existencemoneromooo-monero1-0/+5
Avoids exception spam for the "nope, not found" case
2017-06-01Don't copy blockchain for coinbase_tx_sumHoward Chu1-2/+2
Changed Blockchain::for_all_blocks() to for_blocks_range() Operate on blockchain in-place instead of building a copy first.
2017-05-30Merge pull request #1982Riccardo Spagni1-3/+71
b52abd13 Move txpool to the database (moneromooo-monero)
2017-05-25Move txpool to the databasemoneromooo-monero1-3/+71
Integration could go further (ie, return_tx_to_pool calls should not be needed anymore, possibly other things). poolstate.bin is now obsolete.
2017-04-24Merge pull request #1968Riccardo Spagni1-1/+3
5e5b8512 Fix obsolete OpenSSL API usage (hyc) 6c72d6a0 Fix Android recognition (hyc) e65d66fe Fix ARM64 identification (hyc) a4673218 Clean up ARMv8-a aes_expand_key() (hyc) a3d77901 Fix block_longhash_worker thread (hyc)
2017-04-19Add expected total reward to RPC "getblocktemplate".assylias1-2/+2
Only works from V5 fork onward - returns 0 before that block.
2017-04-12Fix block_longhash_worker threadhyc1-1/+3
Wasn't getting its stack size initialized; crashes on Android with a default stack size of 1MB.
2017-03-24Fixed typo in v5 hard fork finalized dateDerek Zhang1-1/+1
2017-03-24blockchain: offset v5 addition date on testnetmoneromooo-monero1-1/+1
to silence the update warning, since v5 was done very early on testnet
2017-03-20blockchain: lower the relay fee by 2%moneromooo-monero1-1/+1
This ensures we accept txes with a fee that's slightly too small, to accomodate blockchain median jitter
2017-03-15Add intervening v5 fork for increased min block sizemoneromooo-monero1-14/+19
Minimum mixin 4 and enforced ringct is moved from v5 to v6. v5 is now used for an increased minimum block size (from 60000 to 300000) to cater for larger typical/minimum transaction size. The fee algorithm is also changed to decrease the base per kB fee, and add a cheap tier for those transactions which we do not care if they get delayed (or even included in a block).
2017-03-05blockchain: don't try to load an empty block hash setmoneromooo-monero1-1/+1
If the blocks aren't being linked against a binary (such as one of the blockchain utilities), the symbol will not be NULL, but the size will be 0. This avoids a apurious warning about the data hash.
2017-03-03core: quantize per kB fee to 8 decimalsmoneromooo-monero1-1/+19
2017-02-23core: protect precomputed block hashes with SHA256moneromooo-monero1-1/+28
2017-02-21update copyright year, fix occasional lack of newline at line endRiccardo Spagni1-1/+1
2017-02-21Merge pull request #1727Riccardo Spagni1-22/+69
0288310e blockchain_db: add "raw" blobdata getters for block and transaction (moneromooo-monero)
2017-02-21Merge pull request #1724Riccardo Spagni1-1/+1
cca95c1c blockchain_db: do not throw on expected partial results getting keys (moneromooo-monero)
2017-02-18Add a few read txns to streamlineHoward Chu1-0/+4
Slight perf gain, but mainly to reduce spam at loglevel 3
2017-02-13blockchain_db: add "raw" blobdata getters for block and transactionmoneromooo-monero1-22/+69
This speeds up operations such as serving blocks to syncing peers
2017-02-13blockchain_db: do not throw on expected partial results getting keysmoneromooo-monero1-1/+1
When scanning for outputs used in a set of incoming blocks, we expect that some of the inputs in their transactions will not be found in the blockchain, as they could be in previous blocks in that set. Those outputs will be scanned there at a later point. In this case, we add a flag to control wehther an output not being found is expected or not.
2017-02-08extract some basic code from libcryptonote_core into libcryptonote_basickenshi841-6/+5
2017-01-22Replace BOOST_REVERSE_FOREACH with ranged forMiguel Herranz1-1/+2
2017-01-22rpc: fix orphan_status when getting blocksmoneromooo-monero1-1/+5
It was always set to false, even for orphan blocks
2017-01-16Change logging to easylogging++moneromooo-monero1-128/+132
This replaces the epee and data_loggers logging systems with a single one, and also adds filename:line and explicit severity levels. Categories may be defined, and logging severity set by category (or set of categories). epee style 0-4 log level maps to a sensible severity configuration. Log files now also rotate when reaching 100 MB. To select which logs to output, use the MONERO_LOGS environment variable, with a comma separated list of categories (globs are supported), with their requested severity level after a colon. If a log matches more than one such setting, the last one in the configuration string applies. A few examples: This one is (mostly) silent, only outputting fatal errors: MONERO_LOGS=*:FATAL This one is very verbose: MONERO_LOGS=*:TRACE This one is totally silent (logwise): MONERO_LOGS="" This one outputs all errors and warnings, except for the "verify" category, which prints just fatal errors (the verify category is used for logs about incoming transactions and blocks, and it is expected that some/many will fail to verify, hence we don't want the spam): MONERO_LOGS=*:WARNING,verify:FATAL Log levels are, in decreasing order of priority: FATAL, ERROR, WARNING, INFO, DEBUG, TRACE Subcategories may be added using prefixes and globs. This example will output net.p2p logs at the TRACE level, but all other net* logs only at INFO: MONERO_LOGS=*:ERROR,net*:INFO,net.p2p:TRACE Logs which are intended for the user (which Monero was using a lot through epee, but really isn't a nice way to go things) should use the "global" category. There are a few helper macros for using this category, eg: MGINFO("this shows up by default") or MGINFO_RED("this is red"), to try to keep a similar look and feel for now. Existing epee log macros still exist, and map to the new log levels, but since they're used as a "user facing" UI element as much as a logging system, they often don't map well to log severities (ie, a log level 0 log may be an error, or may be something we want the user to see, such as an important info). In those cases, I tried to use the new macros. In other cases, I left the existing macros in. When modifying logs, it is probably best to switch to the new macros with explicit levels. The --log-level options and set_log commands now also accept category settings, in addition to the epee style log levels.
2017-01-15Merge pull request #1577Riccardo Spagni1-0/+8
feb499aa core: check block version for alt chains too (moneromooo-monero)
2017-01-15Merge pull request #1576Riccardo Spagni1-6/+3
ba3968f6 rct: split rct checks between semantics and other (moneromooo-monero)
2017-01-15Merge pull request #1571Riccardo Spagni1-8/+8
81c384e4 fix do_not_relay not preventing relaying on a timer (moneromooo-monero)
2017-01-15Merge pull request #1565Riccardo Spagni1-0/+2
50b230d1 core: ensure block size limit is set from the start (moneromooo-monero)
2017-01-15Merge pull request #1506Riccardo Spagni1-2/+12
3ff54bdd Check for correct thread before ending batch transaction (Howard Chu) eaf8470b Must wait for previous batch to finish before starting new one (Howard Chu) c903c554 Don't cache block height, always get from DB (Howard Chu) eb1fb601 Tweak default db-sync-mode to fast:async:1 (Howard Chu) 0693cff9 Use batch transactions when syncing (Howard Chu)
2017-01-14Must wait for previous batch to finish before starting new oneHoward Chu1-1/+6
2017-01-14Use batch transactions when syncingHoward Chu1-2/+7
Faster throughput while avoiding corruption. I.e., makes running with --db-sync-mode safe more tolerable.
2017-01-14core: check block version for alt chains toomoneromooo-monero1-0/+8
This is incompatible with block version voting
2017-01-14rct: split rct checks between semantics and othermoneromooo-monero1-6/+3
Semantics can be checked early
2017-01-14fix do_not_relay not preventing relaying on a timermoneromooo-monero1-8/+8
Also print its value when printing pool
2017-01-13core: ensure block size limit is set from the startmoneromooo-monero1-0/+2
It can now be queried by RPC, so it needs to be set before it is otherwise needed for consensus, even if no blocks had to be added (ie, exit and restart quickly).
2017-01-13Merge pull request #1555Riccardo Spagni1-3/+6
758c0eb7 fix time stats mixin (luigi1111)
2017-01-10fix time stats mixinluigi11111-3/+6
also add blobsize
2017-01-09wallet cli: print originating block heights of mixin keys when making transferkenshi841-1/+1
2017-01-08Merge pull request #1534Riccardo Spagni1-1/+1
1607cb7e tx_pool: better block template filling algorithm (moneromooo-monero) 9731b4e5 rpc: add block size to GET_BLOCK_HEADER RPC (moneromooo-monero) 9188b346 rpc: add current block size to the getinfo call (moneromooo-monero)
2017-01-08Merge pull request #1502Riccardo Spagni1-0/+1
591d8368 core: invalidate difficulty cache when resetting blockchain (moneromooo-monero)
2017-01-08Merge pull request #1493Riccardo Spagni1-5/+5
0478ac68 blockchain: allow marking "tx not found" without an exception (moneromooo-monero)
2017-01-07blockchain: allow marking "tx not found" without an exceptionmoneromooo-monero1-5/+5
This is a normal occurence in many cases, and there is no need to spam the log with those when it is.
2017-01-07tx_pool: better block template filling algorithmmoneromooo-monero1-1/+1
Continue filling until we reach the block size limit, or the resulting coinbase decreases. Also remove old sanity check on block size, which is now not wanted anymore.
2016-12-25core: invalidate difficulty cache when resetting blockchainmoneromooo-monero1-0/+1
2016-12-21add tx hash to time statsluigi11111-2/+5
Also miner tx hash to log level 1 (have you ever tried to find a testnet miner tx hash?)
2016-12-20Merge pull request #1467Riccardo Spagni1-0/+32
55fa0479 rpc: new function and RPC to get alternative chain info (moneromooo-monero)
2016-12-20also use portable serializer for boost_serialization_helper.h and ↵kenshi841-2/+0
net_node.inl, completely adandon boost/archive/binary_oarchive.hpp
2016-12-17rpc: new function and RPC to get alternative chain infomoneromooo-monero1-0/+32
2016-12-13blockchain: fix reorganizations past a hard fork boundarymoneromooo-monero1-0/+3
After popping blocks from the old chain, the hard fork object's notion of the current version was not in line with the new height, causing the first blocks from the new chain to be rejected due to a false expection of a newer version.
2016-12-10Merge pull request #1418Riccardo Spagni1-4/+4
dfbb85b6 blockchain: fix setting non trovial alternate chain as invalid (moneromooo-monero)
2016-12-08blockchain: fix setting non trovial alternate chain as invalidmoneromooo-monero1-4/+4
The wrong iterator was being used. Also preincrement iterators to avoid possibly invalidating them, I'm not sure this is necessary, but let's be safe.
2016-12-06blockchain: bring the v4 fork height one block forwardluigi11111-3/+3
This will ensure the early 0.10 daemons will barf at the fork height, and not a bit later, which could be confusing.
2016-12-04Merge pull request #1398Riccardo Spagni1-3/+3
f4772bae Fix a few minor typos (Pierre Boyer)
2016-12-04Merge pull request #1397Riccardo Spagni1-1/+20
3f7d6fb5 Fix delayed exit when syncing (moneromooo-monero)
2016-12-04Merge pull request #1392Riccardo Spagni1-1/+7
204b1bff blockchain: use high bound block reward on error where appropriate (moneromooo-monero)
2016-12-04Fix a few minor typosPierre Boyer1-3/+3
2016-12-04Fix delayed exit when syncingmoneromooo-monero1-1/+20
2016-12-01blockchain: use high bound block reward on error where appropriatemoneromooo-monero1-1/+7
If the block reward to use for the fee calculation can't be calculated (should not happen in practice), use a high bound, so we use a fee overestimate that will be accepted by the network.
2016-11-28blockchain: reject invalid pubkeys from v4moneromooo-monero1-0/+13
2016-11-22Add a get_outs (fully text based) version of get_outs.binmoneromooo-monero1-1/+1
2016-10-31rpc: add a dynamic fee estimation RPC callmoneromooo-monero1-0/+30
2016-10-31core: dynamic fee algorithm from ArticMinemoneromooo-monero1-0/+52
The fee will vary based on the base reward and the current block size limit: fee = (R/R0) * (M0/M) * F0 R: base reward R0: reference base reward (10 monero) M: block size limit M0: minimum block size limit (60000) F0: 0.002 monero Starts applying at v4
2016-10-15wallet: select part of the fake outs from recent outputsmoneromooo-monero1-2/+2
25% of the outputs are selected from the last 5 days (if possible), in order to avoid the common case of sending recently received outputs again. 25% and 5 days are subject to review later, since it's just a wallet level change.
2016-10-10Add performance timers for ringct tx verificationmoneromooo-monero1-0/+3
2016-10-04Merge pull request #1177Riccardo Spagni1-1/+1
3644aa9 blockchain: avoid using a reference to a temporary (moneromooo-monero)
2016-10-04Merge pull request #1123Riccardo Spagni1-8/+0
0d036be blockchain: do not reject chain histories matching only genesis (moneromooo-monero)
2016-10-03blockchain: avoid using a reference to a temporarymoneromooo-monero1-1/+1
2016-10-03Moved logging to target functions rather than callerNanoAkron1-6/+8
2016-09-24blockchain: do not reject chain histories matching only genesismoneromooo-monero1-8/+0
This is fine if our local chain is so small that it is entirely contained within the last jump in the peer's short chain history.
2016-09-18fix v5 heightRiccardo Spagni1-1/+1
2016-09-18fix v5 fork date descriptionRiccardo Spagni1-1/+1
2016-09-18updated fork heights for v4 and v5Riccardo Spagni1-0/+7
2016-09-15compile errors fixed when PER_BLOCK_CHECKPOINT not definedrckngOpossum1-1/+3
2016-09-15compile errors fixed when DEBUG_CREATE_BLOCK_TEMPLATE definedrckngOpossum1-1/+1
2016-09-01Merge pull request #1022Riccardo Spagni1-1/+1
b8c03a5 Remove blocks_per_sync limits (Howard Chu)
2016-08-31core: faster find_blockchain_supplementmoneromooo-monero1-6/+2
Since this queries block heights for blocks that may or may not exist, queries for non existing blocks would throw an exception, and that would slow down the loop a lot. 7 seconds to go through a 30 hash list. Fix this by adding an optional return block height to block_exists and using this instead. Actual errors will still throw an exception. This also cuts down on log exception spam.
2016-08-31Remove blocks_per_sync limitsHoward Chu1-1/+1
The code used to cap at 5000 blocks per sync. It also treated 0 as 1. Remove these checks; if specified as 0 do no periodic syncs at all. Then the user is responsible for syncing in some external process.
2016-08-29core: allow empty global indices for txes with empty voutmoneromooo-monero1-1/+6
2016-08-28blockchain: testnet heights for v3, v4, and v5moneromooo-monero1-0/+4
2016-08-28wallet: transfer_selected_rct now also selects fake outsmoneromooo-monero1-2/+2
2016-08-28increase minimum mixin to 4 on hard fork 5moneromooo-monero1-2/+3
2016-08-28core: allow v1 txes after HF 5 when sweeping unmixable outputsmoneromooo-monero1-1/+19
2016-08-28New "Halfway RingCT" outputs for coinbase transactionsmoneromooo-monero1-14/+10
When RingCT is enabled, outputs from coinbase transactions are created as a single output, and stored as RingCT output, with a fake mask. Their amount is not hidden on the blockchain itself, but they are then able to be used as fake inputs in a RingCT ring. Since the output amounts are hidden, their "dustiness" is not an obstacle anymore to mixing, and this makes the coinbase transactions a lot smaller, as well as helping the TXO set to grow more slowly. Also add a new "Null" type of rct signature, which decreases the size required when no signatures are to be stored, as in a coinbase tx.
2016-08-28rct: rework v2 txes into prunable and non prunable datamoneromooo-monero1-9/+15
Nothing is pruned, but this allows easier changes later.
2016-08-28rct: rework the verification preparation processmoneromooo-monero1-126/+96
The whole rct data apart from the MLSAGs is now included in the signed message, to avoid malleability issues. Instead of passing the data that's not serialized as extra parameters to the verification API, the transaction is modified to fill all that information. This means the transaction can not be const anymore, but it cleaner in other ways.
2016-08-28rct: change the simple flag to a typemoneromooo-monero1-3/+9
for future expansion
2016-08-28rct: avoid the need for the last II elementShen Noether1-8/+6
This element is used in the generation of the MLSAG, but isn't needed in verification. Also misc changes in the cryptonote code to match, by mooo.
2016-08-28core: add some locking around pool usemoneromooo-monero1-1/+3
2016-08-28change fork settings to allow pre-rct txes for one more fork cyclemoneromooo-monero1-1/+1
2016-08-28rct: do not serialize public keys in outPkmoneromooo-monero1-4/+31
They can be reconstructed from vout
2016-08-28integrate simple rct apimoneromooo-monero1-57/+155
2016-08-28mixable transactions must be rct for v3moneromooo-monero1-6/+28
2016-08-28move the rct commitments to the output_amounts databasemoneromooo-monero1-23/+2
Since these are needed at the same time as the output pubkeys, this is a whole lot faster, and takes less space. Only outputs of 0 amount store the commitment. When reading other outputs, a fake commitment is regenerated on the fly. This avoids having to rewrite the database to add space for fake commitments for existing outputs. This code relies on two things: - LMDB must support fixed size records per key, rather than per database (ie, all records on key 0 are the same size, all records for non 0 keys are same size, but records from key 0 and non 0 keys do have different sizes). - the commitment must be directly after the rest of the data in outkey and output_data_t.
2016-08-28ringct: do not serialize what can be reconstructedmoneromooo-monero1-20/+67
The mixRing (output keys and commitments) and II fields (key images) can be reconstructed from vin data. This saves some modest amount of space in the tx.
2016-08-28Use the supplied hard fork version in validate_miner_transactionmoneromooo-monero1-1/+1
rather than using the current one. No functional changes, but may save some bugs in the future.
2016-08-28add rct to the protocolmoneromooo-monero1-67/+212
It is not yet constrained to a fork, so don't use on the real network or you'll be orphaned or rejected.
2016-08-28core: new /getrandom_rctouts.bin binary RPC callmoneromooo-monero1-0/+98
to get random ringct outputs to mix with
2016-08-11Fake outs set is now decided by the walletmoneromooo-monero1-0/+19
This plugs a privacy leak from the wallet to the daemon, as the daemon could previously see what input is included as a transaction input, which the daemon hadn't previously supplied. Now, the wallet requests a particular set of outputs, including the real one. This can result in transactions that can't be accepted if the wallet happens to select too many outputs with non standard unlock times. The daemon could know this and select another output, but the wallet is blind to it. It's currently very unlikely since I don't think anything uses non default unlock times. The wallet requests more outputs than necessary so it can use spares if any of the returns outputs are still locked. If there are not enough spares to reach the desired mixin, the transaction will fail.
2016-08-01new unlocked parameter to output_histogrammoneromooo-monero1-2/+2
This constrains the number of instances of any amount to the unlocked ones (as defined by the default unlock time setting: outputs with non default unlock time are not considered, so may be counted as unlocked even if they are not actually unlocked).
2016-04-29Merge branch 'performance' of https://github.com/LMDB/bitmoneroRiccardo Spagni1-2/+3
2016-04-28add a --max-concurrency flagmoneromooo-monero1-3/+3
It sets the max number of threads to use for a parallel job. This is different that the number of total threads, since monero binaries typically start a lot of them.
2016-04-17blockchain: add missing overflow check for already generated coinsmoneromooo-monero1-1/+5
When reaching the tail emission phase, the amount of coins will eventually go over MONEY_SUPPLY, overflowing 64 bits. There was a check added to blockchain_storage, but this was not ported to the blockchain DB version. Reported by smooth.
2016-04-17blockchain: update cumulative block limit when popping a blockmoneromooo-monero1-0/+1
Avoids possible issues with accepting a tx too large to fit in an actual block. Reported by smooth.
2016-04-14Merge pull request #784Riccardo Spagni1-0/+1
087373e Fix potential race with parallel processing of txes/signatures/blocks (moneromooo-monero)
2016-04-06blockchain: remove the tx validation result cachemoneromooo-monero1-18/+0
As pointed out by smooth, a transaction's validity may change over time as the blockchain changes.
2016-04-05Merge branch 'performance' into masterHoward Chu1-2/+3
2016-04-05Schema update: tx_indices - improve further with less indirectionwarptangent1-2/+3
2016-04-02Fix potential race with parallel processing of txes/signatures/blocksmoneromooo-monero1-0/+1
2016-04-02Merge pull request #767Riccardo Spagni1-5/+10
24b3e90 Convey tx verification failure reasons to the RPC client (moneromooo-monero)
2016-03-27Merge pull request #765Riccardo Spagni1-0/+5
d5d46e6 tests: obligatory hardfork unit build fix after interface change (moneromooo-monero) 25672d3 wallet: pass std::function by const ref, not value (moneromooo-monero) 0be6e08 wallet: do not leak owned amounts to the daemon unless --trusted-daemon (moneromooo-monero) 12146da wallet: change sweep_dust to sweep_unmixable (moneromooo-monero) 600a3cf New RPC and daemon command to get output histogram (moneromooo-monero) f9a2fd2 wallet: handle rare case where fee adjustment can bump to the next kB (moneromooo-monero) f26651a wallet: factor fee calculation (moneromooo-monero)
2016-03-27Convey tx verification failure reasons to the RPC clientmoneromooo-monero1-5/+10
This allows appropriate action to be taken, like displaying the reason to the user. Do just that in simplewallet, which should help a lot in determining why users fail to send. Also make it so a tx which is accepted but not relayed is seen as a success rather than a failure.
2016-03-26New RPC and daemon command to get output histogrammoneromooo-monero1-0/+5
This is a list of existing output amounts along with the number of outputs of that amount in the blockchain. The daemon command takes: - no parameters: all outputs with at least 3 instances - one parameter: all outputs with at least that many instances - two parameters: all outputs within that many instances The default starts at 3 to avoid massive spamming of all dust outputs in the blockchain, and is the current minimum mixin requirement. An optional vector of amounts may be passed, to request histogram only for those outputs.
2016-03-25blockchain: for v3, require miner tx to have well behaved outsmoneromooo-monero1-2/+11
This was meant to go in v2, but the miner tx slipped through the cracks as it doesn't go through the main tx verification since it doesn't get added to the pool.
2016-03-25Merge pull request #749Riccardo Spagni1-10/+39
bfd4a28 Update BlockchainDB documentation (Thomas Winget) 797357e Change Doxyfile, Blockchain not blockchain_storage (Thomas Winget) c835215 remove defunct code from cryptonote::core (Thomas Winget) 50dba6d cryptonote::core doxygen documentation (Thomas Winget) 8ac329d doxygen documentation for difficulty functions (Thomas Winget) 540a76c Move checkpoint functions into checkpoints class (Thomas Winget) 1b0c98e doxygen documentation for checkpoints.{h,cpp} (Thomas Winget) 89c24ac Remove unnecessary or defunct code (Thomas Winget) ab0ed14 doxygen include private and static members (Thomas Winget) 3a48449 Updated documentation for blockchain.* (Thomas Winget)
2016-03-25Revert "Merge pull request #749"Riccardo Spagni1-39/+10
This reverts commit 7fa63a82a1c3a0243f6757c1689855ed3ca61695, reversing changes made to cb6be986c36b78eddb4b7f16e9ad440af8567dc4.
2016-03-25Merge pull request #749Riccardo Spagni1-10/+39
bfd4a28 Update BlockchainDB documentation (Thomas Winget) 797357e Change Doxyfile, Blockchain not blockchain_storage (Thomas Winget) c835215 remove defunct code from cryptonote::core (Thomas Winget) 50dba6d cryptonote::core doxygen documentation (Thomas Winget) 8ac329d doxygen documentation for difficulty functions (Thomas Winget) 540a76c Move checkpoint functions into checkpoints class (Thomas Winget) 1b0c98e doxygen documentation for checkpoints.{h,cpp} (Thomas Winget) 89c24ac Remove unnecessary or defunct code (Thomas Winget) ab0ed14 doxygen include private and static members (Thomas Winget) 3a48449 Updated documentation for blockchain.* (Thomas Winget)
2016-03-24Move checkpoint functions into checkpoints classThomas Winget1-5/+5
The functions in src/cryptonote_core/checkpoints_create.{h,cpp} should be member functions of the checkpoints class, if nothing else for the sake of keeping their documentation together. This commit covers moving those functions to be member functions of the checkpoints class as well as documenting those functions.
2016-03-22Remove unnecessary or defunct codeThomas Winget1-1/+0
2016-03-22Updated documentation for blockchain.*Thomas Winget1-5/+35
All functions are now documented in doxygen format. Comments have been updated to reflect the current state of the code. Many areas for improvement in clarity and design have been noted, as well as cruft to be removed. These changes are not reflected in this commit both to allow time for comment and to keep commits organized by purpose.
2016-03-22blockchain: fix partial block reward detectionmoneromooo-monero1-1/+1
2016-03-21also maybe do the block height this time, you know, just so that it actually ↵Riccardo Spagni1-1/+1
works.
2016-03-21also update the timestamp for the hard forkRiccardo Spagni1-1/+1
2016-03-21set fork date for September, add hyc's GPG key, remove aabramov'sRiccardo Spagni1-0/+3
2016-03-19Fix issue #706Howard Chu1-0/+1
2016-03-11Use boost::thread instead of std::threadHoward Chu1-3/+3
and all other associated IPC
2016-03-03Blockchain: Omit verbose time stats messages by defaultwarptangent1-1/+1
This is already the default for the daemon, but by checking a command line argument and calling a Blockchain member function setter. Initialize the variable to false so it's not dependent on an external command-line argument check. This allows utilities like blockchain_import to have a reasonable default without code changes.
2016-02-23Wrap some more actions in a larger read txnHoward Chu1-11/+25
2016-02-23read txn/cursor stuffHoward Chu1-0/+9
Could wrap more later.
2016-02-08blockchain: initialize m_hardfork to NULLmoneromooo-monero1-1/+1
It can now be set by some other code, and is thus tested
2016-02-08core_tests: add tests for hard fork behaviors (MRL-0004)moneromooo-monero1-5/+15
We also replace the --fakechain option with an optional structure containing details about configuration for the core/blockchain, for test purposes. This seems more future friendly.
2016-02-08blockchain: reset hardfork object when resetting blockchainmoneromooo-monero1-0/+1
Not doing so will prevent the new genesis block from being reset if a switch past v1 had occured already.
2016-02-08Blockchain: Update comments on removing blockwarptangent1-0/+5
2016-02-08Move HardFork DB update to BlockchainDB::add_block()warptangent1-3/+0
Ensures the database is consistent. Also simplifes blockchain_import in that verify mode off has less to work around.
2016-02-08Make HardFork object available to BlockchainDB and derived DB implementationswarptangent1-0/+2
This will later allow the HardFork object's DB update functions to be called when the DB transaction that persists across block add/remove is open.
2016-02-08Blockchain: Optionally pass in HardFork objectwarptangent1-4/+20
2016-02-03blockchain: revert handle_get_objects adding block id on tx not foundmoneromooo-monero1-1/+0
This differs from the original CN code, and there seems to be no reason to include the block itself, if it was found