aboutsummaryrefslogtreecommitdiff
path: root/external (follow)
AgeCommit message (Collapse)AuthorFilesLines
2015-07-16hyc accidentally typo'd...we shall never speak of this againRiccardo Spagni1-1/+1
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-15** CHANGES ARE EXPERIMENTAL (FOR TESTING ONLY)NoodleDoodleNoodleDoodleNoodleDoodleNoo1-20/+0
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-06-02re-add Windows DNS bug fix, per c0de96f8bd2f64884255f9b0b61a4775ada5e3e6Riccardo Spagni1-1/+0
2015-05-31update libunboundRiccardo Spagni59-2575/+4559
2015-04-22Require BerkeleyDB to be installed (for now) if building non-staticThomas Winget1-7/+2
2015-04-14update lmdb64Riccardo Spagni22-365/+201
2015-04-07Merge BlockchainDB into upstreamThomas Winget59-0/+32311
2015-04-07Only compile BerkeleyDB as an option in non-staticThomas Winget1-16/+18
2015-04-06updated unbound cmake for static buildsRiccardo Spagni3-2/+34
2015-04-05minor CMakeLists fix for Unbound, ldns -> sldnsRiccardo Spagni1-7/+7
2015-04-04reinstate accidentally removed CMakeListsRiccardo Spagni1-0/+201
2015-04-02Merge pull request #251Riccardo Spagni1-1/+0
c0de96f Fixed DNS resolution bug in Windows (Thomas Winget)
2015-04-02Fixed DNS resolution bug in WindowsThomas Winget1-1/+0
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 unbound from upstreamRiccardo Spagni155-3514/+5556
2015-03-29Merge upstream into blockchainThomas Winget1-1/+1
2015-03-26fix cmake miniupnpc typomeshpoint1-1/+1
which matters on case-sensitive filesystems
2015-03-17Pull blockchain changes into berkeleydb branchThomas Winget59-36/+16093
2015-03-17Move db_drivers/ to external/Thomas Winget58-0/+32259
Also change LMDB Cmake variables to CACHE rather than upgrading them through several parent scopes.
2015-03-17fixed msys2 / mingw folders based on architecture, added license to unbound ↵Riccardo Spagni1-0/+28
CMakeList as that is not part of standard Unbound
2015-03-17Revert "Moved db_drivers/ into external/ for consistency"Thomas Winget30-16221/+0
This reverts commit b21335642e75b35d3b178a754f4cdb2314989cd1.
2015-03-17Revert "Build fixed, goofed up some CMake"Thomas Winget1-4/+0
This reverts commit 8b82f3c57ffdc4dc190f4755c61d74d8359c8c0f.
2015-03-16BerkeleyDB Blockchain building, not working yetThomas Winget1-5/+5
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 Winget2-1/+28
Make Cmake things aware of BerkeleyDB and BlockchainBDB Make the BlockchainDB unit tests aware of BlockchainBDB
2015-03-10Build fixed, goofed up some CMakeThomas Winget1-0/+4
Forgot that CMake vars set to PARENT_SCOPE will still vanish if that parent scope goes...out of scope. LMDB vars elevated one more scope to compensate for moving db_drivers/ into external/
2015-03-09Moved db_drivers/ into external/ for consistencyThomas Winget30-0/+16221
2015-01-04Remove unused dependencyThomas Winget26-11043/+0
2015-01-04Adding libglim as an external libraryThomas Winget26-0/+11043
libglim is an Apache-licensed C++ wrapper for lmdb, and rather than rolling our own it seems prudent to use it. Note: lmdb is not included in it, and unless something happens as did with libunbound, should be installed via each OS' package manager or equivalent.
2015-01-02year updated in licenseRiccardo Spagni14-3/+3
2014-12-04update unbound from upstreamRiccardo Spagni72-2655/+1261
2014-12-01moved rapidjson to external folder, fixed CMakeRiccardo Spagni24-0/+8020
2014-11-18mingw: copy required libraries to the build treeBen Boeckel1-0/+16
These are found as shared libraries and need to be copied so that PATH manipulation isn't necessary outside of an msys shell.
2014-11-10miniupnpc: bump the _POSIX_C_SOURCE feature macroBen Boeckel1-1/+1
FreeBSD doesn't expose IPv6 structures without this.
2014-10-24unbound: fix getaddrinfo detection for 32-bit windowsBen Boeckel1-1/+11
On Windows, getaddrinfo is part of the Windows API and as such is __stdcall, not __cdecl, so check_function_exists fails because the declaration doesn't match the mangling __stdcall has. Instead, use a header to include the symbol as declared on the system and use check_symbol_exists instead. Tested-By: greatwolf on IRC
2014-10-24unbound: fix type checkingBen Boeckel1-2/+2
2014-10-24unbound: plumb the libdir upBen Boeckel2-1/+6
This is necessary for static builds where the linking is passed around to dependent targets, but the library is lost.
2014-10-24cmake: support 2.8.7Ben Boeckel1-4/+4
Older versions of CMake support LINK_{PUBLIC,PRIVATE} while newer versions prefer PUBLIC and PRIVATE instead, but still support the LINK_ prefix.
2014-10-23cmake: remove scream-make (all-caps functions)Ben Boeckel1-15/+15
2014-10-23unbound: import cmake build systemBen Boeckel4-82/+1428
2014-10-23miniupnpc: clean up build systemBen Boeckel1-65/+5
Changes: - remove amiga and solaris conditionals - remove -fPIC hackery (use POSITION_INDEPENDENT_CODE instead) - remove tests - retab
2014-10-23cmake: minor cleanups (indentation and typos)Ben Boeckel1-0/+0
2014-10-23cmake: remove configuration variablesBen Boeckel1-11/+0
CMAKE_BUILD_TYPE is meant for single-config build tools (e.g., make and ninja) while CMAKE_CONFIGURATION_TYPES is meant for multi-config build tools (e.g., Xcode and Visual Studio). They should not be mixed or manually set.
2014-10-23cmake: factor out error messagesBen Boeckel1-3/+3
Instead of using BoldRed and ColourReset everywhere, wrap it up in a function.
2014-10-23miniupnpc: clear out else/endfoo command argumentsBen Boeckel1-15/+15
2014-10-06fixed miniupnpc dynamic targetRiccardo Spagni1-2/+4
2014-10-06fix for mingw not playing nicely with libunbound configure, fix for ↵Riccardo Spagni2-1/+7
correctly finding static libs on various operating systems
2014-10-06set the winsock variable differently on WindowsRiccardo Spagni1-1/+2
2014-10-06fixed configure_command for libunbound under mingwRiccardo Spagni1-1/+1
2014-10-06turns out mingw does actually produce .a libs and not .dll.aRiccardo Spagni1-3/+1
2014-10-06quieten CMake when it can't find packagesRiccardo Spagni1-3/+3
2014-10-06removed required flags from miniupnp and unboundRiccardo Spagni1-2/+2
2014-10-06include openssl in linbunbound static linking, added errors for openssl and ↵Riccardo Spagni1-3/+14
expat
2014-10-06reference the correct unbound static libRiccardo Spagni1-4/+3
2014-10-06added libtool's install commandRiccardo Spagni1-7/+10
2014-10-06use the correct CMake variable for static buildsRiccardo Spagni1-1/+1
2014-10-06build libunbound correctlyRiccardo Spagni1-21/+50
2014-10-06fix missing parenthesesRiccardo Spagni1-1/+1
2014-10-06build libunbound from external if no local libunbound or for static buildsRiccardo Spagni1-197/+71
2014-10-05added unbound to external depsRiccardo Spagni394-0/+199264
2014-10-05fix for miniupnpc static compile under WindowsRiccardo Spagni1-2/+4
2014-10-02remove dangling upnp port mappings, updated miniupnpcRiccardo Spagni70-219/+718
2014-09-24fixed FreeBSD miniupnpc nigglyRiccardo Spagni1-1/+14
2014-09-24never use the baked-in miniupnpc on FreeBSD because explosionsRiccardo Spagni1-1/+1
2014-09-21fixed miniupnpc static buildingRiccardo Spagni1-1/+1
2014-09-11fixed UPNP_LIBRARIES scopefluffypony1-2/+6
2014-09-11added license to CMakefluffypony1-0/+32
2014-09-11more CMake tweaks to allow detection on OS Xfluffypony2-182/+188
2014-09-10more dynamic miniupnp fixesfluffypony1-5/+2
2014-09-10use external miniupnpc if availablefluffypony2-3/+193
2014-09-09exclude local miniupnpc for FreeBSD, install from ports insteadfluffypony1-10/+12
2014-04-09Port mapping with UPnPAntonio Juarez77-0/+10322