Skip to content

V22.0

Compare
Choose a tag to compare
@zhyatt zhyatt released this 14 May 21:23
· 2135 commits to develop since this release
ef09e55

CHANGELOG

=========

Release V22.0

Full Changelog


Major Changes

Pull Request Title
#3208 Election scheduler
#3190 Prioritization
#3134 Final votes
#2881 Experimental ledger pruning

Protocol Changes

Pull Request Title
#3152 Optionally send confirmed frontiers

Node Configuration Updates

Pull Request Title
#3282 specify ip notation for preconfigured peers
#3148 This decreases the confirm_req_batches_max from 20 to 2
#3120 Increase default max LMDB size
#3122 Update online_weight_quorum toml comment
#3052 Update online_weight_quorum default to 67
#2998 Rollback messages config
#2947 [Pruning] Pruning configuration settings
#2855 Simplify RocksDB config options
#2832 Set default bootstrap initiator threads to 1

RPC Updates

Pull Request Title
#2843 BREAKING Change node_id from hash to account in telemetry RPC/websocket
#2977 BREAKING [Pruning] Support pruned chains in RPC & QT wallet
#3015 BREAKING Remove payment RPC
#2884 BREAKING Confirm delta
#3060 BREAKING Pending RPC to sort by absolute amounts when returning a subset
#3237 Change return details for "bootstrap_lazy" RPC
#3276 Default include only confirmed data for RPC supporting it
#3267 Deprecate RPC active_difficulty instead of removing it
#3147 Limit frontier request block count by default
#3080 Optional async for process RPC
#3039 Add confirmed_height in account_info RPC to be consistent
#3022 Add include_only_confirmed to account_balance & account_info
#2916 Fix error with work_cancel RPC request
#2874 Fix inconsistent online representatives list from RPC
#2903 Provide network_receive_minimum in RPC/WS active_difficulty
#2852 Stats RPC to print out rocksdb memory stats
#2829 Merge block databases

Websocket Updates

Pull Request Title
#3260 BREAKING Remove elections difficulty sorting
#3016 Add option to include votes in confirmation websocket

CLI Updates

Pull Request Title
#3050 Update CLI commands missing checks for reading config and overrides
#2979 Migrate LMDB database to RocksDB with new CLI command
#2950 Use multiple threads in CLI debug_account_versions and debug_unconfirmed_frontiers
#2915 Don't delete crash dump files with --debug_generate_crash_report
#2889 Modify CLI --debug_account_versions for epoch upgrade tracking
#2845 Display hardcoded and ledger block height in compare_rep_weights
#2861 Fix CLI test --debug_profile_bootstrap
#2835 Allow unescaped quoted strings with --config CLI
#2685 Improve mutex handling when generating stacktraces with NANO_TIMED_LOCKS/txn tracker
#2822 Prevent CPU usage in --debug_opencl

Developer/Debug Options

Pull Request Title
#3144 The build info shows following description: \
#2765 Allow filtering a specific mutex for tracking with NANO_TIMED_LOCKS
#3077 Add debug/release_assert overloads which output error message strings
#3065 Improve message logging for bulk pull requests
#3031 Remove debug_assert which is hit calling block_confirm on already confirmed block.
#2932 Fix nano::timer tick update after stopping
#2777 Add uncemented frontier output CLI command
#2836 RocksDB tests
#2912 Recognize IPv4-mapped loopback addresses
#2909 Add support for defer_lock in nano::unique_lock
#2888 Make logging election tally an optional config
#2880 Logging exception handler and fix for stable_log_filename on windows
#2877 nano_test_network => nano_dev_network, new nano_test_network
#2844 Add time retrieval latency profile to CLI diagnostics
#2681 Add ASIO completion handler tracking
#2840 Different log when the OpenCL library cannot be loaded
#2839 UPnP basic logging messages are more frequent than intended

Fixed Bugs

