V22.0
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-----