Skip to content

@argakiig argakiig released this Jul 11, 2019 · 186 commits to master since this release

Change Log

Release V19.0 (2019-07-11)

Full Changelog

Major Changes:

  • RPC server is moved to a new process [#1874]
  • Trending active_transactions difficulty for an average [#1858]
  • Add confirmation height [#1770]
  • Add support for realtime network traffic over the bootstrap TCP port [#1548]

Implemented enhancements:

  • Move confirm_frontiers higher up request loop [#2141]
  • Cleanup inactive channels from rep crawler [#2132]
  • Improve broadcast_confirm_req_batch delays and max size [#2130]
  • More aggressive setting confirmation height of frontiers during low tps [#2126]
  • Send confirm_req each request_confirm loop [#2125]
  • Always notify on active difficulty updates [#2109]
  • Fix intermittent test issue and cleanup unused vars [#2108]
  • Improve batching multiple blocks pending confirmation height processing [#2105]
  • Add observer stats for confirmations [#2100]
  • Use default vote_generator_delay if missing (for RC updates) [#2093]
  • Web socket subscription for active difficulty [#2091]
  • Bidirectional TCP sockets [#2087]
  • Move WebSocket confirmation_type into message [#2079]
  • Only pass active confirmations to the http callback [#2078]
  • Don't start confirm_frontiers () if elections count > active_elections_size [#2076]
  • Use correct index when iterating prioritized frontiers [#2069]
  • Add launch flag --disable_udp [#2063]
  • Use a convenient global instead of passing use_memory_pools explicitly [#2059]
  • Add active container observer [#2058]
  • Make announcement_long delay 2 rounds [#2056]
  • active_transaction.roots bounding by config instead of confirmation rate [#2051]
  • Configurable confirmation history container [#2049]
  • Don't escalate confirmed previous/source for elections [#2048]
  • Attempt to start TCP connections to known UDP peers [#2045]
  • Update broadcast_confirm_req to use confirm_req by hash [#2036]
  • Move SYN cookies & response channels to separate classes [#2029]
  • Add configurable vote generator delay and bundling test [#2028]
  • Use a memory pool to reduce block deserialization heap usage [#2025]
  • Factor out network [#2024]
  • Increase server timeout to receive TCP header [#2022]
  • Capture SIGINT and SIGTERM to clean up sockets [#2018]
  • Set minimum difficulty for RPC "work_generate" [#2006]
  • Fix off by one error in frontier req server [#1992]
  • Bounded active transaction [#1990]
  • Prioritize frontiers for background confirmation [#1982]
  • Finish up difficulty/multiplier semantics in RPC work_generate and work_validate [#1981]
  • Move io_threads to rpc process config node [#1980]
  • Add specific rpc process config options [#1977]
  • Add severity logging levels, and send errors to syslog/Event Viewer (incl failed rollbacks for confirmed blocks) [#1973]
  • Framing support for realtime network messages [#1972]
  • Move common UDP/TCP channels functions to transport [#1971]
  • Fixing dynamic re-work and trend from elections [#1968]
  • Makes sure a write lock can be avoided when launching an inactive_node [#1967]
  • Send live network messages over TCP [#1962]
  • Backup config files when upgrading [#1959]
  • Pass command line arguments (network/data_path) to nano_rpc child process [#1957]
  • Simple ledger validation CLI command [#1956]
  • Reduce length holding read transaction open for in confirmation height processor [#1954]
  • Print info about network and path, when running daemon [#1953]
  • Allow long running read transactions to be broken up [#1951]
  • Fix our warnings [#1942]
  • TSAN suppressions file [#1941]
  • Make new random_constants class for not_an_account [#1928]
  • Try to fix some version-specific clangformat formatting issues [#1927]
  • Activate confirm_req_hashes for beta network [#1926]
  • Set defaults for block_sideband [#1922]
  • Add more information after a segmentation fault [#1921]
  • Replace xxHash with blake2b [#1919]
  • Add CLI command for dumping any frontier-unchecked key matches [#1915]
  • Cleanup test files on Windows after executing test binary [#1910]
  • Immediately stop inactive node active_transactions loop [#1909]
  • Websockets - subscribe to votes [#1908]
  • Websockets - filtering options [#1907]
  • Websockets - check for subscriptions before proceeding [#1906]
  • Remove delay exiting node in request processor [#1904]
  • Add pulls cache for long bootstraps [#1903]
  • Update confirmation heights with new async timing [#1899]
  • Delete unused rpc.cpp [#1897]
  • Recalculate work from wallet [#1895]
  • Port config cleanup, allow running tests alongside beta node [#1891]
  • Remove vote generator delay [#1889]
  • Add copying operation to block builder [#1886]
  • Create new node ID on each launch & support keepalive with preferred ports [#1885]
  • Reduce work.eco_pow intermittent failure rate [#1882]
  • Update confirmation height in another thread [#1877]
  • When clearing confirmation heights set the genesis account to be 1 [#1875]
  • RPC server is moved to a new process [#1874]
  • Refactor preparation for moving RPC out of process [#1872]
  • Remove ed25519 and lib library circular dependency [#1870]
  • Remove circular dependency between secure <-> lib libraries [#1867]
  • Various minor coding style updates [#1863]
  • Trending active_transactions difficulty for an average [#1858]
  • Reinstate preconfigured keepalives [#1854]
  • clang for travis [#1846]
  • Support sending decimals from QT wallet [#1843]
  • Allow block_processor variables tuning with launch flags [#1842]
  • Websocket support [#1840]
  • Add the concept of message channels to the node. [#1837]
  • Moving network sizing functions [#1836]
  • Separating the concepts of: [#1835]
  • Renaming udp_buffer to message_buffer [#1834]
  • Removing send_confirm_req functions [#1833]
  • Add difficulty limit for RPC "work_generate" in config.json [#1830]
  • Clean up and simplify calls to get buffers to messages. [#1829]
  • Externally connect to the tcp socket [#1828]
  • Move RPC out of node process [#1827]
  • Rename republish_x to flood_x to better describe what we're doing. [#1825]
  • Remove node_id_version [#1824]
  • Remove nano::network::on [#1823]
  • RPC account_history add block height and optional reverse [#1822]
  • Periodically check for unconfirmed frontiers and start elections [#1821]
  • Get account history starting at a block and ending in head [#1820]
  • Log wallet lock/unlock [#1817]
  • Start elections for all forks of unconfirmed blocks [#1815]
  • Output error if lmdb env cannot be opened [#1811]
  • Use adjusted difficulty for trees in active transactions [#1810]
  • Use to_bytes in bootstrap as well [#1807]
  • Require standard layout in mdb_val [#1806]
  • RPC accounts_pending - sort by amount [#1804]
  • Improve representative crawler [#1803]
  • Confirmation height enhancement [#1801]
  • Improve CLI --wallet_import [#1800]
  • Support difficulty for RPC "work_generate" [#1798]
  • Replace nested if/else with map for no argument rpc_handler functions [#1796]
  • Add TCP server timeout [#1790]
  • Time limited logging [#1789]
  • Use the error code overloads for socket shutdown/close [#1786]
  • Don't output useless log file entries [#1785]
  • Include all representatives with delegated weight in online representatives list [#1784]
  • Support difficulty for RPC "work_generate" [#1780]
  • Support difficulty for OpenCL generate_work () [#1775]
  • Add subtype field for state blocks in RPC block_info, blocks_info [#1774]
  • Add confirmation height [#1770]
  • RPC config versioning, remove unused options [#1768]
  • Cleanup unused member functions in secure library and various other cleanups [#1764]
  • Use optimized Argon2 source for all x86_64 builds [#1762]
  • Improve rep tracking [#1756]
  • Check that full is not empty and assert [#1753]
  • Remove implicitly converted argument [#1751]
  • Support difficulty for OpenCL PoW [#1749]
  • RPC pending - sort by amount [#1748]
  • Ability to limit CPU rate for POW [#1734]
  • --diagnostics CLI option to check & update config.json file [#1733]
  • Network selector [#1729]
  • RPC unopened [#1727]
  • Investigate supporting the Expect header in RPC [#1671]
  • Check if block processor is full in bulk push server [#1668]
  • Allow block_processor variables tuning with launch flags [#1660]
  • Slight OpenCL improvements [#1634]
  • Add support for realtime network traffic over the bootstrap TCP port [#1548]
  • RPC Account history filter [#1355]
  • PoW Client Compute and Resend Work based on network load [#1336]
  • Enhancement Request: Update Ledger RPC action to show unopened accounts with pending balance [#1166]
  • Update HTTP Callback to Support HTTP keep-alive [#1125]
  • Enhancement Request: add optional account_filter option to account_history RPC [#1110]
  • Easy way to switch between beta/live network [#1099]
  • RPC/CLI inconsistency with wallet_change_seed [#793]
  • Official wallet doesn't support decimals [#247]
  • Add information to logs about password & wallet unlock [#92]

Fixed bugs:

  • pre release maintenance [#2146]
  • Set genesis account to have a confirmation height of 1 after initial upgrade [#2144]
  • set default active_election_size to 50k [#2143]
  • Strange TSAN warnings running nano_rpc & making simultaneous requests [#2140]
  • test validating #2116 [#2138]
  • RPC stop action can take a long time to close the node down [#2135]
  • Improve assert in TCP node_id_handshake [#2133]
  • [TSAN] Use only async signal safe functions in signal handlers [#2131]
  • tsan: missing lock in ws active_difficulty unit test [#2129]
  • Improve assert in tcp_channels::process_message () [#2127]
  • Docker cache [#2121]
  • update default limit to (5 * 1024 * 1024) or 5Mb/s [#2119]
  • remove else and always flush if over config.json active_elections_size [#2116]
  • only log if blocks have been processed and logging enabled [#2115]
  • fix windows installer path [#2112]
  • Use confirmation request count instead of announcement term [#2111]
  • Minor Readme file updates [#2107]
  • Flag to disable TCP realtime network [#2103]
  • Fix locking issue and intermittent failure in rpc.active_difficulty [#2102]
  • Test bug introduced by #2090 [#2101]
  • Add ability to clear stats from Qt wallet [#2099]
  • TCP: Don't connect to or log invalid peers [#2097]
  • Fix vote_generator loop inconsistency during high load [#2095]
  • Formatting issues on master [#2094]
  • Optional include_trend for RPC active_difficulty [#2090]
  • Add optional cemented count to block_count RPC command [#2089]
  • Fix duplicate iterating in conf height processor with self and circular sends [#2088]
  • Update slow_test [#2086]
  • Use node_flags for delay_frontier_confirmation_height_updating [#2085]
  • Add optional argument to block_count RPC for including cemented blocks [#2083]
  • Prevent multiple observer calls for confirmed block [#2082]
  • Provide test for WS topic election_stopped and fix bad topic/content [#2081]
  • Create websocket subscription for active_difficulty changes [#2080]
  • Use the MDB_NOMEMINIT flag with the ledger db environment [#2077]
  • Remove copies of blocks container from network::flood_block_batch [#2075]
  • Fix ASAN issue in ws unit tests [#2074]
  • [Valgrind] Increase deadline timer in the rpc.simultaneous_calls test to account for valgrind slowness [#2073]
  • Fix assorted compiler warnings [#2071]
  • Factor out online_reps and gap_cache [#2070]
  • Disable memory pools when running on Mac [#2067]
  • Websocket/extended confirmation support [#2066]
  • Consistently send TCP keepalives [#2064]
  • Limit socket queue_size [#2062]
  • Fix TSAN error with work_watcher [#2061]
  • TSAN error for send_node_id_handshake test [#2060]
  • Reduce lock time in UDP ongoing keepalive [#2057]
  • Check if existing block is already confirmed in active_transactions add [#2055]
  • Handle accounts which have the same number of uncemented blocks when prioritizing frontiers [#2053]
  • Ledger tests related to epoch conflicts [#2052]
  • Fix deadlock in tests (Continued) [#2050]
  • Use a pool allocator for shared_ptrs with blocks, elections and votes [#2047]
  • Remove count byte from confirm_req by hash [#2046]
  • Remove unused std::expected library [#2044]
  • Fix deadlock in tests [#2043]
  • Fix initialization order bug in nano::node [#2042]
  • Factor out vote processor [#2041]
  • Add node_constants half_period [#2040]
  • update docker config template and include default rpc config [#2038]
  • Change gap cache voters to use a vector [#2037]
  • Bandwidth limiting [#2035]
  • Support for boost 1.70 in load tester [#2034]
  • Remove node dependency from secure library [#2033]
  • Include ordering fix [#2031]
  • Factor out election [#2030]
  • Remove unnecessary copies when using lmdb cursors [#2026]
  • Sort includes by category using clang-format [#2023]
  • Increase tcp_io_timeout for test TSAN/ASAN builds [#2019]
  • Bump protocol version [#2017]
  • Update stringstream test sink to bounds check the strings [#2016]
  • remove sleep from test [#2015]
  • Add threshold optional to RPC unopened and ledger [#2014]
  • Fix TSAN error for the rpc.database_txn_tracker test [#2013]
  • active_transactions test cleanup [#2012]
  • Update test script [#2011]
  • Join threads in socket tests [#2009]
  • generate difficulty was passing hash by ref [#2008]
  • WebSocket fixes and improvements [#2007]
  • Rename active_difficulty RPC response [#2005]
  • active_transactions.prioritize_chains timing fix [#2004]
  • Decrease logging level for "Reserved sender" message [#2003]
  • Fix TSAN error with test confirmation_height.conflict_rollback_cemented [#2002]
  • Websockets: prevent re-sub [#2001]
  • Remove debugging assert from socket [#2000]
  • use correct namespace to fix literal usage in active_transactions [#1999]
  • Fix load tester for mac with boost 1.69 [#1998]
  • Fix RPC secure build [#1997]
  • Fix test by disabling confirmation, as a result the block wont be con… [#1996]
  • Reinstate debug_rpc command [#1995]
  • Apply Blake2b AVX2 changes [#1994]
  • Clean up json upgrade code/unused variables [#1993]
  • Test peer caching on node restart [#1991]
  • Rewrite load tester in C++ [#1989]
  • Add unnecessary lambda capture to please VS2017 [#1988]
  • Show opencl device memory stats [#1987]
  • Fix UDP channels insert [#1986]
  • Update config path on macos/boost 1.69 [#1985]
  • Work multiplier format and RPC work_validate fix for lower difficulties [#1984]
  • Fix race when notifying bootstrap initiator listeners [#1983]
  • Add modify callback to prevent violating boost multiindex invariants [#1979]
  • Prevent (optionally) block processor batched writes from being logged by the lmdb tracker [#1978]
  • Remove unnecessary --debug_validate_ledger CLI option [#1974]
  • Version and allow_unsafe upgrade in ipc config [#1970]
  • No longer use bin & lib sub-folders in the installers [#1969]
  • Fix tests failing after PR#1939 [#1966]
  • Stop node when using an incompatible ledger [#1964]
  • nano_rpc included in packaging [#1961]
  • updating work_watcher::run [#1960]
  • Fix difficulty check assert in work_pool [#1958]
  • Add pull request failure to stats [#1955]
  • Fix RPC block_create error getting overridden [#1952]
  • Add blocks_not_found in RPC blocks_info response rather than an error [#1950]
  • Fix regression introduced by 100-continue [#1949]
  • Fix some websocket test issues [#1948]
  • LMDB transaction time tracker [#1947]
  • Update Dockerfile [#1946]
  • Add nano_rpc to Docker [#1945]
  • Work value in RPC work_validate response [#1943]
  • Improve receivable_processor.send_with_receive test [#1940]
  • Add work check for ledger::process () in Debug mode [#1939]
  • TCP socket rewrite with strand and queueing support [#1938]
  • update weights for beta network [#1937]
  • [TSAN] prevent warnings for confirmation_height.gap_live test [#1936]
  • TSAN - Fix websocket tests [#1935]
  • Increase request_interval_ms for TSAN/ASAN build [#1934]
  • Fix ASAN warning in wallet.history (again) [#1933]
  • Update conflicts.adjusted_difficulty test [#1932]
  • Fix some asan rpc issues [#1931]
  • Protect udp_channel members with a mutex [#1930]
  • Websocket tests: Use error_code when closing [#1924]
  • Fix confirmation_height.single test [#1920]
  • fix tests and update logic of work_watcher::run() [#1918]
  • Support Boost v.1.70 [#1916]
  • Support Boost 1.70 [#1914]
  • Websockets - Fix tests breaking with TSAN [#1913]
  • [TSAN] Protect local_endpoint value with mutex [#1912]
  • Remove strand assert [#1905]
  • build.state().from() set build flags [#1902]
  • Fix vote::to_json() [#1900]
  • Add callback for confirmed block in RPC block_confirm [#1898]
  • Fix TSAN warning in node.no_voting & wallet.update_work_action [#1894]
  • Fix TSAN warning with work.eco_pow [#1893]
  • Fix TSAN warning with nano::logger_mt [#1892]
  • Fix ASAN warning for uint128_union.decode_decimal [#1890]
  • Fix ASAN warning in rpc.account_history [#1888]
  • Fix ASAN warning in wallet.history [#1887]
  • tsan: Fix race in repcrawler and remove redundant weight computation [#1881]
  • Use asio strands in udp channels [#1880]
  • Fix lock ordering issue in udp_channels [#1876]
  • TSAN: fix races in udp channels [#1873]
  • Remove secure <-> node circular dependency [#1869]
  • Fix secure rpc build [#1868]
  • Replace assert with null-check during nodeid handshake [#1866]
  • Fix missed enum in switch [#1864]
  • Rewrite load tester in Python [#1862]
  • Some improvements to load tester script [#1861]
  • Extend lifetime of size response in rpc handler [#1859]
  • Generalize installer path [#1855]
  • Add clang format guard in more lambdas [#1853]
  • Fix active_transactions/signature checker initialization order [#1852]
  • Unsafe encoding in IPC [#1851]
  • Fix race in tcp_listener_timeout_keepalive [#1850]
  • qualified_root type alias [#1849]
  • rpc.online_reps test udpate [#1848]
  • Fix assert assignment for Debug builds [#1841]
  • RPC 100-continue and max request size [#1819]
  • missed instances of nano::work_pool::publish_threshold [#1818]
  • Add required stake to confirmation_quorum [#1816]
  • Valgrind fixes & suppressions [#1814]
  • Add optional difficulty in RPC "work_validate" [#1812]
  • Improve Boost download links in bootstrap_boost.sh [#1805]
  • Make wallet.multithreaded_send slow test async [#1802]
  • Failed to import wallet [#1799]
  • Fix intermittent select_account test failure [#1797]
  • V18 - RPC Pending request returns empty list for a period of time after callback [#1793]
  • Set CI boost min/default to 1.67 [#1791]
  • Merge aliases in RPC process_request () [#1788]
  • Return error message for failed async RPC actions [#1779]
  • account_representative_set RPC returns block of zeros instead of an error [#1778]
  • RPC: Support json literals as block input [#1777]
  • Update Crypto++ to stable version 8.1 [#1776]
  • Deprecate payments\_ RPC calls [#1773]
  • Add "seed" option to CLI [#1772]
  • Emit "nano_" prefixed addresses [#1771]
  • Display a warning if TSAN/ASAN used together as CMake options [#1767]
  • Add allow_local_peers option for not_a_peer () & reserved_addresses () functions [#1766]
  • Improve block_exists table lookup order [#1765]
  • Minimum version of boost required in cmake should be 1.67 [#1763]
  • Command to generate input to RNG test suites [#1761]
  • Remove expect_death test [#1759]
  • RPC: option to render block as JSON [#1740]
  • Improve QT wallet.seed_work_generation test [#1732]
  • Deprecate payments\_ RPC calls [#1723]
  • Return last account restored in RPC wallet_change_seed [#1718]
  • RPC wallet_change_seed should return the first account created [#1717]
  • Raw support in Qt wallet [#1675]
  • Migrate Gtest to submodule [#1661]
  • Not all versions of GCC support -fsanitize-blacklist [#1656]
  • URI standard for representative change [#1497]
  • Boulton (V17.0) repeating callbacks for older blocks [#1489]
  • Is there implemented block cementing? [#1018]
  • Windows: Old version is not removed after upgrading to a new release [#821]
  • Impossible to distinct between a send/receive/change using the blocks in RPC [#809]
  • Issues detect by valgrind [#654]
  • Suggestions for RPC doc enhancements [#620]

Additional binary releases:

  • Official Docker Instructions
  • Nano CentOS repo
    • sudo yum-config-manager --add-repo https://repo.nano.org/nanocurrency.repo
    • sudo yum install nanocurrency
    • nano_node installed to bin

Hashes and GPG Signature (keys located in source etc/gpg/).

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Below are sha256sum hashes for version 19.0
Signature verification can be done against the signature for argakiig in the source
code repository (etc/gpg/)

1ceec8b710ec4b3314217ff33a3ce451ce2edf3a5372a4cdfffab61b3a7c868a *nano-19.0.tar.gz
82e089f9d25bec28cf6b3e28d3dd9d9dc07fc66ea0f8eec66ea6ce9cbc8df36c *nanocurrency-19.0-15.el7.src.rpm
cf2fb0000cd3cdc3741c5b09e9f3eed3cadde62eb896d9ec97089290d705fac1 *nanocurrency-19.0-15.el7.x86_64.rpm
56da7180c8fcf73f4a7c4efd1e09781b4eca590e0d2ce956cf9e451b2e5527fd *nanocurrency-debuginfo-19.0-15.el7.x86_64.rpm
e1babd95b90f2e6aac344bf0f5dd69a073f0edf931e66ac7844547170f045b99 *nano-node-19.0-Darwin.dmg
e6fc435593c59316d88ab96c240a70f59e0a891216df81ca5fef91afb06dd914 *nano-node-19.0-Linux.tar.bz2
36ac51460e0301f69f898fd2a93436bf4f95afe007d1121fa2b3c16cb070a589 *nano-node-19.0-win64.exe
754d8383bdf4dcface5895f7977cbbc7a5eeeb71a2be184b8d1c714b9dc148bc *nano-node-19.0-win64.zip
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEiV3g3/hlCzeiBTTjgERoJPn9OloFAl0nZDAACgkQgERoJPn9
OlpW3wgAjTUp2XLKIl35pntUaSek+IYR8GDNnl6EDTIxPsG/Rj4GzkkSHUrlE/Uu
6KQuVBShV2J7j+ekAxjgMl/td9Uh/Od9IAXWFhtOglEdlqoR+1XwsnwHyMvxa/98
A3vvMdg9wYQHYBWjvOJpRF0T6IQWoaIdArPa0/VZhDn6AChl29+AJ6yaBJznQHSN
DbBsWMTzUFXYU7rrDWY7Ti9m79uMYt7LNxS1DVhdepftIini5isFm3OJw6AJCR+X
OD+LiG23MRnn3ZNeTTPa0qInnrEf36QyiyqG/h4dW9kIUlsu2bzWAIE2vS+jxdtA
U92J/4Bcxp08QEMDTkRI8JrEultgfw==
=JHyg
-----END PGP SIGNATURE-----

Assets 10
You can’t perform that action at this time.