V21.0
CHANGELOG
Release V21.0
Full Changelog
Major Changes
Pull Request | Title |
---|---|
#2535 | Election state refactor |
#2487 | IPC 2.0 |
#2545 | Sideband upgrade using epoch byte for is_send/receive/epoch |
#2446 | Node telemetry |
Protocol Changes
Pull Request | Title |
---|---|
#2701 | Dont peer with v20 and earlier after epoch 2 block is seen |
#2683 | Increase minimum supported protocol version to 17 |
#2667 | Validate work difficulty during ledger processing |
Node Configuration Updates
Pull Request | Title |
---|---|
#2787 | Double default bandwidth limit config |
#2727 | Safely read override values when no config file is present |
#2724 | Clarify nano_pow_server configs are not in use |
#2588 | LMDB sync options and new config settings |
RPC Updates
Pull Request | Title |
---|---|
#2499 | BREAKING Bootstrap attempts and connections/pulls separation |
#2671 | BREAKING Handle epoch_2 work thresholds in the wallet and most RPCs |
#2689 | BREAKING Change response for RPC work_validate with implicit difficulty |
#2804 | Make RPC name consistent with stats, websocket & protocol naming for telemetry |
#2754 | Optional "block" given to RPC "work_generate" to infer difficulty |
#2753 | Flood difficulty updates from RPC process |
#2752 | Result difficulty in RPC block_create |
#2718 | Epoch upgrader as an async task |
#2704 | Asynchronous epoch upgrade RPC |
#2703 | Difficulty calculation for RPC block_create |
#2684 | Epoch 2 started flag in ledger cache |
#2619 | Election refactor follow up |
#2569 | Work version concept |
#2560 | Request telemetry data for local node |
#2481 | Upgrade confirmation height table to include cemented frontier |
#2414 | Add block and voters count in election information |
#2424 | Fix RPC secure (TLS) |
#2420 | Add database vendor string to RPC version |
IPC Updates
Pull Request | Title |
---|---|
#2644 | Add Flatbuffers schema evolution rules to IDL |
Websocket Updates
Pull Request | Title |
---|---|
#2774 | Enable WebSocket server by default in Docker image |
#2734 | Websocket notification for RPC work_generate without peers |
#2729 | Websocket new_unconfirmed_block |
#2634 | Add telemetry response websocket callbacks |
#2566 | Incremental options for ws confirmation subscription |
#2562 | Fake websocket client to test the node websocket server |
#2471 | Websocket bootstrap subscription |
#2444 | Indeterminate vote status and enhanced websocket vote sub |
CLI Updates
Pull Request | Title |
---|---|
#2794 | CLI commands incorrect ledger cache setup |
#2749 | Multithreaded --validate_blocks |
#2725 | CLI command for a frontier confirmation speed test |
#2719 | CLI compare_rep_weights to compare ledger and hardcoded weights |
#2707 | Add difficulty and multiplier to CLI work generation commands |
#2637 | Read config file for CLI commands |
#2594 | Allow CLI --config values for inactive node tests |
#2606 | Launch flag --allow_bootstrap_peers_duplicates |
#2575 | Add flag for vote_processor capacity and tests |
#2579 | Configurable inactive votes cache size |
#2435 | Add CLI command for better LMDB compaction |
Deprecation/Removal
Pull Request | Title |
---|---|
#2555 | Disable UDP by default |
#2769 | Deprecate --batch_size/debug_mass_acitvity CLI options |
Developer Wallet
Pull Request | Title |
---|---|
#2427 | qt dev wallet deserialization fix |
#2419 | Set wallet representative with RPC receive on unopened accounts |
Developer/Debug Options
Pull Request | Title |
---|---|
#2802 | Clarify election difficulty update log message |
#2793 | Add logging section to rpc config to optionally disable logging |
#2791 | Fix insufficient work logging |
#2762 | Add cemented block log timings |
#2746 | Fix Xcode warnings |
#2731 | New stats for elections |
#2591 | friendly backtraces in actions |
#2540 | Lower beta network work threshold to 1/64x base |
#2515 | Additional ledger stats |
#2489 | Log when voting and warn if voting with more than one account |
#2412 | Fix work_cache_blocking logging bug |
Fixed Bugs
Pull Request | Title |
---|---|
#2800 | Fix open blocks not getting activated through dependencies |
#2799 | Slow test fixes |
#2796 | Retrieve block when activating dependencies |
#2782 | Stuck uncemented blocks after heavy load |
#2781 | Union std::hash coverage |
#2767 | Fix previous balance in active_transaction::insert () |
#2766 | Votes from local representatives should not be flooded on processing |
#2744 | Tally votes on conflicting block with no inactive votes |
#2733 | Remove invalid uses of epoch_1 work threshold |
#2723 | Some confirmed block observer callbacks being missed |
#2664 | Incorrect cemented count during conf height algo transition |
#2706 | Prevent more rare deadlocks due to races for condition variables |
#2651 | Using relaxed atomics for counts not involved in control flow in conf height processor |
#2696 | Remove assert if a delayed work cache request is not found |
#2652 | Consistently add conflicting block to election |
#2674 | Modify inactive cache to prevent multiple insertions for confirmed |
#2675 | Prevent getting stuck in block processor flush |
#2659 | Signature checker blocking fix |
#2650 | Telemetry results not correctly utilising cache timeouts |
#2648 | Fix wrong number of representatives in confirmation solicitor |
#2609 | [RocksDB] Only delete from unchecked when existence is guaranteed |
#2593 | Start vote generator for changed winner only if voting is enabled |
#2582 | Check against op aborted on secure rpc acceptor shutdown |
#2563 | Fix election calling confirm_if_quorum after destruction |
#2553 | Inactive votes cache confirmation status |
#2546 | Restore max block processor signature verification batch size |
#2530 | Remove representatives with closed channels |
#2527 | Allow rep crawler targets with ephemeral ports |
#2519 | Resolving hostnames in distributed_work |
#2502 | Prevent possible issues with ledger contaning pending records only for burn account |
#2488 | Unchecked cache not handling duplicate entries or unchecked_clear |
#2477 | Support multiple work peers in the same host |
#2472 | Confirmation solicitor revamp |
#2462 | Process RPC incorrect enable_control checking when using watch_work |
#2451 | Avoid replying to confirm_req with repeated votes |
#2438 | Wallet representative counts consistency |
#2429 | Remove representation table during v15 upgrade |
#2413 | Fix distributed_work segfault when local work generation fails |
#2405 | Fix jumping peer stake total |
Implemented Enhancements
Pull Request | Title |
---|---|
#2801 | Sequential elections |
#2785 | Sequential voting |
#2797 | Check executable paths in load_test |
#2778 | Bisected election backtracking |
#2784 | Confirmation requests and broadcasts if available vote is for a conflicting block |
#2565 | Push front blocks from unchecked |
#2768 | Force node exit if ledger inconsistency in the conf height processor is found |
#2772 | Republishing a vote to principal representatives |
#2759 | Perform wallet representative action without holding any mutex |
#2751 | Serialize telemetry as big endian |
#2730 | Use a multi-index container to allow fifo queue for pending confirmations |
#2728 | Add active difficulty to node telemetry |
#2715 | Allow restarting elections with higher work |
#2716 | Release write_guard lock when no longer required |
#2721 | Remove confirmation requests for a new representative |
#2720 | Separate election state for the broadcasting block fallback |
#2613 | Move TCP messages processing to network threads |
#2714 | Improve batching of writes in unbounded conf height processor |
#2710 | Difficulty updates for elections with multiple blocks |
#2709 | Ensure propagation and removal for the work watcher |
#2702 | Vote generator session for batch insertions |
#2669 | Improve telemetry request/response under load |
#2705 | Ensure max_work_generate_difficulty is updated when changing the default difficulty |
#2691 | Active difficulty normalization |
#2694 | Prevent reconnecting to excluded peers with sufficient score |
#2645 | Rate limiting using token buckets |
#2688 | Move vote generator calls into election code |
#2673 | Epoch open blocks should have corresponding pending entries |
#2692 | Wrapper for RPC worker tasks |
#2693 | Move excluded_peers to network |
#2690 | Work version parameter in default_difficulty and use it in more places |
#2680 | Delay wallet work caching to allow using lower difficulty on demand |
#2686 | Improve automatic frontiers confirmation |
#2627 | Optimize vote post-processing operations |
#2672 | Refactor work thresholds as nano::work_thresholds |
#2666 | Delay voting for non-priority elections under saturation |
#2676 | Optimize mutex access when adding blocks to block processor |
#2603 | Remove peers with different genesis block or invalid telemetry signature |
#2505 | Directed block broadcasting for long elections |
#2610 | Remove telemetry message versions |
#2662 | Move all request aggregator operations out of the mutex hold scope |
#2663 | Check if a vote is for a recently confirmed block |
#2638 | Definitions for work thresholds with epoch_2 |
#2618 | Sign telemetry messages |
#2665 | Output current function in assert diagnostics |
#2661 | Increase minimum time to log block processing |
#2625 | Improve confirmation consistency |
#2631 | Delay inactive/gap cache bootstrap start for 30 seconds |
#2570 | Parallelize state block signature verification with block processor |
#2653 | Include requesting telemetry metrics from temporary channels |
#2649 | Erase representatives with full queues when adding to confirmation solicitor |
#2643 | Network duplicate filter for publish messages |
#2641 | Increase active elections capacity with periodic full checks |
#2646 | Bandwidth considerations following election refactor |
#2581 | Use attempts list for TCP channels |
#2640 | Read transaction scope in active |
#2604 | Update adjusted difficulty in batches |
#2626 | Improve --debug_profile_bootstrap performance |
#2620 | Use the sideband when available in ledger.is_send |
#2614 | Simplify request aggregator mutex lock behavior |
#2596 | Attach sideband to block |
#2616 | Update preconfigured_peers comment regarding port |
#2598 | Simplify telemetry data processing |
#2608 | Lock before stopping when notifying other threads |
#2605 | Utility: nano::optional_ptr |
#2601 | Block difficulty and work validation cleanup |
#2549 | Aggressive flooding for local blocks |
#2602 | Don't use active mutex lock during confirmation solicitor.prepare () |
#2600 | Reduce active mutex locking with election winner details |
#2577 | Minimize work validation calls |
#2599 | Block work version |
#2590 | Remove dropped_election_cache in preparation for election refactor. |
#2589 | Reworking confirmation_height.dependent_election test |
#2592 | [RocksDB] Limit write locks to necessary tables |
#2573 | Add peer timestamp to telemetry responses |
#2585 | Remove vote cache & generate new vote if election winner is changed |
#2568 | Output stacktrace with custom debug assert |
#2583 | warnings: Remove some unused locals and captures |
#2534 | Log stable filename |
#2574 | Add tests for vote_processor |
#2544 | Use a different confirmation height algorithm when ledger is almost fully cemented |
#2572 | Move back timer comments to header |
#2567 | Add GSL-style narrow_cast |
#2559 | Buffer drop policies |
#2571 | Use only the necessary protocols in UPnP |
#2557 | Add launch flag --disable_block_processor_unchecked_deletion |
#2542 | Separate inactive votes cache from gap cache |
#2551 | Return created election when adding to active_transactions |
#2554 | [ASAN] Access node through a weak_ptr on distributed_work dtor |
#2552 | Encapsulating election::confirmed so its implementation can vary. |
#2548 | Add wallet-processed block to work watcher via the block processor |
#2518 | Active_transactions updates blocks when updating difficulty. |
#2543 | Probabilistic network packet filter |
#2521 | Poll all nodes, remove outliers, ddos protection & amend RPC response with endpoint |
#2541 | Handle legacy confirm_req using the aggregator |
#2531 | Bounded memory and redesign in the confirmation height processor |
#2536 | Cache hash for multiple block->hash () calls |
#2512 | Cache genesis block hash in ledger constants |
#2528 | Improve initial TCP server keepalive |
#2524 | Extend telemetry data with more node versioning details |
#2522 | Optionally disable data in responses to telemetry requests with CLI option |
#2468 | Publish prototype |
#2511 | Cache account count |
#2513 | Avoid long read transactions for bootstrap |
#2459 | Publish cleanup |
#2507 | Adjust request aggregator stats |
#2497 | Vote replay in crawler |
#2506 | Clear peers and online weight after 1 week of inactivity |
#2509 | Refresh mutex lock after some consecutive requests without generation |
#2504 | Reinstate election request limit on the confirmation solicitor |
#2501 | Bounded request aggregator |
#2464 | Don't bind to UDP socket with --disable_udp flag |
#2498 | Emplacing wherever possible and other misc enhancements |
#2482 | Rep crawler cleanup |
#2485 | Request aggregator |
#2437 | Change processed blocks factor for requeued pulls |
#2475 | Remove unnecessary lock requirement in active_transactions::lock. |
#2432 | Generated votes cache size increase and upper bound |
#2470 | Use node reference instead of system.nodes[n] in unit tests more often |
#2474 | Use a strand in distributed_work |
#2463 | Adding forked votes to inactive vote cache. |
#2452 | Confirmation solicitor |
#2449 | Some code cleanup |
#2458 | Cache unchecked count |
#2399 | Add HOST header to distributed work request |
#2448 | Erase inactive votes cache after election stop / finish |
#2447 | Remove rolled back blocks list |
#2455 | New CLI command to generate a crash report |
#2454 | Global bandwidth limiter |
#2453 | Remove unused function |
#2436 | Socket buffer size error code |
#2430 | Improve uses of boost multi_index_container |
#2428 | Remove raw new operator used with smart pointers |
#2425 | Improve build times |
#2388 | Allow simultaneous test runs |
#2398 | Improve block deletion and RocksDB deletion in general |
Build, Test, Automation, & Chores
Pull Request | Title |
---|---|
#2803 | add label "logging" to Developer/Debug Options Sections |
#2789 | Epoch2 signer |
#2792 | update bundled FindBoost.cmake |
#2790 | use full cache for PR's requesting modules not currently specified in… |
#2786 | [TSAN] Fix off-by-one in socket.drop_policy test |
#2783 | enable shared boost for tests |
#2779 | Set boost min to 1.69 |
#2760 | Fix intermittent failure in test wallet.work_cache_delayed |
#2757 | [TSAN] race for system in test websocket.bootstrap_exited |
#2750 | Fix network.tcp_no_connect_excluded_peers test failure |
#2748 | Fix minor test-specific intermittent failures |
#2743 | Fix node.fork_invalid_block_signature intermittent failures, re-enable on windows CI |
#2745 | Fix intermittently failing conflicts.adjusted_multiplier test |
#2742 | Fix system.generate_send_new intermittent failures |
#2739 | Fix rpc.wallet_history failures |
#2738 | Fix intermittent node_telemetry.remove_peer_different_genesis test |
#2737 | Fix intermittently failing rpc.confirmation_height_currently_processing test |
#2735 | Allow starting more that max_peers_per_ip test nodes |
#2732 | record_rep_weights to py3 |
#2722 | changelog_generator refactored as changelog.py |
#2717 | Fix logic in active_transactions.prioritize_chains test |
#2611 | Preparation for building with shared boost |
#2698 | [TSAN] start_time data race in bootstrap_client |
#2700 | Add Security Policy file |
#2708 | Fix failure in ledger.work_validation due to random work being above threshold |
#2712 | Add node sequence for tests |
#2711 | [TSAN] lock order inversion in active transactions / wallet |
#2699 | Fix qt tests failing to click radio buttons |
#2697 | updates for fuzzer |
#2695 | Fix qt test wallet.seed_work_generation |
#2687 | set timeout to 1hr to catch tests that hang |
#2682 | Fix intermittent failure in active_transactions.confirmation_consistency |
#2677 | Fix intermittent wallet.work_watcher_update failure |
#2670 | clang included now |
#2660 | typo on windows sha256 Out-File |
#2656 | Fix node.aggressive_flooding |
#2655 | Update tick count in timer::update |
#2647 | gather sha256 hashes of artifacts and upload to s3 with artifacts |
#2632 | Fix request_aggregator unit tests |
#2636 | split docker artifacts to separate job |
#2633 | Add ASSERT_TIMELY |
#2630 | Make network.replace_port more robust under tsan |
#2628 | Make confirmation_solicitor.batches more robust under tsan |
#2615 | tsan fix: rpc.wallet_destroy |
#2624 | confirmation_height.modified_chain test fails on a non-debug build |
#2621 | Fix confirmation_height.gap_live intermittent test failure |
#2623 | [RocksDB] Tests not reading account count from store correctly |
#2622 | Host qt assets on s3 |
#2617 | update url for sourceforge |
#2612 | Fix intermittent send_node_id_handshake unit test failures |
#2607 | CMakeLists backwards compatibility |
#2597 | Use C++17 locally, C++14 on CI |
#2595 | Fix rpc telemetry test timestamps |
#2580 | Improve confirmation_solicitor.batches test |
#2587 | [TSAN] vote_processor.flush test |
#2586 | [TSAN] confirmation_height.cemented_gap_below_receive test |
#2584 | tsan: race in telemetry::ongoing_single_request_cleanup |
#2576 | Fix intermittent node telemetry tests with tsan/valgrind |
#2556 | Update --debug_profile_bootstrap CLI test |
#2564 | Update --debug_profile_process CLI test |
#2561 | Disable node.fork_open_flip test on Windows actions |
#2550 | guard policy setting by version checks |
#2547 | BOOST_1.69 |
#2538 | ASAN error with database transaction tracker json serialization |
#2537 | Update beta network bootstrap weights for v21, cutoff 7M |
#2525 | Define GCC sanitizers builds |
#2523 | Fuzz account, hex, dec and endpoint parsing |
#2520 | update fuzz_buffer |
#2496 | Buffer parser fuzzing |
#2517 | unstable tests on actions for windows |
#2510 | Fix bootstrap_exited segfault on macos |
#2508 | Update bootstrap tests to disable frontiers confirmation |
#2503 | update vc_redist url |
#2500 | Extend distributed_work.peer_malicious test to fix intermittent failure |
#2492 | remove clang-format guards as not needed on 8 or prior |
#2495 | A couple of clang static analysis fixes |
#2491 | Formatting fix so clang-format v8 applies cleanly |
#2490 | use clang-format-8 |
#2403 | The start of CLI tests |
#2486 | use v1.1 for actions-aws-cli |
#2476 | Beta network reset #2 |
#2478 | Add clang-format test back in |
#2480 | Fix some formatting issues on develop |
#2479 | Fix thread worker unit test so it handles repeat runs |
#2465 | Fixing some intermittent failures in unit tests, and some cleanup |
#2457 | Allow core_test retries until 7-1-2020 00:00(gmt) |
#2450 | use commit hash instead of tag for security |
#2445 | TRAVIS_TAG set for deploy-docker.sh |
#2443 | updates to README badging to reflect changes to actions |
#2442 | Migrate Travis and Appveyor into actions |
#2433 | Fix qt wallet build on Windows |
#2426 | Fix rpc_test build |
#2411 | Fix active_transactions not doing any confirmation request in tests |
Additional binary releases:
Hashes and GPG Signature (keys located in source etc/gpg/
).
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Below are the sha256 sum hashes for version 21.0 Athena
Signature Verification can be run against argakiig.asc in source repo (etc/gpg/)
0d3c1a53d6fd893a4b2197d6e4507b9eb5f830cb9bc42e940762cc875c629067 *nano-21.0.tar.gz
7612211b6685e8f46e4d764f8e48bb346d4bd386ef5f6748bee7e1980f87a954 *nano-21.0.tar.gz.sha256
bb4b627996546063104d9ff6c7892c214ae3a124943c426ae008c1fd0371ee9f *nanocurrency-21.0-20.el7.src.rpm
854aa2a542e031c56b5cb4baf05eb7c27d81caee69390892fb37601952285375 *nanocurrency-21.0-20.el7.src.rpm.sha256
e63cbca8f4e4a5b22e277ba0c782d95aa3fca496501bde7b1df6206cc3303759 *nanocurrency-21.0-20.el7.x86_64.rpm
181b02c047f943d4fa575232034c42d54d1d86370686666dabc48c5e182eddef *nanocurrency-21.0-20.el7.x86_64.rpm.sha256
111e80245122e86cac9b1d2bf45ba9cf4725deee444c254b66ef08f3a6bff5ce *nano-node-V21.0.1-Linux.deb
d9a8244c2940fc7f6617bb49b1b03b94f440c6a9165626d344733190e03e1833 *nano-node-V21.0.1-Linux.deb.sha256
7dcdb17b2dbd7459e3a616d9f6aa9ee42e02decc93bc2c1cf89cb8284f1ee055 *nano-node-V21.0.1-Linux.tar.bz2
8d0b4221279ba7cdba913637ead9f36bd1a5cdd8e2dfaafd1fe1ae66ba8b92fa *nano-node-V21.0.1-Linux.tar.bz2.sha256
d837baf8a960db6a0ee3d44263f0cd8e5a8df21cbcacd7a05c4e9c673ff766b8 *nano-node-V21.0-Darwin.dmg
0c4344cc805535d82e86f2ac1dc81afbb5604dc613fcef8cb028e7e8846509c4 *nano-node-V21.0-Darwin.dmg.sha256
b27d1be9709672d12f170646122951bbfb73ef53a98bc3b0d71794a1dac50929 *nano-node-V21.0-win64.exe
e3a3988947c2006d133ee8192e1831b9242f00658f4547e75b4c50d133c6c69b *nano-node-V21.0-win64.exe.sha256
2cfecfe3266b8aea96452fb90c7a280a8909253729c419ed0cd283d7e4afa104 *nano-node-V21.0-win64.zip
3a2fa206a2edb9920b9431055fae2fa746a00fcf7735d253cbc501f7e354fadf *nano-node-V21.0-win64.zip.sha256
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEEc+pdEgPPsADHbxJjyW2zlQ3kDroFAl7pDsYACgkQyW2zlQ3k
DrqiBQgArUy+LiFIvu4b4ut6cbEyoELCuh4MdKJAFwl6k2wnH0aFUwBcXPe/phcw
N4woEND9f1e+I2U9Df9s8U6rQZpb8NXGrptVd+NPsc2Gs4OcjUx8iKd7TeiIoONa
hGe23tVDW18YszrOxtl2+AJH9La02lxDunJ0htYmPemLqsVV24QO43elfyEi6asg
xKsvWt3ihghQCgisMemFjc7IBTGReIAODoos/fVDD/nqlhRPQMuwE7G8u5R/7Pr/
SxJMxlmesE40HhEcu2WfM8fXoH8ecnykb0qKpHrSB5bvieIodzoZUe1YxrXTcMs+
jdeM1M2ViMSucGgABfTLJ9NXgPV4Ew==
=wqQH
-----END PGP SIGNATURE-----