aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-10-25Add functions to iterate through blocks, txes, outputs, key imagesmoneromooo-monero9-0/+362
2015-10-25db_bdb: record numbers for recno databases start at 1moneromooo-monero1-3/+3
2015-10-25db_bdb: DB_KEYEMPTY is also not found for non-top recon fieldsmoneromooo-monero1-2/+2
2015-10-25blockchain_db: use the DNE exceptions where appropriatemoneromooo-monero2-17/+19
2015-10-20Merge pull request #437Riccardo Spagni14-52/+424
b13e7f2 blockchain_export can now export to a blocks.dat format (moneromooo-monero) 11db442 bootstrap_file: do not try to create a directory with an empty name (moneromooo-monero) 03bc610 hardfork: use DB transactions when reorganizing (moneromooo-monero) 439c455 hardfork: simplify work done on reload (moneromooo-monero)
2015-10-17blockchain_export can now export to a blocks.dat formatmoneromooo-monero11-38/+368
Also make the number of blocks endian independant, and add support for testnet
2015-10-17bootstrap_file: do not try to create a directory with an empty namemoneromooo-monero1-10/+13
This will happen if the chosen output file does not have a path specified
2015-10-17hardfork: use DB transactions when reorganizingmoneromooo-monero1-3/+3
It speeds up a lot, which can be significant when reorganizing from the genesis block to create the hard fork data.
2015-10-17hardfork: simplify work done on reloadmoneromooo-monero2-1/+40
There is no need to fully recalculate and rewrite state, just refill state from the DB.
2015-10-15Merge pull request #432Riccardo Spagni1-1/+1
5ea2f93 wallet2: really include non canonical outputs in dust sweep (moneromooo-monero)
2015-10-15Merge pull request #431Riccardo Spagni4-8/+110
253ed76 core_rpc_server: add optional json decoded tx to COMMAND_RPC_GET_TRANSACTIONS (moneromooo-monero) ca23c0e core_rpc_server: add a getblock RPC command, and fix print_block (moneromooo-monero)
2015-10-15Merge pull request #429Riccardo Spagni2-0/+112
1ce2621 simplewallet: add a check_tx_key command (moneromooo-monero) 0f6d3aa simplewallet: hide start_mining behind --trusted-daemon (moneromooo-monero)
2015-10-14simplewallet: add a check_tx_key commandmoneromooo-monero2-0/+106
It allows one to check the amount of monero sent to a particular address in a particular transaction, given that transaction's tx key
2015-10-14wallet2: really include non canonical outputs in dust sweepmoneromooo-monero1-1/+1
2015-10-13core_rpc_server: add optional json decoded tx to COMMAND_RPC_GET_TRANSACTIONSmoneromooo-monero2-0/+6
2015-10-13core_rpc_server: add a getblock RPC command, and fix print_blockmoneromooo-monero4-8/+104
2015-10-12simplewallet: hide start_mining behind --trusted-daemonmoneromooo-monero1-0/+6
because it leaks your standard address
2015-10-11Merge pull request #427Riccardo Spagni2-0/+10
df8a110 simplewallet: add a --trusted-daemon flag (moneromooo-monero)
2015-10-11Merge pull request #425Riccardo Spagni9-53/+121
79c95c1 simplewallet: bump default mixin from 3 to 4 (moneromooo-monero) ac90d48 from hard fork 2, all outputs must be decomposed (moneromooo-monero) 90ccad1 from hard fork 2, claim a quantized reward in coinbase (moneromooo-monero) 22b1570 cryptonote_format_utils: add a function to tell if an amount is canonical (moneromooo-monero)
2015-10-11Merge pull request #423Riccardo Spagni1-0/+4
234f576 miniupnpc: quick fix for buffer overflow (moneromooo-monero)
2015-10-11simplewallet: add a --trusted-daemon flagmoneromooo-monero2-0/+10
It allows enabling the rescan_spent command only for trusted daemon
2015-10-11simplewallet: bump default mixin from 3 to 4moneromooo-monero1-1/+1
As recommended in MRL-0004
2015-10-11from hard fork 2, all outputs must be decomposedmoneromooo-monero6-48/+67
The wallet decomposes fully as of now too.
2015-10-10from hard fork 2, claim a quantized reward in coinbasemoneromooo-monero4-4/+22
The small leftover is carried forward
2015-10-10cryptonote_format_utils: add a function to tell if an amount is canonicalmoneromooo-monero2-0/+31
2015-10-09miniupnpc: quick fix for buffer overflowmoneromooo-monero1-0/+4
http://talosintel.com/reports/TALOS-2015-0035/ reported by palexander on IRC
2015-10-06Merge pull request #420Riccardo Spagni1-0/+6
ee27559 Update to compile with latest miniupnpc (warptangent)
2015-10-06Merge pull request #419Riccardo Spagni1-15/+1
5d0cb73 unbound: do not try to link against libevent (moneromooo-monero)
2015-10-06Merge pull request #415Riccardo Spagni3-5/+14
180bcde build: default to Berkeley DB for 32 bit and ARM (moneromooo-monero) 791d8cb db_bdb: fix hard fork keys (moneromooo-monero)
2015-10-06Merge pull request #413Riccardo Spagni1-1/+1
cec92c4 hardfork: move an assert so it actually works (moneromooo-monero)
2015-10-06Merge pull request #411Riccardo Spagni1-15/+15
5ac1632 gpg_keys: update my key with a later expiration date (moneromooo-monero)
2015-10-05Update to compile with latest miniupnpcwarptangent1-0/+6
upnpDiscover() takes a new argument for TTL. Use the suggested default of 2.
2015-10-05unbound: do not try to link against libeventmoneromooo-monero1-15/+1
It is now not needed anymore, as we use minievent instead
2015-10-04build: default to Berkeley DB for 32 bit and ARMmoneromooo-monero2-1/+10
2015-10-04db_bdb: fix hard fork keysmoneromooo-monero1-4/+4
Berkeley DB requires RECNO keys to be 32 bits, and forbids a key value of 0.
2015-10-04hardfork: move an assert so it actually worksmoneromooo-monero1-1/+1
An unsigned quantity is always >= 0
2015-10-04gpg_keys: update my key with a later expiration datemoneromooo-monero1-15/+15
2015-09-28Merge pull request #410Riccardo Spagni4-49/+151
33affd2 blockchain: on hardfork 2, require mixin 2 at least if possible (moneromooo-monero) 434e0f4 hardfork: make the voting window a week (moneromooo-monero) 0a7421b hardfork: rescan speedup (moneromooo-monero) fec98b8 hardfork: remove use of GNU extension for initializing object (moneromooo-monero) 4bbf944 blockchain: on hardfork 2, allow miners to claim less money than allowed (moneromooo-monero) 088bc56 hardfork: change window semantics to not count the newly added block (moneromooo-monero) 198f557 blockchain: use different hard fork settings for testnet and mainnet (moneromooo-monero)
2015-09-28Merge pull request #409Riccardo Spagni1-2/+2
151c32d dns_utils: fix wrong asserts (moneromooo-monero)
2015-09-27blockchain: on hardfork 2, require mixin 2 at least if possiblemoneromooo-monero1-0/+37
2015-09-27hardfork: make the voting window a weekmoneromooo-monero1-1/+1
2015-09-27hardfork: rescan speedupmoneromooo-monero4-23/+49
Add a block height before which version 1 is assumed Use DB transactions
2015-09-27hardfork: remove use of GNU extension for initializing objectmoneromooo-monero2-4/+5
2015-09-27blockchain: on hardfork 2, allow miners to claim less money than allowedmoneromooo-monero1-3/+7
So they can avoid dust if they so wish
2015-09-27hardfork: change window semantics to not count the newly added blockmoneromooo-monero2-15/+33
This allows knowing the hard fork a block must obey in order to be added to the blockchain. The previous semantics would use that new block's version vote to determine this hard fork, which made it impossible to use the rules to validate transactions entering the tx pool (and made it impossible to validate a block before adding it to the blockchain).
2015-09-27blockchain: use different hard fork settings for testnet and mainnetmoneromooo-monero1-3/+19
2015-09-27dns_utils: fix wrong assertsmoneromooo-monero1-2/+2
Braino.
2015-09-22Merge pull request #405Riccardo Spagni26-90/+1461
5b11a89 hardfork: most state now saved to the DB (moneromooo-monero) 0a54c3a hardfork: remove the "parts are copyright cryptonote" notices (moneromooo-monero) e546f37 Add an RPC call and daemon command to get info on hard fork voting (moneromooo-monero) d067131 blockchain: force a hardfork recalculation at load time (moneromooo-monero) a717761 core: add consts where appropriate (moneromooo-monero) 8ffc508 core: moan when we think an update is needed to get latest hard fork info (moneromooo-monero) f854984 blockchain: use the new hardfork class (moneromooo-monero) 62b1f74 New hardfork class (moneromooo-monero) bed9a44 blockchain: add a couple missing includes (moneromooo-monero)
2015-09-20hardfork: most state now saved to the DBmoneromooo-monero10-242/+521
There will be a delay on first load of an existing blockchain as it gets reparsed for this state data.
2015-09-20hardfork: remove the "parts are copyright cryptonote" noticesmoneromooo-monero2-4/+0
I coded the whole thing from scratch.
2015-09-19Add an RPC call and daemon command to get info on hard fork votingmoneromooo-monero13-5/+169
2015-09-19blockchain: force a hardfork recalculation at load timemoneromooo-monero1-0/+3
Since the state isn't actually saved anywhere, as the archive code isn't called in the new DB version.
2015-09-19core: add consts where appropriatemoneromooo-monero6-79/+82
2015-09-13core: moan when we think an update is needed to get latest hard fork infomoneromooo-monero4-0/+35
2015-09-12blockchain: use the new hardfork classmoneromooo-monero3-8/+29
2015-09-12New hardfork classmoneromooo-monero5-3/+871
This keeps track of voting via block version, in order to decide when to enable a particular fork's code.
2015-09-12blockchain: add a couple missing includesmoneromooo-monero1-0/+2
2015-08-30Merge pull request #394Riccardo Spagni4-77/+64
3c10239 unbound: use the mini event fallback implementation (moneromooo-monero) 4e138a0 dns_utils: remove unnecessary string conversion (moneromooo-monero) f928468 dns_utils: factor the fetching code for different DNS record types (moneromooo-monero) 4ef0da1 dns_utils: simplify string handling and fix leak (moneromooo-monero) ae5f28c dns_utils: add a const where possible (moneromooo-monero) f43d465 dns_utils: lock access to the singleton (moneromooo-monero) 5990344 dns: make ctor private (moneromooo-monero)
2015-08-30unbound: use the mini event fallback implementationmoneromooo-monero1-1/+2
Using libevent seems to have high peaks of file descriptor use, which can cause failure to create fds in other parts of bitmonerod. The fallback implementation seems to run fine in a significantly tighter file descriptor limit.
2015-08-30dns_utils: remove unnecessary string conversionmoneromooo-monero1-5/+2
2015-08-30dns_utils: factor the fetching code for different DNS record typesmoneromooo-monero2-59/+34
2015-08-30dns_utils: simplify string handling and fix leakmoneromooo-monero1-5/+1
2015-08-29Merge pull request #391Riccardo Spagni1-1/+1
b19456d Re-enable optimized slow-hash if someone is trying to compile w/MSVC (disabling it was unintentional) (Javier Smooth)
2015-08-27dns_utils: add a const where possiblemoneromooo-monero2-2/+2
2015-08-27dns_utils: lock access to the singletonmoneromooo-monero1-0/+4
This avoids races which could result in two objects being created
2015-08-27dns: make ctor privatemoneromooo-monero3-7/+21
This ensures one can't instanciate a DNSResolver object by mistake, but uses the singleton. A separate create static function is added for cases where a new object is explicitely needed.
2015-08-26Re-enable optimized slow-hash if someone is trying to compile w/MSVC ↵Javier Smooth1-1/+1
(disabling it was unintentional)
2015-08-26Merge pull request #390Riccardo Spagni2-2/+2
5dc53c2 wallet: use mutex protected random generation api (moneromooo-monero)
2015-08-26Merge pull request #388Riccardo Spagni1-1/+0
813e758 blockchain: remove obsolete call to libc srand (moneromooo-monero)
2015-08-26Merge pull request #387Riccardo Spagni2-1/+46
e20a3ae simplewallet: add a store-tx-keys option to set (moneromooo-monero)
2015-08-26wallet: use mutex protected random generation apimoneromooo-monero2-2/+2
2015-08-24blockchain: remove obsolete call to libc srandmoneromooo-monero1-1/+0
crypto::rand is now used for output selection
2015-08-24simplewallet: add a store-tx-keys option to setmoneromooo-monero2-1/+46
To enable storing tx keys in the (now encrypted) wallet cache.
2015-08-24Merge pull request #386Riccardo Spagni6-11/+36
d91eb8c wallet: only return tx keys via RPC if requested (moneromooo-monero)
2015-08-24Merge pull request #385Riccardo Spagni174-0/+23117
0a4bc84 Added ref10 shen_ed25519_ref code, which includes code that can replace crypto-ops with a version straight from Bernstein's ref 10 (ShenNoether) 0d70fdc revert to 776b4fc91a821be152f0f23e6873aabb78a72029 (ShenNoether) b01f286 Added shen_ed25519_ref to crypto ops subfolder, the point is to directly have bitmonero's crypto code come from bernstein et al's ref 10 code (ShenNoether)
2015-08-24Merge pull request #383Riccardo Spagni4-7/+2
3b5330e use correct unsigned type (roman) 59cc92b removed some gcc warnings. mainly unused variables. (roman)
2015-08-24Merge pull request #381Riccardo Spagni3-4/+82
f197599 wallet: encrypt the cache file (moneromooo-monero) 98c76a3 chacha8: add a key generation variant that take a pointer and size (moneromooo-monero)
2015-08-24Merge pull request #380Riccardo Spagni8-10/+77
6c99571 make tx keys available to the user (moneromooo-monero)
2015-08-24wallet: only return tx keys via RPC if requestedmoneromooo-monero6-11/+36
To get the tx keys returned via RPC, set the "get_tx_key" or "get_tx_keys" request field to true (defaults to false).
2015-08-23Added ref10 shen_ed25519_ref code, which includes code that can replace ↵ShenNoether174-0/+23117
crypto-ops with a version straight from Bernstein's ref 10
2015-08-23revert to 776b4fc91a821be152f0f23e6873aabb78a72029ShenNoether1-0/+0
2015-08-23Added shen_ed25519_ref to crypto ops subfolder, the point is to directly ↵ShenNoether1-0/+0
have bitmonero's crypto code come from bernstein et al's ref 10 code
2015-08-23use correct unsigned typeroman1-1/+2
2015-08-23removed some gcc warnings. mainly unused variables.roman4-7/+1
2015-08-22wallet: encrypt the cache filemoneromooo-monero2-2/+76
It contains private data, such as a record of transactions. The key is derived from the view and spend secret keys. The encryption currently is one shot, so may require a lot of memory for large wallet caches.
2015-08-22chacha8: add a key generation variant that take a pointer and sizemoneromooo-monero1-2/+6
2015-08-19make tx keys available to the usermoneromooo-monero8-10/+77
They are also stored in the cache file, to be retrieved using a new get_tx_key command.
2015-08-18Merge pull request #379Riccardo Spagni1-1/+0
9672ac0 Revert "re-re-add Windows DNS bug fix, per c0de96f" (Riccardo Spagni)
2015-08-18Revert "re-re-add Windows DNS bug fix, per c0de96f"Riccardo Spagni1-1/+0
This reverts commit f4ba92bcccd3e016c6b5fdced079bf17d1b3f371.
2015-08-17Merge pull request #378Riccardo Spagni2-4/+23
7c4d6f1 simplewallet: Use default log file name when executable's file path is unknown (warptangent) b5b0f08 epee: Don't set log file name when process path name isn't found (warptangent)
2015-08-17Merge pull request #377Riccardo Spagni1-8/+11
378d004 blockchain: mark two places where the new code differs from the old (moneromooo-monero) 73d42a7 blockchain: update cumulative size after block addition (moneromooo-monero) 4a44377 blockchain: remove dead code (moneromooo-monero) 3f9089a blockchain: do not try to add a tx the pool when it was nor taken out (moneromooo-monero) 769d5ef blockchain: fix off by 1 in timestamp median calculations (moneromooo-monero)
2015-08-16simplewallet: Use default log file name when executable's file path is unknownwarptangent1-3/+21
Default to "simplewallet.log" in current directory when file path isn't obtained from epee. In this situation previously, it defaulted to the file name of ".log" ("" + ".log") in the current directory. (Thanks to @sammy007 for reporting bug.) An earlier version yet used "" + "/" + ".log" = "/.log", which resulted in silently not logging in most cases, due to lack of permission. Test: PATH=$PATH:</path/to/simplewallet/folder> && simplewallet --wallet-file /dev/null This results in epee not finding the executable's file path, so simplewallet will now use a default log filename.
2015-08-16epee: Don't set log file name when process path name isn't foundwarptangent1-1/+2
If process path name isn't found, then leave log file name blank. This also applies if a process name is found, but it's blank after removing a trailing dot extension.
2015-08-15blockchain: mark two places where the new code differs from the oldmoneromooo-monero1-0/+3
And I'd like a comment from tewinget or someone else
2015-08-15blockchain: update cumulative size after block additionmoneromooo-monero1-2/+2
Block addition can fail, and the old code would not update the cumulative size in that case.
2015-08-15blockchain: remove dead codemoneromooo-monero1-1/+0
2015-08-15blockchain: do not try to add a tx the pool when it was nor taken outmoneromooo-monero1-1/+4
This is an unintended difference from the old code. Though I don't think it can actually happen in practice with the current take_tx implementation.
2015-08-15blockchain: fix off by 1 in timestamp median calculationsmoneromooo-monero1-4/+2
The height function apparently used to return the index of the last block, rather than the height of the chain. This now seems to be incorrect, judging the the code, so we remove the now wrong comment, as well as a couple +/- 1 adjustments which now cause the median calculation to differ from the original blockchain_storage version.
2015-08-15Merge pull request #376Riccardo Spagni1-1/+1
7424cfc net_node: Use DNS resolver singleton (warptangent)
2015-08-15Merge pull request #375Riccardo Spagni1-15/+22
471e8a3 blockchain_import: Add --input-file option (warptangent) 3ffda6e blockchain_import: Updates for naming consistency (warptangent)
2015-08-14net_node: Use DNS resolver singletonwarptangent1-1/+1
Each thread can use the same resolver.
2015-08-14blockchain_import: Add --input-file optionwarptangent1-1/+9
This option specifies the input file path for importing. The default remains <data-dir>/export/blockchain.raw
2015-08-14blockchain_import: Updates for naming consistencywarptangent1-15/+14
2015-08-14Merge pull request #374Riccardo Spagni3-16/+21
97c5faa blockchain_export: Add --output-file argument (warptangent)
2015-08-14Merge pull request #371Riccardo Spagni1-1/+2
dde4dbb doc: hammer the fact that the raw file isn't blockchain.bin (moneromooo-monero)
2015-08-14blockchain_export: Add --output-file argumentwarptangent3-16/+21
This option will export to the specified file path. The default file path remains <data-dir>/export/blockchain.raw
2015-08-14Merge pull request #372Riccardo Spagni1-0/+1
f4ba92b re-re-add Windows DNS bug fix, per c0de96f (Riccardo Spagni)
2015-08-14re-re-add Windows DNS bug fix, per c0de96fRiccardo Spagni1-0/+1
2015-08-14update unboundRiccardo Spagni45-3406/+2396
2015-08-14doc: hammer the fact that the raw file isn't blockchain.binmoneromooo-monero1-1/+2
2015-08-13Merge pull request #369Riccardo Spagni2-2/+6
d87a2d2 core_rpc_server: replace vector<bool> with vector<int> in RPC (moneromooo-monero)
2015-08-13Merge pull request #368Riccardo Spagni1-8/+5
7764cd7 net_node: skimplify rate limit code, and log as appropriate (moneromooo-monero)
2015-08-13Merge pull request #367Riccardo Spagni1-0/+24
e7b00ab core_rpc_server: find transactions in the pool as well as the blockchain (moneromooo-monero)
2015-08-13Merge pull request #366Riccardo Spagni5-0/+92
aa5bc35 wallet: new rescan_spent command to update outputs' spent status (moneromooo-monero)
2015-08-13core_rpc_server: replace vector<bool> with vector<int> in RPCmoneromooo-monero2-2/+6
vector<bool> causes issues in serialization with Boost 1.56
2015-08-11net_node: skimplify rate limit code, and log as appropriatemoneromooo-monero1-8/+5
2015-08-11wallet: new rescan_spent command to update outputs' spent statusmoneromooo-monero5-0/+92
This obsoletes the need for a lengthy blockchain rescan when a transaction doesn't end up in the chain after being accepted by the daemon, or any other reason why the wallet's idea of spent and unspent outputs gets out of sync from the blockchain's.
2015-08-11core_rpc_server: find transactions in the pool as well as the blockchainmoneromooo-monero1-0/+24
2015-08-11Merge pull request #365Riccardo Spagni13-69/+169
e63b854 blockchain_db: match tx addition semantics to original code (moneromooo-monero) 83bbea4 Add a is_key_image_spent daemon command and RPC call (moneromooo-monero) 35abef1 blockchain: remove dead code (moneromooo-monero)
2015-08-11blockchain_db: match tx addition semantics to original codemoneromooo-monero1-8/+24
The original code removed key images from a tx from the blockchain when an non to-key nor gen input was found in that tx. Additionally, the remainder of the tx data was added to the blockchain only after the double spend check passed.
2015-08-11Add a is_key_image_spent daemon command and RPC callmoneromooo-monero10-2/+139
2015-08-11blockchain: remove dead codemoneromooo-monero2-59/+6
2015-08-10Merge pull request #364Riccardo Spagni1-10/+7
533acc3 blockchain_db: store key images for tx without outputs too (moneromooo-monero)
2015-08-10Merge pull request #363Riccardo Spagni6-38/+12
4f19e68 blockchain: factor get_num_outpouts(amount) calls (moneromooo-monero) 275894c blockchain: always select random outs using triangular distribution (moneromooo-monero)
2015-08-10Merge pull request #362Riccardo Spagni1-1/+20
2634307 daemon: omit extra set of <> in error message (moneromooo-monero) 0822933 daemon: print a decoded tx in print_tx (moneromooo-monero) 1d678b1 daemon: fix print_tx not find transactions (moneromooo-monero)
2015-08-10Merge pull request #361Riccardo Spagni14-49/+278
a2d7a5f encrypted payment ids are now 64 bit, instead of 256 bit (moneromooo-monero) e40cfc4 Encrypted payment IDs (moneromooo-monero)
2015-08-10Merge pull request #359Riccardo Spagni1-11/+28
525bf58 Fix estimation of batch storage size when no blocks exist (warptangent)
2015-08-09blockchain_db: store key images for tx without outputs toomoneromooo-monero1-10/+7
2015-08-09blockchain: factor get_num_outpouts(amount) callsmoneromooo-monero1-3/+3
It has to stay constant as we get the blockchain lock for the entire function. Avoids some unnecessary DB accesses.
2015-08-09blockchain: always select random outs using triangular distributionmoneromooo-monero6-35/+9
It was only used by the older blockchain_storage. We also move the code to the calling blockchain level, to avoid replicating the code in every DB implementation. This also makes the get_random_out method obsolete, and we delete it.
2015-08-09daemon: omit extra set of <> in error messagemoneromooo-monero1-1/+1
The string conversion already adds them
2015-08-09daemon: print a decoded tx in print_txmoneromooo-monero1-0/+18
in addition to the raw hex representation
2015-08-09daemon: fix print_tx not find transactionsmoneromooo-monero1-0/+1
It was not even trying to
2015-08-09encrypted payment ids are now 64 bit, instead of 256 bitmoneromooo-monero15-89/+169
Pros: - smaller on the blockchain - shorter integrated addresses Cons: - less sparseness - less ability to embed actual information The boolean argument to encrypt payment ids is now gone from the RPC calls, since the decision is made based on the length of the payment id passed.
2015-08-09Encrypted payment IDsmoneromooo-monero8-15/+164
A payment ID may be encrypted using the tx secret key and the receiver's public view key. The receiver can decrypt it with the tx public key and the receiver's secret view key. Using integrated addresses now cause the payment IDs to be encrypted. Payment IDs used manually are not encrypted by default, but can be encrypted using the new 'encrypt_payment_id' field in the transfer and transfer_split RPC calls. It is not possible to use an encrypted payment ID by specifying a manual simplewallet transfer/transfer_new command, though this is just a limitation due to input parsing.
2015-08-04Fix estimation of batch storage size when no blocks existwarptangent1-11/+28
If there's no blocks in database (m_height == 0): Don't assign incorrect block range to check. Skip average block size check. Test: Run blockchain_converter with an existing source blockchain.bin and a non-existent LMDB destination database. The converter creates a BlockchainLMDB instance with zero height, due to not being initialized with a genesis block, normally done by Blockchain::init(). While different than the behavior of bitmonerod, blockchain_import, and blockchain_export, the initialization hasn't been strictly necessary. The db batch size estimation normally uses an average block size, or a default minimum block size, whichever is greater. In this case, as there's no existing blocks to check for an average block size, the default should be used.
2015-08-04Merge pull request #358Riccardo Spagni1-0/+1
1e23b7a wallet: set watch-only flag to false when creating a new wallet (moneromooo-monero)
2015-08-04wallet: set watch-only flag to false when creating a new walletmoneromooo-monero1-0/+1
2015-07-27Merge pull request #353Riccardo Spagni1-10/+10
16d71a3 Fix block_reward unit tests (Rostislav)
2015-07-26Fix block_reward unit testsRostislav1-10/+10
2015-07-24Merge pull request #352Riccardo Spagni5-2/+1703
1d1a77b slight modification to wordlist contributor tagline (as these contributors haven't used git to submit a PR, so we're creating the wordlist on their behalf (Riccardo Spagni) ef7671a added Russian wordlist (Riccardo Spagni)
2015-07-24slight modification to wordlist contributor tagline (as these contributors ↵Riccardo Spagni2-2/+2
haven't used git to submit a PR, so we're creating the wordlist on their behalf
2015-07-24added Russian wordlistRiccardo Spagni3-0/+1701
2015-07-24Merge pull request #348Riccardo Spagni6-5/+438
988fe1f wallet: new transaction construction algorithm (moneromooo-monero)
2015-07-24Merge pull request #351Riccardo Spagni1-1/+1
a49d917 change unique_prefix_length=4 for japanese.h (David Vorick)
2015-07-23change unique_prefix_length=4 for japanese.hDavid Vorick1-1/+1
I ran some tests, and all prefixes seem to be unique for len(3)
2015-07-22Merge pull request #349Riccardo Spagni6-5/+3405
6d6a985 add Germany and Italian wordlists (Riccardo Spagni) 514047d fix portuguese wordlist (Riccardo Spagni) b5c0308 fix license on English wordlist (Riccardo Spagni)
2015-07-22add Germany and Italian wordlistsRiccardo Spagni4-0/+3402
2015-07-22wallet: new transaction construction algorithmmoneromooo-monero6-5/+438
It should avoid a lot of the issues sending more than half the wallet's contents due to change. Actual output selection is still random. Changing this would improve the matching of transaction amounts to output sizes, but may have non obvious effects on blockchain analysis. Mapped to the new transfer_new command in simplewallet, and transfer uses the existing algorithm. To use in RPC, add "new_algorithm: true" in the transfer_split JSON command. It is not used in the transfer command.
2015-07-22fix portuguese wordlistRiccardo Spagni1-3/+3
2015-07-22fix license on English wordlistRiccardo Spagni1-2/+0
2015-07-20Merge pull request #347Riccardo Spagni3-224/+224
9b83a43 Update after recent simplewallet string changes (moneromooo-monero) 35378f1 simplewallet: fix context/string order mismatch (moneromooo-monero) e62692f simplewallet: use unsigned long long instead of size_t in message (moneromooo-monero)
2015-07-19Update after recent simplewallet string changesmoneromooo-monero1-219/+219
2015-07-19simplewallet: fix context/string order mismatchmoneromooo-monero1-1/+1
2015-07-19simplewallet: use unsigned long long instead of size_t in messagemoneromooo-monero1-4/+4
boost doesn't support %zu for size_t, and the previous change to %u could technically lose bits (though it would require splitting a transfer into 4 billion transactions, which seems unlikely).
2015-07-18Merge pull request #346Riccardo Spagni4-6/+82
8fe180a wallet: add boolean to always confirm transactions with the user (moneromooo-monero)
2015-07-18wallet: add boolean to always confirm transactions with the usermoneromooo-monero4-6/+82
This can be useful if you want to be given a veto over the tx fee, or if you want to see what a tx fee would be without actually sending.
2015-07-18Merge pull request #345Riccardo Spagni2-235/+252
3c13da5 boost doesn't like %zu for size_t, replace with %u (moneromooo-monero)
2015-07-18Merge pull request #344Riccardo Spagni1-5/+7
e027831 console_handler: do not call a NULL function pointer (moneromooo-monero) b87e066 console_handler: check for eof before trying to use input (moneromooo-monero)
2015-07-18Merge pull request #343Riccardo Spagni1-1/+1
e20a4dd blockchain: fix testnet syncing (to not use blocks.dat) (moneromooo-monero)
2015-07-18Merge pull request #342Riccardo Spagni2-10/+13
70ae2ee Fixed threadpool bug when running on single core systems. *Thanks to freshman for reporting bug. (NoodleDoodleNoodleDoodleNoodleDoodleNoo) 464dbe7 Fixed MINGW duplicate library errors when MSYS folder cannot be found. *Thanks to luigi1111 for reporting. (NoodleDoodleNoodleDoodleNoodleDoodleNoo)
2015-07-18boost doesn't like %zu for size_t, replace with %umoneromooo-monero2-235/+252
2015-07-18console_handler: do not call a NULL function pointermoneromooo-monero1-1/+2
The exit_handler can be NULL.
2015-07-18console_handler: check for eof before trying to use inputmoneromooo-monero1-4/+5
We'll get there without input if we exited
2015-07-18blockchain: fix testnet syncing (to not use blocks.dat)moneromooo-monero1-1/+1
These are mainnet blocks, and would cause syncing on testnet to reject all incoming blocks.
2015-07-17Fixed threadpool bug when running on single core systems.NoodleDoodleNoodleDoodleNoodleDoodleNoo1-5/+8
*Thanks to freshman for reporting bug.
2015-07-17Fixed MINGW duplicate library errors when MSYS folder cannot be found.NoodleDoodleNoodleDoodleNoodleDoodleNoo1-5/+5
*Thanks to luigi1111 for reporting.
2015-07-16Merge pull request #341Riccardo Spagni1-1/+2
bbb936d Use g++ flag "-pthread" instead of "-lpthread", where preferred (warptangent)
2015-07-16Use g++ flag "-pthread" instead of "-lpthread", where preferredwarptangent1-1/+2
CMake supports this through THREADS_PREFER_PTHREAD_FLAG. Remove inclusion of pthread library in EXTRA_LIBRARIES, as the individual CMakeLists.txt files which need pthread already require it with CMAKE_THREAD_LIBS_INIT.
2015-07-16Merge pull request #340Riccardo Spagni1-1/+1
35b62fb hyc accidentally typo'd...we shall never speak of this again (Riccardo Spagni)
2015-07-16hyc accidentally typo'd...we shall never speak of this againRiccardo Spagni1-1/+1
2015-07-16Merge pull request #339Riccardo Spagni36-295/+586
54c785d fixed ARM arch test to prevent breaking on short arch strings (Riccardo Spagni) a4254a4 updated vl32 to current (Riccardo Spagni) e6ab2df updated in-source lmdb (Riccardo Spagni) ea08c76 open() flag O_DSYNC isn't on BSD, use O_SYNC (Thomas Winget)
2015-07-16fixed ARM arch test to prevent breaking on short arch stringsRiccardo Spagni1-12/+17
2015-07-16updated vl32 to currentRiccardo Spagni24-188/+390
2015-07-16updated in-source lmdbRiccardo Spagni10-95/+171
2015-07-16open() flag O_DSYNC isn't on BSD, use O_SYNCThomas Winget2-0/+8
If the detected OS is FreeBSD, tell LMDB to compile with MDB_DSYNC=O_SYNC instead of the default O_DSYNC, as BSD does not implement this flag.
2015-07-16Merge pull request #338Riccardo Spagni1-6/+12
71793ef Add batch support to BlockchainLMDB::get_output_key (warptangent)
2015-07-16Add batch support to BlockchainLMDB::get_output_keywarptangent1-6/+12
This allows blockchain_import to work with batch and verify modes enabled (the default).
2015-07-15Removed on_idle() calls to Blockchain::store_blockchain() for lmdb.NoodleDoodleNoodleDoodleNoodleDoodleNoo5-17/+53
Added option to cache tx-input verification results.
2015-07-15Fixed binary size issue due to embedded checkpoint data.NoodleDoodleNoodleDoodleNoodleDoodleNoo7-9/+15
Fixed OSX compilation issues due to random lmdb resize points. Fixed infinite loop bug when calling core::get_block_template(..).
2015-07-15Pause miner before preparing for incoming blocksNoodleDoodleNoodleDoodleNoodleDoodleNoo1-6/+5
2015-07-15** CHANGES ARE EXPERIMENTAL (FOR TESTING ONLY)NoodleDoodleNoodleDoodleNoodleDoodleNoo33-2346/+4025
Bockchain: 1. Optim: Multi-thread long-hash computation when encountering groups of blocks. 2. Optim: Cache verified txs and return result from cache instead of re-checking whenever possible. 3. Optim: Preload output-keys when encoutering groups of blocks. Sort by amount and global-index before bulk querying database and multi-thread when possible. 4. Optim: Disable double spend check on block verification, double spend is already detected when trying to add blocks. 5. Optim: Multi-thread signature computation whenever possible. 6. Patch: Disable locking (recursive mutex) on called functions from check_tx_inputs which causes slowdowns (only seems to happen on ubuntu/VMs??? Reason: TBD) 7. Optim: Removed looped full-tx hash computation when retrieving transactions from pool (???). 8. Optim: Cache difficulty/timestamps (735 blocks) for next-difficulty calculations so that only 2 db reads per new block is needed when a new block arrives (instead of 1470 reads). Berkeley-DB: 1. Fix: 32-bit data errors causing wrong output global indices and failure to send blocks to peers (etc). 2. Fix: Unable to pop blocks on reorganize due to transaction errors. 3. Patch: Large number of transaction aborts when running multi-threaded bulk queries. 4. Patch: Insufficient locks error when running full sync. 5. Patch: Incorrect db stats when returning from an immediate exit from "pop block" operation. 6. Optim: Add bulk queries to get output global indices. 7. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 8. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 9. Optim: Added thread-safe buffers used when multi-threading bulk queries. 10. Optim: Added support for nosync/write_nosync options for improved performance (*see --db-sync-mode option for details) 11. Mod: Added checkpoint thread and auto-remove-logs option. 12. *Now usable on 32-bit systems like RPI2. LMDB: 1. Optim: Added custom comparison for 256-bit key tables (minor speed-up, TBD: get actual effect) 2. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 3. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 4. Optim: Added support for sync/writemap options for improved performance (*see --db-sync-mode option for details) 5. Mod: Auto resize to +1GB instead of multiplier x1.5 ETC: 1. Minor optimizations for slow-hash for ARM (RPI2). Incomplete. 2. Fix: 32-bit saturation bug when computing next difficulty on large blocks. [PENDING ISSUES] 1. Berkely db has a very slow "pop-block" operation. This is very noticeable on the RPI2 as it sometimes takes > 10 MINUTES to pop a block during reorganization. This does not happen very often however, most reorgs seem to take a few seconds but it possibly depends on the number of outputs present. TBD. 2. Berkeley db, possible bug "unable to allocate memory". TBD. [NEW OPTIONS] (*Currently all enabled for testing purposes) 1. --fast-block-sync arg=[0:1] (default: 1) a. 0 = Compute long hash per block (may take a while depending on CPU) b. 1 = Skip long-hash and verify blocks based on embedded known good block hashes (faster, minimal CPU dependence) 2. --db-sync-mode arg=[[safe|fast|fastest]:[sync|async]:[nblocks_per_sync]] (default: fastest:async:1000) a. safe = fdatasync/fsync (or equivalent) per stored block. Very slow, but safest option to protect against power-out/crash conditions. b. fast/fastest = Enables asynchronous fdatasync/fsync (or equivalent). Useful for battery operated devices or STABLE systems with UPS and/or systems with battery backed write cache/solid state cache. Fast - Write meta-data but defer data flush. Fastest - Defer meta-data and data flush. Sync - Flush data after nblocks_per_sync and wait. Async - Flush data after nblocks_per_sync but do not wait for the operation to finish. 3. --prep-blocks-threads arg=[n] (default: 4 or system max threads, whichever is lower) Max number of threads to use when computing long-hash in groups. 4. --show-time-stats arg=[0:1] (default: 1) Show benchmark related time stats. 5. --db-auto-remove-logs arg=[0:1] (default: 1) For berkeley-db only. Auto remove logs if enabled. **Note: lmdb and berkeley-db have changes to the tables and are not compatible with official git head version. At the moment, you need a full resync to use this optimized version. [PERFORMANCE COMPARISON] **Some figures are approximations only. Using a baseline machine of an i7-2600K+SSD+(with full pow computation): 1. The optimized lmdb/blockhain core can process blocks up to 585K for ~1.25 hours + download time, so it usually takes 2.5 hours to sync the full chain. 2. The current head with memory can process blocks up to 585K for ~4.2 hours + download time, so it usually takes 5.5 hours to sync the full chain. 3. The current head with lmdb can process blocks up to 585K for ~32 hours + download time and usually takes 36 hours to sync the full chain. Averate procesing times (with full pow computation): lmdb-optimized: 1. tx_ave = 2.5 ms / tx 2. block_ave = 5.87 ms / block memory-official-repo: 1. tx_ave = 8.85 ms / tx 2. block_ave = 19.68 ms / block lmdb-official-repo (0f4a036437fd41a5498ee5e74e2422ea6177aa3e) 1. tx_ave = 47.8 ms / tx 2. block_ave = 64.2 ms / block **Note: The following data denotes processing times only (does not include p2p download time) lmdb-optimized processing times (with full pow computation): 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.25 hours processing time (--db-sync-mode=fastest:async:1000). 2. Laptop, Dual-core / 4-threads U4200 (3Mb) - 4.90 hours processing time (--db-sync-mode=fastest:async:1000). 3. Embedded, Quad-core / 4-threads Z3735F (2x1Mb) - 12.0 hours processing time (--db-sync-mode=fastest:async:1000). lmdb-optimized processing times (with per-block-checkpoint) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 10 minutes processing time (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with full pow computation) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.8 hours processing time (--db-sync-mode=fastest:async:1000). 2. RPI2. Improved from estimated 3 months(???) into 2.5 days (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with per-block-checkpoint) 1. RPI2. 12-15 hours (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000).
2015-07-15Update blockchain.cppNoodleDoodleNoodleDoodleNoodleDoodleNoo1-1/+0
Fix compilation error
2015-07-15Update db_bdb.cppNoodleDoodleNoodleDoodleNoodleDoodleNoo1-7/+5
- bugfix: prevent re-entering db->get when current buffer contains all possible index values.
2015-07-15Update db_bdb.cppNoodleDoodleNoodleDoodleNoodleDoodleNoo1-72/+72
2015-07-15Update db_bdb.cppNoodleDoodleNoodleDoodleNoodleDoodleNoo1-1154/+1166
2015-07-15Experimental BDB workaround optimizationsNoodleDoodleNoodleDoodleNoodleDoodleNoo5-19/+240
2015-07-15Merge pull request #336Riccardo Spagni1-0/+297
ea58576 Add missing file - i18n.cpp (moneromooo-monero)
2015-07-15Add missing file - i18n.cppmoneromooo-monero1-0/+297
2015-07-15Merge pull request #335Riccardo Spagni9-249/+1385
78b2eab Translatable strings for simplewallet (moneromooo-monero)
2015-07-15Merge pull request #334Riccardo Spagni9-18/+122
fd73d9c Check and resize if needed at batch transaction start (warptangent) f9e4afd blockchain_utilities: Increase debug statement's log level (warptangent) 699e4b3 blockchain_utilities: Pass expected number of blocks when starting batch (warptangent) 6e170c8 Optionally allow DB to know expected number of blocks at batch transaction start (warptangent)
2015-07-15Merge pull request #333Riccardo Spagni1-0/+9
5d304ca Fix loop bug when calling core::get_block_template, causing calling thread to lock up. (NoodleDoodleNoodleDoodleNoodleDoodleNoo)
2015-07-14Translatable strings for simplewalletmoneromooo-monero9-249/+1385
The system is mostly the Qt system, but we don't use Qt to avoid the dependencies. See README.i18n for details.
2015-07-12Check and resize if needed at batch transaction startwarptangent2-5/+109
This currently only affects blockchain_import and blockchain_converter. When the number of blocks expected for the batch transaction is provided, make an estimate of the DB space needed. If not enough free space remains, resize the DB. The estimate is made based on: - the average size of the last 500 blocks, or if larger, a min. block size of 4k - a factor for the expanded size a block occupies in the DB across the sub-dbs/tables - a safety factor (1.7) to allow for a "reasonable" average block size increase over the batch Increase the DB size by whichever is greater: the estimated size needed or a minimum increase size, currently 128 MB. The conservative factors in the estimate help in testing that the resize occurs when needed, and without gratuitous size increases. For common use, the safety factor and minimum increase size could reasonably be increased. For testing, setting DEFAULT_MAPSIZE (blockchain_db/lmdb/db_lmdb.h) to 1 << 27 (128 MB) and recompiling will ensure DB resizes take place sooner and more frequently.
2015-07-11blockchain_utilities: Increase debug statement's log levelwarptangent1-1/+1
2015-07-11blockchain_utilities: Pass expected number of blocks when starting batchwarptangent2-4/+4
2015-07-11Optionally allow DB to know expected number of blocks at batch transaction startwarptangent6-8/+8
This will assist in a DB resize check.
2015-07-10Fix loop bug when calling core::get_block_template, causing calling thread ↵NoodleDoodleNoodleDoodleNoodleDoodleNoo1-0/+9
to lock up.
2015-07-09Merge pull request #331Riccardo Spagni1-1/+10
369c7b3 blockchain_utilities/README.md: add workaround for resizing in batch mode (moneromooo-monero) 26970c7 blockchain_utilities/README.md: add high level "what is this about" (moneromooo-monero)
2015-07-09Merge pull request #332Riccardo Spagni1-1/+5
8623492 Interpret x86_64 as x86-64 for architecture (moneromooo-monero)