V20.0
Change Log
Release V20.0 (2019-11-12)
Major Changes:
- Add ability to start pow server as child process [#2331]
- Support epoch 2 [#2310]
- Active elections loop tuning [#2306]
- TOML config file support and migration [#2221]
- Adds RocksDB support [#2197]
- RPC publish optional work_watch flag to add to work_watcher [#2168]
Semantic Changes:
- Classify traffic stats correctly [#2309]
- Verify pubkey against special keys in wallet [#2299]
- Fixes account_history RPC to include receive blocks when filtering accounts. [#2244]
- Use node_ prefix for node ID [#2191]
- Assert for disabled bootstrap modes [#2163]
- Remove querying pending confirmation height in various operations [#2156]
- Accept multiplier in work_generate and work_validate [#2151]
Implemented enhancements:
- Improve bootstrap for accounts with public key = existing block hash [#2400]
- Improve bootstrap frontiers confirmation [#2394]
- Lazy bootstrap memory usage improvements [#2385]
- Vacuum after upgrade [#2370]
- Use std::condition_variable_any with timed locking [#2365]
- Lazy bootstrap retry limit [#2362]
- Confirm frontiers for bootstrap with multiple failures [#2349]
- Non-blocking UPnP discovery [#2346]
- Attempt to fetch account from block hash in RPC work_generate [#2339]
- Unchecked cleanup tuning [#2336]
- Restart dropped elections for unconfirmed blocks with higher PoW [#2335]
- Add ability to start pow server as child process [#2331]
- Basic confirmation request loop enhancements [#2327]
- CLI command to output the total number of (un)opened account versions [#2323]
- Periodic rep crawler weights update [#2319]
- Add lazy bootstrap possible links and accounts [#2315]
- Allow node to work without work generation [#2312]
- RPC epoch_upgrade [#2304]
- Update broadcast_confirm_req_batch to handle PoW priority [#2303]
- Strong types for the various bit unions [#2300]
- Stacktrace with backtrace to display files and lines [#2298]
- Lazy bootstrap cleanup & basic improvements [#2292]
- Some minor cleanup [#2291]
- Add block count cache [#2290]
- Fixing some unused variable warnings. [#2285]
- Replace account_info::rep_block with representative account [#2283]
- Enhance block processor filter [#2282]
- Handle work generation failure and cancel [#2281]
- Split bootstrap source files [#2274]
- Disable unchecked cleanup if node is not synchronized [#2272]
- Add log when a block difficulty is updated in active transactions [#2270]
- CLI --debug_validate_blocks enhancement [#2269]
- Refactoring epochs [#2268]
- Track length of time mutexes are held for [#2267]
- Add config option to conditionally enable RocksDB backend [#2266]
- Prevent possible from_multiplier () function overflow [#2265]
- Prevent adjusted difficulty overflow for extremly high or low difficulty [#2260]
- Prevent dropping of unchecked on restart if node is not synchronized [#2257]
- Distributed work refactor [#2255]
- Enhancements to OpenCL work handling [#2247]
- Wrap boost::asio::async_write to ensure lifetime of buffers [#2240]
- Start frontiers confirmation after initial bootstrap [#2236]
- Enforce upper case for hashes/signatures string output [#2235]
- Fire callback & add to history after confirmation height is set [#2233]
- Allow Cmake AVX2 builds for Windows [#2232]
- Reduce time holding read transaction in vote processor [#2231]
- Distibuted work fixes [#2230]
- Watch blocks separately in work watcher [#2228]
- Configurable work watcher period [#2222]
- Improve throttled received block for bootstrap [#2220]
- Use max config difficulty internally [#2218]
- Throttled received block for bootstrap [#2216]
- Add counter in stats for number of incoming blocks dropped [#2215]
- Config option for single line logging records [#2214]
- Beta reset with new genesis and lower work threshold [#2207]
- Travis/artifacts to s3 [#2204]
- Provide optional automatic ledger/wallet backups before an upgrade [#2198]
- Adds RocksDB support [#2197]
- Process wallet blocks outside of block processor queue [#2196]
- In http callback, don't log any http responses indicating success as errors [#2193]
- Callback response misleading [#2192]
- Add frontiers confirmation modes [#2175]
- RPC publish optional work_watch flag to add to work_watcher [#2168]
- Use confirm_req by hash + root for upgraded peers [#2164]
- Assert for disabled bootstrap modes [#2163]
- Cache recently arrived votes [#2159]
- Improve votes caching for same account & increase max cache size [#2155]
- Prioritize node wallet frontiers during background confirmations [#2154]
- Accept multiplier in work_generate and work_validate [#2151]
- Improve docker build speed on multi-core machines [#2148]
- Improve stacktrace output during release_assert [#2142]
- Static type safety for the union types [#2117]
- Provide optional automatic ledger/wallet backups before an upgrade [#1690]
- No write transactions on I/O threads [#1264]
- Logging output can spread multiple lines, which makes it difficult to export [#806]
- Node crashes with no error message if the database can't be opened [#761]
Fixed bugs:
- Update live bootstrap_weights [#2404]
- Node id handshake container not protected during push [#2402]
- Warn if control is enabled with non-local bind address [#2401]
- [ASAN] UPNP url memory leak [#2397]
- Updates to TOML generated docs [#2396]
- update dockerfile to use cached rocksdb [#2395]
- [TSAN] Data race in active_difficulty.recalculate_work test [#2393]
- Fix occasional failures for core_test.distributed_work* tests [#2392]
- use cached build artifacts [#2391]
- Incorrect total memtable size used with RocksDB [#2390]
- [Valgrind] Various uninitialized data accesses [#2389]
- Fix early return preventing mutex lock in attempt_restart_check [#2387]
- Prevent concurrent bootstrap populate_connections () [#2386]
- [Valgrind] Uninitialized memory in distributed_work.no_peers test [#2384]
- Add mutex lock to RPC bootstrap_status [#2383]
- Fix lazy mutex unlock via mutex [#2382]
- Target osx 10.12 deployment [#2381]
- RPC block_create fixes [#2380]
- [ASAN] memory leak between tcp channels and sockets [#2378]
- Add error handling to RPC process without json_block [#2377]
- Stop work generation before stopping threads waiting for work [#2375]
- regex check for beginning of string -v allowing --vacuum to fall through [#2374]
- Fix link ordering issue in core_test (ubuntu/boost 1.71) [#2373]
- allow for updated TARGET usage by updating cmake in nano-env:base [#2372]
- Adjust single-hash confirm requests [#2371]
- Improve distributed_work stopping with ongoing worker tasks [#2369]
- Fix non-restarting timer in vote processor log [#2368]
- Badge URLs [#2367]
- Do not increase pull attempts counter after network errors [#2366]
- Latest release, latest tag and discord badges [#2364]
- move min bootstrap and traffic to v16 [#2363]
- Docker USER support [#2361]
- ASAN leak when exiting node [#2360]
- Improve sample configuration file [#2359]
- Update travis beta-osx job with cached qt [#2358]
- Update Argon2 to release 20190702 [#2357]
- ASAN error in vote_by_hash test [#2356]
- Distributed work test failures under ASAN [#2355]
- Add upnp port mapping description [#2354]
- TSAN error in node.peers test [#2353]
- Add support for launch flags passed to nano_wallet [#2352]
- TSAN error with block work [#2351]
- Update beta network bootstrap weights for v20, cutoff 14M [#2350]
- Fix link ordering issues [#2348]
- Fix bootstrap attempt not stopping [#2347]
- Suppress RocksDB TSAN warnings with Clang [#2345]
- create build cache for mac qt in external repo and pull in for testing and artifacts. [#2344]
- Fix disabled ongoing unchecked cleanup [#2342]
- RPC unchecked json_block option [#2341]
- Output error message with qt wallet if RocksDB is enabled in config but is unsupported [#2340]
- Fix active difficulty calculation [#2338]
- Update from_multiplier () overflow checks [#2337]
- tsan: fix race in inactive_votes_cache_multiple_votes [#2334]
- include nano_pow_server as a submodule and build into ci framework for tagged releases [#2333]
- Fix work_pool.opencl test hanging [#2332]
- Secondary list of peers for generating work [#2330]
- Fix UPnP [#2329]
- Object stats for work watcher container [#2328]
- Profile work validation [#2322]
- generate sample node and rpc toml after building nano_node target [#2321]
- Add confirmation request count to election_status [#2320]
- Account creation refresh in qt wallet [#2318]
- Fix init order warning [#2317]
- Add some RocksDB TOML config options to tune memory usage [#2316]
- Don't comment toml tables in generate_config [#2314]
- Set NANO_ROCKSDB define even when set to OFF [#2313]
- Snapshot/Vacuum should use the rocksdb config option [#2311]
- Classify traffic stats correctly [#2309]
- Quality of life updates for distributed work [#2308]
- ws keepalive [#2307]
- Active elections loop tuning [#2306]
- Make generate_config produce commented-out entries by default [#2305]
- Checking for frontiers only if necessary [#2302]
- Verify pubkey against special keys in wallet [#2299]
- Fix a bug in the rep_block -> representative conversion [#2297]
- Support --config option in Qt wallet [#2295]
- Fix rpc.work_peer_bad [#2294]
- Websocket subscription for work notifications [#2289]
- Build RocksDB library as portable in docker [#2288]
- Add --config option to rpc process [#2287]
- Improve bootstrap attempt locking [#2286]
- docker
--cache-from
set as single string argument with = [#2284] - Fix off by one in broadcast_confirm_req_batch [#2280]
- Fix active transactions difficulty update for state blocks [#2279]
- Fixing test to use unique_path each time. [#2278]
- Use distributed work in work watcher [#2277]
- add master tag for beta and caching for subsequent artifacts_beta builds [#2276]
- add rocksdb to build artifacts lacking it [#2275]
- Fix possible issue in active_transactions.adjusted_difficulty_overflow_min test [#2273]
- Fix delay in stopping the node [#2271]
- Non-blocking work watcher loop [#2264]
- Prevent supurious wakeup in active transactions request loop [#2263]
- Set USE_RTTI before building RocksDB in docker [#2261]
- Cache cemented count [#2259]
- No longer need enable_control when getting the cemented count [#2258]
- Post to worker thread in qt wallet when doing write tx's on io threads [#2256]
- Remove preferred TPC response channels [#2254]
- Extend toml default-configs test [#2252]
- Fix some time-related configs being overriden with 0 [#2251]
- Lambda formatting that works across clang-format versions [#2250]
- Update weights following beta refresh distribution [#2249]
- Use defaults for amounts in toml [#2248]
- Move protocol versions to network_params [#2246]
- No required options in TOML parsing [#2245]
- Fixes account_history RPC to include receive blocks when filtering accounts. [#2244]
- update beta network header_magic_number to finalize beta network reset [#2243]
- Docker changes for new TOML config [#2241]
- Fix TSAN error in adjusted difficulty test [#2234]
- Simplify process_loop log timing by using nano::timer [#2229]
- Set application/json as header content type for work peer requests [#2227]
- Header 'Content-Type': 'application/json' not set in work peer requests [#2224]
- Remove landing store [#2223]
- TOML config file support and migration [#2221]
- Fix failing slow_tests [#2219]
- Cache rep weights [#2217]
- Make some changes suggested from cppcheck [#2213]
- Add mdb database test from v14 to v15 [#2212]
- Increase lifetime of temporary rep variable [#2209]
- Simplify vote generator logic with a dual sleep [#2203]
- Deprecate nano- and xrb- address support [#2201]
- Fix rpc.node_id test [#2200]
- Only use -Werror by default with ci [#2199]
- Add support for election info in websocket confirmations [#2195]
- Wallet actions can take a long time due to flush() being called [#2194]
- Use node_ prefix for node ID [#2191]
- Fix building error caused by #2151 [#2189]
- boost 1.70 requires log_setup component specifically updated CMAKE 1.… [#2185]
- RPC version network label and identifier [#2184]
- Fix lazy bootstrap balances insert [#2183]
- Principal representative factor as a network constant [#2182]
- Update node ID to use node_ instead of nano_ prefix [#2181]
- escaping regex for deployment on master or releases/v* branches [#2180]
- fix boost downloads [#2178]
- More preparation for new database backends [#2177]
- Extract confirmation height to its own database [#2174]
- Move alarm/operation out of node [#2173]
- add git commit hash and compiler info to logging and version calls [#2170]
- Travis/streamline [#2169]
- Allow the RPC server to be run on a different system [#2162]
- Update entry script [#2160]
- Fix compile errors in release mode after warning->error change [#2158]
- Add RocksDB to the build system [#2157]
- Remove querying pending confirmation height in various operations [#2156]
- Fix node_id assign for bootstrap_server [#2152]
- Remove extra core utilised during docker deployment build [#2150]
- Fix unused variable error in deployments [#2147]
- [Valgrind] Check if running under valgrind before doing death tests [#2145]
- Refactor ledger database code for reuse with different backends [#2136]
- Suggestion: allow docker container to die when broken [#2123]
- Remove compiler warnings (incl from third party headers) [#2072]
- Fix slow_tests [#1923]
- Show active network in RPC version [#1884]
- Migrate config.json to reference and override files in TOML format [#1878]
- Do not rewrite config.json on node boot [#1781]
- Docker Image - Redirect logs output to Docker logs [#1612]
Additional binary releases:
Hashes and GPG Signature (kesy located in source etc/gpg/
).
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Below are sha256sum hashes for version 20.0
Signature verification can be done against the signature for argakiig in the source
code repository (etc/gpg/)
f762b74b209aae4d0e8b41b87cb39224c58600bfe693d8c4b417a70ed32e8a7b *nano-20.0.tar.gz
c4bd90aba5ce18f69f2335a6e268e8f0708b83cd1ec1ce1ad1ecb0846518ec95 *nanocurrency-20.0-19.el7.src.rpm
111b3540e6508267d77e3a042e6195057c02c00928ebf985fd6bd9bb74f22db2 *nanocurrency-20.0-19.el7.x86_64.rpm
977e07268f9da89debfa4dba0ff6575ac6d8379d5d9cf9d6e29adc00d607e176 *nanocurrency-debuginfo-20.0-19.el7.x86_64.rpm
b770c78e7bbce29604b9d83edf36498319b3d568f1d1a9132acdb004f3e20ce4 *nano-node-V20.0-Darwin.dmg
ab03b67acf7114fce73a8ff0582bf375f959311b4b8b85938164149e21dce5a4 *nano-node-V20.0-Linux.tar
353010b60631ee7af898792f5d8ef6d19330284497985effc7985fa3bec308e3 *nano-node-V20.0-win64.exe
92f730c20e11ee7d12c6c9c6f5b68b2d25c8c491a797a74bf6aea3500db54325 *nano-node-V20.0-win64.zip
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEEiV3g3/hlCzeiBTTjgERoJPn9OloFAl3LWKcACgkQgERoJPn9
OlqJ7wgAjrSm5/I1lhriFkPsetigaoZnF3SWf/nNE+9neiXoSzMl1J0z5b1eA8cT
XolvkiBoYsBuRKbC3JuKSoFlv84OePKCJZvuhxgApCNdKw7C6g1KQ/TQnOoopAY6
Q+fzUSMKmX5u7wcRD/0f4Y1vgdqoopj6eILpzw3zvOoNGeX0oMwpOPkJp9xkRVxL
AcUUkpy6uz64SdjCMuLxMBSjmZaNr2M7nsOPQvonR7trjjd833qLhCyr808PfLuW
88R3XgMc+/wICVSPOVkV2BNZ+Q03juTK4vi93si82rPm/+MnYAtRRDth5O6OtkBL
lq5zoRIjGvUtPpHvn/Q47ck27KZR9g==
=dCo6
-----END PGP SIGNATURE-----