Pull Request Title
#3273 Fix active transactions pruning regression
#3274 Duplicated foward-reference declaration
#3269 Fixing 3-cycle possible deadlock
#3265 Election flush
#3252 Fix block processor add issue
#3158 Fix FreeBSD build error: "Cannot find source file: plat/plat/default/debugging.cpp"
#3146 clear_send_ids in vacuum/snapshot is using wrong txn object
#3142 Enable write tx for vacuum operation
#3106 TSAN error in confirmation height unbounded
#3051 Wallet create causing crash when confirming blocks
#3084 Fix online reps live votes update
#3085 Wallet store adhoc keys inconsistency with reps container
#3069 Add --rpcconfig option and fix wallet config bug
#3018 Fix qt wallet hitting a debug_assert when creating blocks
#3072 Removing duplicate roots from the same vote
#3035 Renew UPNP port lease
#3019 Enable OpenCL on macOS
#3020 Properly initialize array of atomics in ws server
#2997 Fix repcrawler loopback channel guard
#2983 Wallets search pending deadlock
#2957 Prevent immediate cleanup of new channels
#2966 Check if awaiting collection is empty before waiting on condition in conf height processor
#2956 Don't null out telemetry object
#2940 [RocksDB] assert compare data and not the address on iterator operator==
#2929 socket_server should accept and drop connections during overflow
#2897 Increase confirmation solicitor single-round caps
#2887 Avoid potential deadlock in work watcher
#2862 Don't crash using read-only CLI command with no ledger
#2837 UPnP existing lease and other misc enhancements
#2828 Invoke callbacks even during socket closures
#2833 Unresolved forks during initial bootstrap
#2831 Fix TCP message manager not notifying producers
#2825 Fix requeue pull for lazy bootstrap
#2823 Pre-sample block rate for bootstrap connections

Implemented Enhancements

