aboutsummaryrefslogtreecommitdiff
path: root/src (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2015-05-30Include database error in more error messageswarptangent1-35/+54
2015-05-25Fix compile for GCC 5.1.0warptangent1-1/+5
Add fix for compile error with multiple uses of peerid_type (uint64_t) variable in lambda expression. - known GCC issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65843 epee: replace return value of nullptr for expected boolean with false. Fixes #231.
2015-05-25Build seed node list without duplicateswarptangent1-31/+36
The random selection of a node shouldn't favor repeats that occur in the hardcoded and DNS seed node lists. Remove hardcoded ":18080" address which gives parse error. Test: bitmonerod --log-level 2 The seed node list displayed at startup shouldn't show duplicate addresses (includes port).
2015-05-19Add spendkey dump to simplewalletluigi11112-0/+9
2015-05-19Allow name@domain.tld for OpenAlias lookupswarptangent3-1/+27
Based on tewinget's update. Make OpenAlias address format independent of existing DNS functions. Add tests. Test: make debug-test cd build/debug/tests/unit_tests # test that regular DNS functions work, including IPv4 lookups. # also test function that converts OpenAlias address format make && ./unit_tests --gtest_filter=DNSResolver* # test that OpenAlias addresses like donate@getmonero.org work from # wallet tools make && ./unit_tests --gtest_filter=AddressFromURL.Success
2015-05-19Revert "Allow name@domain.tld for OpenAlias lookups"warptangent2-25/+14
This reverts commit b18368b635ba08aea541ef52ebc74180822644a2.
2015-05-18Check if LMDB needs resize every 1000 blocksThomas Winget1-1/+1
(this was 10 for testing purposes)
2015-05-18null out batch txn pointer as needed (BlockchainLMDB)Thomas Winget1-4/+5
2015-05-17s/terget/target/moneromooo-monero4-7/+7
2015-05-17print limits when running limit commands with no argumentsmoneromooo-monero5-3/+60
It's more user friendly that an error message saying the command does not exist.
2015-05-16Support debugging command --pop-blocks on in-memory blockchainwarptangent2-9/+17
Add public method blockchain_storage::debug_pop_block_from_blockchain() Ensure blockchain_import calls destructors before exit. To test: DATABASE=memory make release // create blockchain.bin from blockchain.raw if needed build/release/bin/blockchain_import --block-stop 1000 // try popping a single block build/release/bin/blockchain_import --pop-blocks 1
2015-05-16LMDB should now dynamically resize the mapsizeThomas Winget2-60/+187
Some filesystems (*cough* NTFS *cough*) aren't good with sparse files, so this makes LMDB dynamically resize its mapsize as needed. Note: the check interval is currently every 10 blocks (for testing) and will probably need to change to 1000 or something. Default mapsize set to 1GiB. Blockchain conversion tools using batching will probably segfault, I'll fix that in the next commit.
2015-05-16Allow BlockchainLMDB to be opened in read-only modewarptangent2-4/+11
Have blockchain_export use read-only mode when source is BlockchainLMDB.
2015-05-15Move mdb_txn_safe implementation to cpp fileThomas Winget2-51/+58
2015-05-15Rename "--block-number" option to "--block-stop"warptangent3-46/+45
Update help output for this and other options.
2015-05-15Check if chunk size is zero instead of negativewarptangent1-2/+2
This corrects an unnecessary check and fixes compile error on OS X.
2015-05-13Fixes changes to sort tx by fee per kbThomas Winget2-14/+46
2015-05-08Rename src/blockchain_converter/ to src/blockchain_utilities/warptangent10-2/+2
Update appropriate files (CMakeLists.txt, README.md)
2015-05-08Add --block-number option to blockchain_importwarptangent1-7/+17
This enables the importer to stop after reaching a specified block number (zero-based index), before reaching the end of the source blockchain.
2015-05-08Update blockchain utilities with portable bootstrap file formatwarptangent8-460/+755
Remove repeated coinbase tx in each exported block's data. Add resume from last exported height to blockchain_export, making it the default behavior when the file already exists. Start reorganizing the utilities. Various cleanup. Update output, including referring to both height and block numbers as zero-based instead of one-based. This better matches the block data, rather than just some parts of the existing codebase. Use smaller default batch sizes for importer when verifying, so progress is saved more frequently. Use small default batch size (1000) for importer on Windows, due to current issue with big transaction sizes on LMDB. file format ----------- [4-byte magic | variable-length header | block data] header ------ 4-byte file_info length file_info struct file format major version file format minor version header length (includes file_info struct) [rest of header, padded with 0 bytes up to header length] block data ---------- 4-byte chunk/block_package length block_package struct block txs (coinbase/miner tx included already in block) block_size cumulative_difficulty coins_generated 4-byte chunk/block_package length block_package struct [...]
2015-05-08Add MDB_NORDAHEAD as a supported LMDB flag for blockchain_importwarptangent1-8/+2
2015-05-08Condense #if directiveswarptangent1-9/+2
2015-05-08Add basic "pop blocks" command to blockchain_import for debuggingwarptangent1-0/+58
Usage: blockchain_import --pop-blocks <num_blocks>
2015-05-08Update log statementswarptangent3-3/+3
Use filesystem path conversion to string() instead of c_str(). Windows may otherwise output an address.
2015-05-08Fix incompatibility with blockchain exporter when source is LMDBwarptangent1-1/+16
Instantiate BlockchainDB in blockchain exporter to reflect recent updates. This applies when blockchain_export.h defines SOURCE_DB as DB_LMDB.
2015-04-30Sort txs by per-kb-fee for minersThomas Winget2-7/+35
2015-04-30When removing 'stuck' transactions, don't ignore the first tx in the poolThomas Winget1-5/+5
2015-04-29Allow name@domain.tld for OpenAlias lookupsThomas Winget2-14/+25
2015-04-23Keep memory pool consistent when stuck tx removedwarptangent1-0/+1
When a stuck tx is removed from memory pool, first remove the associated spent key images.
2015-04-23Add mempool output to daemon via command and RPCwarptangent7-17/+107
This is for the "print_pool" command and "get_transaction_pool" RPC method. Add mempool's spent key images to the results.
2015-04-22DNS Checkpoint updating-related fixes/changesThomas Winget3-8/+72
Only one thread will be doing the updating. Two valid responses must match, and the first two that match will be used.
2015-04-20Fix missing virtual destructorSergey Kazenyuk2-2/+4
2015-04-13disable non-working optimized slow_hash on 32 bit intelJavier Smooth1-1/+1
2015-04-10[fix] log level change. compilation: dns, testsrfree2monero4-3/+6
old unbound #warning does not block compilation unit tests build fine. Even though the RPC/P2P network type is required again
2015-04-10Fixes start_mining in cli interactive modeThomas Winget1-2/+16
2015-04-08Disable DNS checkpoint updating on testnetThomas Winget1-0/+2
2015-04-08[fix] Network 1.8: unlimited the RPC connectionsrfree2monero3-1/+22
works for unit tests build, too
2015-04-07Only compile BerkeleyDB as an option in non-staticThomas Winget2-0/+20
2015-04-05no newline at end of fileRiccardo Spagni1-1/+1
2015-04-05handle unlikely rounding up after sqrtJavier Smooth1-0/+3
2015-04-05triangular distribution to choose recent outputs more often for mixinsJavier Smooth1-1/+5
2015-04-02Network 1.7; Quieted the debug a bit.rfree2monero2-6/+10
Really really finall version of this changes I hope.
2015-04-02Fixed DNS resolution bug in WindowsThomas Winget1-4/+2
Due to a bug in unbound, we were passing a string containing a null character to ub_ctx_resolvconf and ub_ctx_hosts rather than a NULL pointer. On *nix this wasn't causing headache, but on Windows this was causing unbound to not correctly load DNS settings from the OS. Note on the bug: in a Windows-specific code branch in the function ub_ctx_hosts(), if the hosts file specified was a NULL pointer, a call to getenv() was stored in a local char* and later freed. This is incorrect, as we do not own that data, and caused the program to crash.
2015-04-02update hardcoded fallback seedsRiccardo Spagni1-12/+25
2015-04-01Network 1.6: network limits, logging, +doxyrfree2monero1-1/+7
-dr.monero and once more again merged all work to current official monero version
2015-04-01my changelogrfree2monero1-0/+71
2015-04-01remerged; commands JSON. logging upgrade. doxygenrfree2monero25-221/+547
2015-03-27Restore daemon interactive modeThomas Winget14-153/+501
Daemon interactive mode is now working again. RPC mapped calls in daemon and wallet have both had connection_context removed as an argument as that argument was not being used anywhere.
2015-03-25Steps toward multiple dbs available -- workingThomas Winget13-58/+146
There will need to be some more refactoring for these changes to be considered complete/correct, but for now it's working. new daemon cli argument "--db-type", works for LMDB and BerkeleyDB. A good deal of refactoring is also present in this commit, namely Blockchain no longer instantiates BlockchainDB, but rather is passed a pointer to an already-instantiated BlockchainDB on init().
2015-03-24Enforce DNSSEC for checkpoint updatesThomas Winget1-10/+17
2015-03-24DNSSEC added (hardcoded key)Thomas Winget1-0/+66
DNSSEC is now implemented with the hardcoded key from unbound. This will need to be not hardcoded in the future, but is okay for now. Unit tests updated for DNSSEC (as well as for the fact that, contrary to previous assumption, example.com does not have a static IP address).
2015-03-23blockchain_converter: Add support for resume from last blockwarptangent1-10/+37
Add option "--resume <on|off>" where default is on.
2015-03-22blockchain_import: lengthen string for line clearwarptangent1-16/+19
2015-03-22blockchain_export: show progress during exportwarptangent1-9/+17
2015-03-22Update Blockchain::get_db() to return reference instead of pointerwarptangent4-14/+14
Where this method is used, a BlockchainDB object is always expected, so a pointer is unnecessary and less safe.
2015-03-22Add README for blockchain converter, importer, and exporter utilitieswarptangent1-0/+54
2015-03-20Hopefully fixes build on Windows for real this timeThomas Winget1-5/+5
2015-03-20Hopefully fixes build on WindowsThomas Winget3-3/+15
2015-03-17BerkeleyDB implementation of BlockchainDB seems to be working!Thomas Winget2-20/+20
2015-03-17BlockchainBDB passes unit testsThomas Winget1-1/+4
2015-03-16blockchain_export: Add compile-time support for BlockchainDBwarptangent2-31/+63
This allows an LMDB database to be used as the blockchain to export. Adjust SOURCE_DB in src/blockchain_converter/blockchain_export.h depending on needs. Defaults to DB_MEMORY. DB_MEMORY is a sensible default for users migrating to LMDB, as it allows the exporter to use the in-memory blockchain while the other binaries work with LMDB, without recompiling anything.
2015-03-16BerkeleyDB Blockchain building, not working yetThomas Winget3-189/+200
Everything except actually *using* BlockchainBDB is wired up, but the db itself is not yet working. Some error about user mem not large enough. I think I know what this error means, but I can't determine the cause. Notes: BerkeleyDB does not allow 0-indexing in its recno type databases, so block numbers *in the database* will be 1-indexed. Modifications to indexing have been made as needed.
2015-03-16CMake wiring, minor cleanup, minor test additionThomas Winget1-0/+3
Make Cmake things aware of BerkeleyDB and BlockchainBDB Make the BlockchainDB unit tests aware of BlockchainBDB
2015-03-16BerkeleyDB BlockchainDB impl copy/paste/modifyThomas Winget2-9/+1304
LMDB implementation code copy/paste/modified into the Berkeley DB implementation. Need to test if it builds, then if it works, and so on, but the code is all there.
2015-03-16Try to not pollute cryptonote namespaceThomas Winget2-47/+47
2015-03-16Initial commit of BDB BlockchainDB implementationThomas Winget2-0/+678
Basically verbatim copy of LMDB implementation, but with the guts ripped out and includes changed, etc.
2015-03-16Add blockchain_export utilitywarptangent3-0/+470
Based on work by tomerkon. See https://github.com/tomerkon/bitmonero src/cryptonote_core/bootfilesaver.{h,cpp} src/bootfilegen/bootfilegen.cpp
2015-03-16Add support for database open with flagswarptangent7-14/+77
Add support to: - BlockchainDB, BlockchainLMDB - blockchain_import utility to open LMDB database with one or more LMDB flags. Sample use: $ blockchain_import --database lmdb#nosync $ blockchain_import --database lmdb#nosync,nometasync
2015-03-16Add mdb_flags variable to LMDB database openwarptangent1-1/+2
2015-03-16Add blockchain_import utilitywarptangent4-0/+894
This imports to the blockchain database from an exported blockchain file. It can be used to bootstrap a new database or to add blocks to an existing one. Supports: - both the in-memory and LMDB implementations - optional: batching, verification, testnet See help for usage. Based on work by tomerkon. See https://github.com/tomerkon src/cryptonote_core/bootfileloader.{h,cpp}
2015-03-15Blockchain: add get_db() accessor, needed for blockchain_importwarptangent1-0/+5
This handling may be changed in the future.
2015-03-15blockchain_converter: Add support for batch transactionswarptangent1-23/+173
Add log level support. Add testnet support. Add command-line options: --help --data-dir --testnet-data-dir --testnet --log-level --batch --batch-size --block-number See help for usage. Run at log level 1 to see profiling stats.
2015-03-15Update and relocate comment that applies class widewarptangent1-8/+14
2015-03-15Do store transaction's blob size in transaction_chain_entrySergey Kazenyuk2-4/+5
2015-03-15Use single get_transaction_hash to get both id and blob sizeSergey Kazenyuk1-2/+4
2015-03-13BlockchainDB implementations have names nowThomas Winget5-3/+20
In order to make things more general, BlockchainDB now has get_db_name() which should return a string with the "name" of that type of db. This "name" will be the subfolder name that holds that db type's files within the monero folder. Small bugfix: blockchain_converter was not correctly appending this in the prior hard-coded-string implementation of the subfolder data directory concept.
2015-03-10default mix factor in simplewalletsmooth1-10/+16
2015-03-06Moved BlockchainDB into its own src/ subfolderThomas Winget12-13/+72
Ostensibly janitorial work, but should be more relevant later down the line. Things that depend on core cryptonote things (i.e. cryptonote_core) don't necessarily depend on BlockchainDB and thus have no need to have BlockchainDB baked in with them.
2015-03-06update checkpointsmooth1-0/+1
2015-03-05add comment about avoiding overflowsmooth1-0/+6
2015-03-04minimum subsidy for mining incentives, remove unused LEGACY_FEE definesmooth3-4/+7
2015-03-04fixed English word list issue: 'launchpad' should be 'ourselves'Riccardo Spagni1-1/+1
2015-03-04fixed English word list issue: 'incline' should have remained 'inline'Riccardo Spagni1-1/+1
2015-03-01DNS checkpoint loading for testnet should now be correctThomas Winget4-4/+19
2015-03-01sending commands to forked daemon works on testnet nowThomas Winget1-0/+4
2015-03-01Fix tests building -- function signatures changedThomas Winget2-0/+3
2015-02-24fix locking in count-peers thread (2)rfree2monero4-12/+28
2015-02-242014 network limit 1.3 fix log/path/data +utilsrfree2monero6-63/+142
+toc -doc -drmonero Fixed the windows path, and improved logging and data (for graph) logging, fixed some locks and added more checks. Still there is a locking error, not added by my patches, but present in master version (locking of map/list of peers).
2015-02-24revert stop_daemon method to use correct exitThomas Winget1-1/+1
This was changed because sometimes the daemon does not complete its exit routine with this method, but as it does correctly wind most things down even if it gets stuck I've changed it back.
2015-02-24RPC calls for background daemon added inThomas Winget8-52/+301
The RPC calls the daemon executable uses to talk to the running daemon instance have mostly been added back in. Rate limiting has not been added in upstream, but is on its way in a separate effort, so those calls are still NOPed out.
2015-02-24Daemonize changes pulled in -- daemon buildsThomas Winget38-332/+3620
many RPC functions added by the daemonize changes (and related changes on the upstream dev branch that were not merged) were commented out (apart from return). Other than that, this *should* work...at any rate, it builds, and that's something.
2015-02-23Changed log level of debug message -- too spammyThomas Winget1-1/+1
2015-02-23BlockchainLMDB: Add profiling to tx_exists()warptangent3-1/+8
2015-02-23BlockchainLMDB: Add batch transaction support to tx_exists()warptangent1-6/+9
2015-02-23BlockchainDB, BlockchainLMDB: Add profiling for DB commitswarptangent3-0/+18
2015-02-23BlockchainDB: Add virtual function declarations for batch transactionswarptangent1-0/+3
2015-02-23BlockchainLMDB: Add check for open database to two functionswarptangent1-0/+3
2015-02-23BlockchainLMDB: Add support for batch transactionswarptangent2-55/+289
2015-02-23Improve block and tx processing efficiency by less repeat hashingwarptangent4-11/+28
BlockchainLMDB::add_block() BlockchainLMDB::add_transaction_data() BlockchainDB::add_transaction()
2015-02-23Add profiling to block and tx processingwarptangent2-0/+48
2015-02-23Move LMDB storage to subfolderwarptangent2-1/+12
2015-02-23Fix formattingwarptangent1-6/+5
2015-02-23Fix log statementwarptangent1-1/+1
2015-02-23Remove unused variablewarptangent1-1/+0
2015-02-23Add log statementwarptangent1-0/+1
2015-02-23Add and extend log statementswarptangent1-6/+10
2015-02-23Blockchain: match original function declaration from blockchain_storagewarptangent2-2/+2
2015-02-23Update year and formatting in licensewarptangent1-7/+7
2015-02-22Fix Blockchain::get_tail_id() to set parameter to last block number instead ↵warptangent1-1/+1
of height This reflects the behavior of blockchain_storage::get_tail_id(). Fixes #27 so that RPC method getlastblockheader works.
2015-02-22Revert "Bounds error, should fix #27"warptangent1-1/+1
This reverts commit 6f1c4b4c2c78c930fe30ed648e855a6ce55f7dcd.
2015-02-20Bounds error, should fix #27Thomas Winget1-1/+1
2015-02-202014 network limit 1.2 +utils +toc -doc -drmonerorfree2monero18-158/+175
new update of the pr with network limits more debug options: discarding downloaded blocks all or after given height. trying to trigger the locking errors. debug levels polished/tuned to sane values. debug/logging improved. warning: this pr should be correct code, but it could make an existing (in master version) locking error appear more often. it's a race on the list (map) of peers, e.g. between closing/deleting them versus working on them in net-limit sleep in sending chunk. the bug is not in this code/this pr, but in the master version. the locking problem of master will be fixed in other pr. problem is ub, and in practice is seems to usually cause program abort (tested on debian stable with updated gcc). see --help for option to add sleep to trigger the error faster.
2015-02-20removed not needed <netinet/in.h>rfree2monero1-1/+0
2015-02-202014 network limit 1.1 +utils +toc -doc -drmonerorfree2monero19-318/+560
Update of the PR with network limits works very well for all speeds (but remember that low download speed can stop upload because we then slow down downloading of blockchain requests too) more debug options fixed pedantic warnings in our code should work again on Mac OS X and FreeBSD fixed warning about size_t tested on Debian, Ubuntu, Windows(testing now) TCP options and ToS (QoS) flag FIXED peer number limit FIXED some spikes in ingress/download FIXED problems when other up and down limit
2015-02-202014 network limit 1.0a +utils +toc -doc -drmonerorfree2monero20-76/+2113
commands and options for network limiting works very well e.g. for 50 KiB/sec up and down ToS (QoS) flag peer number limit TODO some spikes in ingress/download TODO problems when other up and down limit added "otshell utils" - simple logging (with colors, text files channels)
2015-02-20added tx size to incoming_transfers RPC CallRiccardo Spagni2-0/+4
2015-02-02Add compile-time support for both db implementations: in-memory and LMDBwarptangent8-4/+56
Usage: default is lmdb for blockchain branch: $ make release same as: $ DATABASE=lmdb make release for original in-memory implementation: $ DATABASE=memory make release
2015-02-01Blockchain: reflect log updates from blockchain_storagewarptangent1-7/+7
See commit 4ba680f2946966df2030e5765e40ee0a36b112c4
2015-02-01Blockchain: reflect log and assert updates from blockchain_storagewarptangent1-37/+38
See commit cf5a8b1d6c3df615641e81328bb3d8cf80cd70e3
2015-02-01Blockchain: reflect log level of blockchain_storagewarptangent1-8/+8
Update to match LOG_PRINT_RED_Lx statements. See commit cf5a8b1d6c3df615641e81328bb3d8cf80cd70e3
2015-02-01Blockchain: reflect assert behavior of blockchain_storage for ↵warptangent1-0/+2
get_tx_outputs_gindexs()
2015-02-01Update recently added log statement to fix possible null dereferencewarptangent1-1/+5
This would have been triggered if function was called without fourth parameter and ring signature check failed.
2015-01-28make fallback compatible with newer slow-hashRiccardo Spagni1-0/+12
2015-01-27replaced 64-bit multiplication in difficulty.cpp with a portable versionRiccardo Spagni1-4/+34
2015-01-27replaced 64-bit multiplication in difficulty.cpp with a portable versionRiccardo Spagni1-4/+34
2015-01-27added portable slow-hash, updated makefile targets, fixed readmeRiccardo Spagni1-2/+152
2015-01-27fixed sse2 ifdefRiccardo Spagni1-2/+2
2015-01-27remove aes flag, detect no sse2Riccardo Spagni1-0/+2
2015-01-19Should fix std::min issues related to size_tThomas Winget1-2/+2
2015-01-14Fix seed node threaded DNS lookupwarptangent1-28/+41
Use copied value of seed node index during thread creation, not reference. - fixes segfault Use boost::thread::try_join_until() instead of an atomic flag result variable for each thread. Add and handle interrupt for thread timeout. - fixes segfault where a thread exceeds requested timeout and tries to assign results to a referenced, but now out-of-scope, variable in the main thread.
2015-01-14Remove code previously made unused and marked unusedwarptangent2-26/+0
2015-01-11Fix height assertion in Blockchain::handle_alternative_block()warptangent1-1/+1
It expects the total number of blocks of main chain, not last block id (off-by-one error). This again behaves like the same height assertion done in original implementation in blockchain_storage::handle_alternative_block(). This allows a reorganization to proceed after an alternative block has been added.
2015-01-11Fix comparison between main and alternate chain's cumulativewarptangent1-2/+10
difficulty. This fixes the continual reorganization between a main and alternate chain, using the same two latest blocks from each. The check that cumulative difficulty of the alternate chain is bigger than main's was not using main's last block, but incorrectly using the passed-in block's previous block. main_chain_cumulative_difficulty was being used in two different ways. This has been split up to keep use of main_chain_cumulative_difficulty consistent.
2015-01-11Remove a have_block() check so alternate block can be processedwarptangent1-7/+27
Remove have_block() check from Blockchain::handle_block_to_main_chain(). Add logging to have_block(). This allows blockchain reorganization to proceed further. have_block() check here causes an error after a blockchain reorganize begins with error: "Attempting to add block to main chain, but it's already either there or in an alternate chain." While reorganizing to become the main chain, a block in the alternative chain would be refused due to have_block() rightfully finding it in the alternative chain. The reorganization would end in rollback, restoring to previous blockchain. Original implementation didn't call it here, and it doesn't appear necessary to be called from here in this implementation either. When needed, it appears it's called prior to handle_block_to_main_chain().
2015-01-11Complete implementation of transaction removalwarptangent4-23/+97
Complete method BlockchainLMDB::remove_output() - use output index as the key for: m_output_indices, m_output_txs, m_output_keys - call new method BlockchainLMDB::remove_amount_output_index() Add method to remove amount output index. - BlockchainLMDB::remove_amount_output_index() - for m_output_amounts This also fixes the segfault when blockchain reorganization is attempted.
2015-01-11Use block index when obtaining block's difficulty for log statementwarptangent1-2/+2
Use last block id, not number of blocks (off-by-one error). Fixes error at start of blockchain reorganization: "Attempt to get cumulative difficulty from height <XXXXXX> failed -- difficulty not in db"
2015-01-11Add a --restricted-rpc flag to simplewalletmoneromooo-monero4-2/+36
It restricts RPC to a subset of "view only" commands. Kind of like a poor man's view key replacement.
2015-01-11Allow get_bulk_payments to return all payments regardless of payment IDmoneromooo-monero3-12/+45
by giving an empty list of payment IDs.
2015-01-09Fix transfers to support mixinswarptangent2-3/+42
Implement BlockchainLMDB::get_output_global_index() - returns global output index for a given amount and amount output index. Add information to debug statement for failed ring signature check within Blockchain::check_tx_inputs() Fixes bitmonerod RPC call "/getrandom_outs.bin" to return correct output keys, used in creating a transaction with mixins. TODO: get_output_global_index() could be refactored with part of get_output_tx_and_index() as the latter uses the former's functionality. Keep track of LMDB read transaction.
2015-01-09Fix transfers (without mixins)warptangent4-1/+85
Fix Blockchain::get_tx_outputs_gindexs() to return amount output indices. Implement BlockchainLMDB::get_tx_amount_output_indices() and call it from the function instead of BlockchainLMDB::get_tx_output_indices() Previously, Blockchain::get_tx_outputs_gindexs() was instead returning global output indices, which are internal to LMDB databases. Allows bitmonerod RPC /get_o_indexes.bin to return the amount output indices as expected. Allows simplewallet refresh to set correct amount output indices for incoming transfers. simplewallet can now construct and send valid transactions (currently only without mixins). This is a fix that doesn't require altering the structure of the current LMDB databases. TODO: This can be done more efficiently by adding another LMDB database (key-value table). It's not used during regular transaction validation by bitmonerod. I think it's currently used only or mainly by simplewallet for just its own incoming transactions. So the current behavior is not a primary bottleneck. Currently, it's using the "output_amounts" database, walking through a given amount's list of values, comparing each one to a given global output index. The iteration number of the match is the desired result: the amount output index. This is done for each global output index of the transaction. A tx's amount output indices can be stored in various other ways allowing for faster lookup. Since a tx is only written once, there are no special future write requirements for its list of indices.
2015-01-09throw inline functions need to keep exception typeThomas Winget1-3/+5
As it is useful for functions calling BlockchainDB functions to know whether an exception is expected (attempting to get a block that doesn't exist and counting it missing if not, to save time checking if it does, for example), the inline functions throw{0,1} need to keep the exception type information. Slight comment update due to copy/paste failure.
2015-01-09Fixes segfault in Blockchain::handle_alternative_blockThomas Winget2-6/+12
This commit should fix the segfault in Blockchain::handle_alternative_block, and also updates a few comments that were either incorrect or incomplete.
2015-01-06previous hash added to GBTRiccardo Spagni2-0/+3
2015-01-04Obtain tx hash and tx output index from amount and output offsetwarptangent1-1/+1
Fixes problem of obtaining incorrect outputs used for tx input. Reverts to earlier intended behavior that was fixed in previous commit's split of get_output_tx_and_index into two functions.
2015-01-04Fixes a bug with getting output metadata from BlockchainDBThomas Winget4-17/+37
Thanks to moneromooo-monero for spotting the bug.
2015-01-04db_lmdb: fix global index calculation off by 1moneromooo-monero1-1/+1
This finally fixes raw tx being accepted by the daemon.
2015-01-04update comments to reflect changed codeThomas Winget1-4/+1
2015-01-04db_lmdb: remove redundant checksmoneromooo-monero1-10/+4
2015-01-04blockchain_converter: add --testnet for converting testnet blockchainmoneromooo-monero1-1/+6
2015-01-04db_lmdb: do not give the group database write permissionsmoneromooo-monero1-1/+1
2015-01-04db_lmdb: catch attempt to remove block from an empty blockchainmoneromooo-monero1-0/+3
It would probably have thrown when not finding a block at height 2^64-1, but better make things clear.
2015-01-04db_lmdb: factor all the log+throw code pathsmoneromooo-monero1-485/+138
2015-01-04db_lmdb: factor the MDB_val setup codemoneromooo-monero1-197/+74
It makes the code simpler, avoids possible copy/paste errors (wrong sizeof, etc), and generally unclutters the calling code.
2015-01-04blockchain: fix wallet syncing from scratchmoneromooo-monero1-1/+2
When the wallet syncs from the first block, it is fine to start at the genesis block.
2015-01-04blockchain_converter: a bit more user friendly outputmoneromooo-monero1-2/+9
2015-01-04blockchain_converter: only call data path function oncemoneromooo-monero1-5/+4
2015-01-04blockchain: do not append "testnet" to the data directorymoneromooo-monero1-6/+0
It is already there (unless overridden via command line).
2015-01-04db_lmdb: remove block timestamp too when removing a blockmoneromooo-monero1-0/+6
2015-01-04db_lmdb: do not cast const awaymoneromooo-monero1-13/+13
2015-01-04db_lmdb: do not keep a dangling pointer to stack objectsmoneromooo-monero1-0/+4
2015-01-04db_lmdb: make cursor internal members privatemoneromooo-monero1-0/+1
2015-01-04blockchain_storage: refactor genesis block creationmoneromooo-monero2-16/+6
The existing assert is kept as it is stricter than the function's internal assert.
2015-01-04blockchain_storage: add consts where appropriatemoneromooo-monero2-110/+110
2015-01-04blockchain_converter: delete blockchain on succesful exitmoneromooo-monero1-0/+1
While the dtor implementation does not actually do anything, other paths do delete it, and the dtor might do someting later.
2015-01-04checkpoints: add consts where appropriatemoneromooo-monero2-7/+7
2015-01-04blockchain: add consts where appropriatemoneromooo-monero2-84/+84
2015-01-04blockchain_db: add consts where appropriatemoneromooo-monero3-121/+121
2015-01-04blockchain_db: factor some exception codemoneromooo-monero1-148/+48
Ideally, the log would go in the exception's ctor, but two log levels are used, so I'd need to specify the level in the ctor, which isn't great as it's not really related to the exception.
2015-01-04extraneous semicolon in Blockchain::complete_timestamps_vectorThomas Winget1-1/+1
credit here: https://bitcointalk.org/index.php?topic=583449.msg9562845#msg9562845
2015-01-04blockchain_converter: use the actual blockchain locationmoneromooo-monero1-3/+5
2015-01-04raised maximum mapsize for lmdb to ~16GBThomas Winget1-1/+1
2015-01-04build: add liblmdb to the cmake autodetection systemmoneromooo-monero1-1/+1
update for rebase (warptangent 2015-01-04) src/cryptonote_core/CMakeLists.txt (edit) - replace LMDB_LIBRARIES with LMDB_LIBRARY set from autodetection
2015-01-04more blockchain height-related fixes, syncing other nodes code this timeThomas Winget1-4/+4
2015-01-04~ didn't work, need hard path. debug print.Thomas Winget1-3/+5
2015-01-04very, VERY primitive blockchain converterThomas Winget5-14/+171
hard-coded config folder, hard-coded BlockchainDB subclass. Needs finessing, but should be testable this way. update for rebase (warptangent 2015-01-04) fix conflicts with upstream CMakeLists.txt files src/CMakeLists.txt (edit original commit) src/blockchain_converter/CMakeLists.txt (add)
2015-01-04add new checkpointing behavior to Blockchain classThomas Winget2-3/+78
2015-01-04Store output pubkeys separately, bug fixesThomas Winget2-9/+54
2015-01-04Minor bugfixes, redundancy removalThomas Winget3-10/+104
Minor bugfixes in block removal Storing outputs outside their transactions is largely unnecessary, and thus has been removed.
2015-01-04moar bug fixes, removed debug printsThomas Winget2-8/+4
2015-01-04BlockchainLMDB seems to be working*!Thomas Winget3-141/+155
* - Well, mostly. Haven't let it sync too far just yet. Currently trying to figure out the best way to deal with LMDB/mmap virtual memory pages.
2015-01-04some bug fixes, but still needs workThomas Winget3-35/+73
There are quite a few debug prints in this commit that will need removed later, but for posterity (in case someone wants to debug this while I'm away), I left them in. Currently errors when syncing on the first block that has a "real" transaction. Seems to not be able to validate the ring signature, but I can't for the life of me figure out what's going wrong.
2015-01-04Minor bug fixes and debug printsThomas Winget2-6/+122
Blockchain and BlockchainLMDB classes now have a debug print at the beginning of each function at log level 2. These can be removed at any time, but for now are quite useful. Blockchain runs, and adds the genesis block just fine, but for some reason isn't getting new blocks.
2015-01-04minor fixes to Blockchain.cppThomas Winget2-3/+7
2015-01-04Integrate BlockchainDB into cryptonote_coreThomas Winget8-24/+58
Probably needs more looking at -- lot of things were done...in a rushed sort of way. That said, it all builds and *should* be at least testable. update for rebase (warptangent 2015-01-04) fix conflicts with upstream CMakeLists.txt files src/CMakeLists.txt (remove edits from original commit) tests/CMakeLists.txt (remove edits from original commit) src/cryptonote_core/CMakeLists.txt (edit) - use blockchain db .cpp and .h files - add LMDB_LIBRARIES
2015-01-04All LMDB BlockchainDB implemented, not testedThomas Winget2-135/+900
All of the functionality for the LMDB implementation of BlockchainDB is implemented, but only what is in tests/unit_tests/BlockchainDB.cpp has been tested. This is basically add a block, see if you can get the block and a tx from the block. More tests should be added at some point.
2015-01-04LMDB blockchain: remove outputs and spent keysThomas Winget1-0/+63
2015-01-04Adding block data to LMDB BlockchainDB codedThomas Winget3-8/+258
Still needs testing (and need to write a few more unit tests), but everything should be there. Lots of unfortunate duplication, but...well, I can't see a way around it using LMDB. A couple of other minor changes in this commit, only slightly relevant.
2015-01-04Parts of LMDB impl of BlockchainDB done and workingThomas Winget4-69/+431
The rest should just be tedious copypasta and modification.
2015-01-04Initial commit of lmdb BlockchainDB implThomas Winget2-0/+472
2015-01-04Initial commit of BlockchainDB tests, other miscThomas Winget2-6/+25
miscellaneous changes to BlockchainDB/blockchain as well, namely replacing instances of std::list with std::vector
2015-01-04update new blockchain to build with new changesThomas Winget2-13/+34
Still need to add in the new checkpointing functionality, as well as touch up a few things, but is okay for now.
2015-01-04stupid past me, fixing typos and shit...Thomas Winget1-21/+21
2015-01-04missing typedefThomas Winget1-0/+3
2015-01-04import of BlockchainDB filesThomas Winget4-0/+3003
tried rebasing, tree-filter, and many other things. at this point, the history of these files previous to this can live on in my bc2 branch, as I'm importing them as-is to here.
2015-01-02year updated in licenseRiccardo Spagni137-139/+139
2014-12-15std::atomic_flag has no copy/move constructor, can't have a vectorThomas Winget1-9/+7
2014-12-15small typo in previous commitThomas Winget1-1/+1
2014-12-15DNS seed timeout and fallbackThomas Winget2-11/+61
2014-12-13onwards to 0.8.8.7Riccardo Spagni1-1/+1
Signed-off-by: Riccardo Spagni <ric@spagni.net>
2014-12-11Document existing functionwarptangent1-0/+6