Skip to content

V20.0

Compare
Choose a tag to compare
@argakiig argakiig released this 12 Nov 20:13
· 40 commits to master since this release

Change Log

Release V20.0 (2019-11-12)

Full Changelog

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-----