Pull Request Title
#3281 Prevent not processed blocks addition to confirmed elections list
#3128 Update issue templates
#3257 Sighup reload bandwidth params
#3251 Change default active elections size
#3246 Remove frontiers confirmation start only after reaching cemented > hardcoded
#3211 fixes sha256 sum file generation
#3232 Block builders can only be used once, initialize at top of loop.
#3231 Check bulk push availability
#3188 Modernize unit tests: construct state blocks via builder
#3221 Refactory of block processor thread
#3218 Support pruned block with ledger::dependencies_confirmed function
#3164 Resolve issue with inactive votes cache not triggering elections to start
#3187 Modernize active_transactions::restart
#3185 Election encapsulation
#3186 Add vacancy metric to active transactions container.
#3181 Fix/Update the clang-format version to 10
#3174 Election start encapsulation
#3108 Add gap pending epoch open blocks to unchecked
#3155 Limit bulk pull processing for possible existing blocks
#3100 Reverse store iterator and selector for last record
#3173 Removing broadcasting state
#3149 Remove bootstrap restarting code
#3154 Throttled removal of rep crawler targets
#3107 Check open file descriptor limit, warn if low
#3098 Use frontiers age option for frontier_req client
#3136 Remove recently dropped check to restart elections
#3118 Disable peers banning after frontiers confirmation
#3125 Inactive votes cache timestamp
#3079 Republish difficulty updates to elections
#3103 Bootstrap tests improvements
#3117 Remove lazy destinations check
#2532 Add histogram support to stats
#3116 Move related blockstore functions together
#3110 Replace private_key uses with raw_key
#3101 Add worker task queue count to the stats
#2758 Store whole block in confirmation height processor queue
#3058 Various consistency changes
#3038 Remove epoch2 started code
#3081 Revert coroutine changes for core & rpc_test
#2871 Combine alarm and worker threads into a pool
#3086 Remove boost process code
#3059 Improve inactive votes cache memory allocation
#3029 Modify std::shared_ptr value parameters to const refs
#2763 Vote spacing
#3014 Remove telemetry signature partitions
#3048 Update online weight before checking quorum
#3026 Storing blocks according to tally in elections with forks
#3027 Republish only winners for forked elections
#3068 Limit failures for confirmed lazy bootstrap bulk pull
#3071 Moving voting constants in to their own class
#3064 Remove timestamp count in votes
#3040 Remove unnecessary heap allocations during ed25519 hashing
#2883 Remove conf height put during ledger processing on a newly opened account
#2994 Include block to fork confirm_req response
#2996 Erase dropped forks from the duplicate filter
#2879 Packed timestamp
#2925 Election mutexes to remove heavy active mutex contention
#3013 Add pruned node to maker
#2820 Using post-processing events for all operations
#3001 Constifying shared_ptr parameters to various functions.
#2976 [Pruning] Support pruned blocks in bootstrap actions
#2991 Avoid locking the work_watcher mutex in the request_confirm loop
#2992 [Pruning] Wallet receive action & search pending for pruned blocks
#2974 [Pruning] Accept pruned-related blocks in blocks processing & rollback
#2978 [Pruning] Support pruned blocks in confirmation height processor & active transactions
#2975 [Pruning] Use pruned blocks in rep crawler
#2987 Set thread names in db parallel traversal
#2981 Change usage of latest to accounts for consistency
#2982 Add timing_logging check before conf height timing output
#2938 [RocksDB] Modify some table/column family settings
#2863 Resolve data type conversion warnings
#2968 [Pruning] Ledger pruning functions
#2918 Move channel drop policy off of nano::socket and remove channel concurrency value as redundant
#2961 Election encapsulation
#2960 Removing unused variables.
#2936 Converting nano::socket::note from weak_ptr to node to a plain reference
#2955 Directly use socket shared_ptr in bootstrap_client
#2937 Use node::receive_confirmed synchronously
#2939 Convert nano::network periodic functions to use a steady timer instead of callbacks
#2865 Move all vote generation to the voting thread
#2934 Retrieve copy of wallets in scan_receivable
#2876 Improve ledger cache initialization with multiple threads
#2926 Non-functional change to clean up header inclusions.
#2761 Require explicit conversion from root/link to block hash or account
#2896 Atomic representation weight changes
#2856 [RocksDB] Use different column family options and prefix extraction for unchecked table
#2860 [RocksDB] Manually flush memtables if there are a large number of tombstones
#2914 Removing channel::callback
#2885 Add cemented frontier successor confirmation in request loop
#2907 Renaming ledger::can_vote to ledger::dependents_confirmed
#2788 Use Boost.Coroutine with asio/beast async calls in tests
#2902 Use improved OpenCL kernel
#2901 Relax mutex requirement for retrieving active difficulty
#2904 Increase default bootstrap interval
#2900 Temporarily pause the request loop in extreme situations
#2895 Constrained successor and destination block activation
#2894 Extracting votes cache bootstrap start function
#2891 Remove election fallback behaviors and adjusted multiplier calculations
#2886 Inactive votes election hint
#2890 Election insertion cleanup
#2850 Epoch 1 legacy blocks work validation before processing
#2854 [RocksDB] Use estimated unchecked count
#2795 Write database queue functions should be NoOps with RocksDB
#2872 Remove UDP status/stats dead code
#2873 Add source block epoch to sideband information
#2849 Cleanup nano::process_return
#2827 Local votes history to replace votes cache
#2679 Make std::condition_variable::wait* compatible with NANO_TIMED_LOCKS
#2858 [RocksDB] Do not fill block cache from ranged iterators
#2848 Unnecessary frontier_get when processing state block forks
#2756 Use block cache from unbounded processor when checking if block is processing
#2842 Specify OpenCL clCreateBuffer() flags
#2821 node config spelling errors
#2736 Improve distributed_work_factory item management
#2775 Refactor shared testing code from core_test
#2770 Remove node v18 and earlier upgrade support

Build, Test, Automation, & Chores

Pull Request Title
#2878 BREAKING Enforce Cxx17
#3283 Simplify inactive_votes_cache_election_start test
#3279 Improve confirmation_height.gap_live core test
#3254 New Rep weights live file (#3238)
#3272 Adjust node.aggressive_flooding test
#3270 Adjust active_transactions.pessimistic_elections & network.last_contacted
#3258 Prevent blocks conflict in RPC pruned tests & improve confirmation in RPC pending tests
#3259 Update active_transaction.inactive_votes_cache_fork with election scheduler changes
#3131 Update MiniUPnP to version 2.2.2
#3183 stop deploying live on latest
#3215 Updating unit tests in preparation for election scheduler changes.
#3184 Fixing test issue found with asan.
#3132 Update GoogleTest to release 1.10.0
#3172 Test fix
#3135 Update beta genesis and magic number from V22.0DB10 reset
#3129 Improve elections related tests
#3130 Database final votes support
#3042 Make fuzz_buffer compile again after message_parser changes
#3123 Update missing nano::mutex changes
#2629 Make bootstrap_processor.process_state more robust under tsan
#3102 Fix test rpc.confirmation_active
#3096 Add missing include(msvc2017)
#3093 Process async test should use state block
#3090 Add recent constref change to rpc secure as well
#3088 more changes regarding github actions security hardening
#3082 Increment retry date string
#3062 Fix intermittent node.bootstrap_bulk_push failure
#3061 Deploy "Test" net artifacts correctly
#3057 follow lib naming convention of pre-compiled boost on windows
#3044 Fix intermittent rpc.receive_work_disabled segfaults
#3056 Fix copy pasta error with test network variables
#3054 Allow for manual triggering of artifact runs
#3053 cleanup various scripts
#3037 Customizing Test Network Parameters
#3043 Fix rpc online_reps unit test
#3049 Fixing boost to 1.70 on windows via artifact cache
#3034 github container repo
#3033 Allow [[deprecated]] attribute
#3024 use $GITHUB_ENV instead of set-env
#2972 Translate some tests with UDP functionality to TCP
#3025 Update to correct rocksdb submodule commit
#3010 Update RocksDB version to 6.13.3
#3005 Adding plist files to ignore filter.
#3000 add test network to build artifacts for non DB tags
#3006 Remove Guilherme's pubkey from security policy
#2995 Make entry.sh more portable by removing all bashisms
#2969 Fix link to contributors guide
#2990 correct lib install path for nix
#2988 build bootstrap artifacts to be compatible with rpath linking
#2984 Add coroutine/context boost shared libraries to the artifacts
#2980 Fix intermittent failure of node.local_votes_cache_generate_new_vote
#2973 Beta reset in prep for rocksdb heavy testing
#2964 update LD_LIBRARY_PATH for building
#2971 This fixes a race condition in node.node_receive_quorum.
#2967 [Pruning] Pruned blocks slow test
#2962 Fix rpc.send_fail TSAN failure
#2943 Add RocksDB as a submodule
#2948 Use 1 thread to service I/O operations to allow TSAN runs.
#2941 Avoid duplicate workflows for local pulls
#2933 Fix core_test build with Boost 1.74
#2930 [RocksDB] Set max_write_buffer_size_to_maintain explicitly
#2928 Move forward rocksdb minimum
#2935 Update beta V22 bootstrap weights following reset
#2927 Fix build error when using NANO_TIMED_LOCKS_IGNORE_BLOCKED
#2919 [TSAN] minor race in rpc.send test
#2911 Add Boost.Coroutine to bootstrap_boost.sh script
#2908 Frontier confirmation cleanup
#2905 Lower request loop min_sleep for tests
#2898 Docker base update
#2847 Changelog generator grab pull from commit message
#2868 Increment major version to 22
#2830 Beta reset for V22 development
#2859 extend test retry deadline 12/31/2020 23:59:59 UTC
#2834 update lmdb to 0.9.25
#2838 Fix secure RPC build on msvc
#2780 Use ASSERT_TIMELY in tests where possible

Other

Pull Request Title
#3127 Limit peers per subnetwork
#3209 Project-wide update with clang-format-10 and new formatting options including initializer-list indentation.
#3206 Fixing static initialization order on Window
#3180 Add new GPG public key
#3170 Add new GPG public key
#3124 Change qualified root from previous-root to root-previous
#2970 Transport loopback channel
#2946 [Pruning] Basic pruning blocks storage & database upgrade
#2944 Use empty uint8_t peer data
#2920 [RocksDB] Reduce number of blocks processed in batch by block processor

Other Updates

Commit Title
ef09e55c Merge pull request #3284 from nanocurrency/v22rc2_cherry_pick
2a3afcb1 Correcting version number since we don't use _PATCH numbers.
21097ccf Increasing patch release number to signify V22RC1
2b23fd47 Qt test: disable wallet.status and introduce wallet status with peer
6838a59a Remove x or pruned exists fn (#3216)
f801b615 Bugfix: signal handlers called twice for each signal received
a0f90721 Do not repeat core_test in CI
ebc851b1 Fix tests quorum_minimum_confirm_fail, quorum_minimum_update_weight_before_quorum_checks
7672d4ed Fix core test case election.quorum_minimum_confirm_success (#3242)
9e04e156 Remove printing of log to stderr (file descriptor limit too low)
7b1b51c4 Handle signals with boost asio signal handler
5e1aa73c Merge pull request #3219 from dsiganos/dimitrios_siganos_gpg_pubkey
29e3a1dd GPG public key for Dimitrios Siganos
5f8e4d7d Merge pull request #3063 from cryptocode/unit-fix-work_watcher-confirm-while-generating
c8630c09 Merge pull request #3028 from SergiySW/network/tcp_endpoint_value
f15adfeb Merge pull request #3078 from cryptocode/wallet_republish-rpc-fix
d473d21c Fix wallet_republish crash during bootstrap
ad0a92f7 Fix intermittent work_watcher.confirm_while_generating failure
3839e8cc Persistent TCP channel endpoint value

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

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

Below are the sha256 sum hashes for version 22.0
Signature Verification can be run against argakiig.asc in source repo (etc/gpg/)


071da96356f76ba60c67305af132ae697792d34e2655701480156456035d2dde  nano-22.0.tar.gz
ad1876c81467aa8331d1d757b281a5a7de6458446fd7d98c15f999825feea78d  nano-node-22.0.0-Darwin.dmg
df12accaba4ceda6eb968a9f5f44e3b57b559253aeac3f0f3136b7470ffc59a5  nano-node-22.0.0-Linux.deb
9e23956746b3b02fc575a2c917ae20b0bc786893c4c679217b1353393af647ce  nano-node-22.0.0-Linux.tar.bz2
9C682A2BD4EEF5BA8B87B8B8A92D210626A0AE96F680D6C570A2AE8DEAFEF63A  nano-node-22.0.0-win64.exe
77B694EB60019C856B9D83C4F19E102EEAEBC110BFE12EF85CD6B2167869DE26  nano-node-22.0.0-win64.zip
7719030a877a5726456da4d295729f16bc6820850a1687298886d9ce90dce636  nanocurrency-22.0-24.el7.src.rpm
47951a776507f6c8dd71a92af4cfd76fb8d459dbc2d716cad585135cc5911aa4  nanocurrency-22.0-24.el7.x86_64.rpm
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEc+pdEgPPsADHbxJjyW2zlQ3kDroFAmCfVwEACgkQyW2zlQ3k
Droy8wgAg1DYOVW55IJpVSBiBLROtRXg7eqWCanne4/1FA0qMscWHbMdMU1NSXCS
TrFoJLPxSf4RIKJMk1RwB6Hyo9hmLqWBYGjYJFOlvQOkv9O0xW3eZIVmtGoYB3Ic
rYlzHP+RbxFGP8v/sR9E3S+MjVxvOe0caOmrAz69b6rsCe+C+7er1F1jxnI6vqDY
RD5GtI/cSgkMlA3gY/7CG28mx2Seyix5GBnDhWD0Hxqc6yzCH+XIhTRPsHiEjb3M
oHt1pTIKTFPVjnCEBvOpN6tsb4KoKHTyr7eMX8FFm8hnIhKrQ5TEU3xYy3Lxo9Ci
hLe0z5fMKIaU3Ul2B4SKQxXDUFJd5g==
=itw8
-----END PGP SIGNATURE-----