Skip to content

V21.0

Compare
Choose a tag to compare
@argakiig argakiig released this 16 Jun 16:43
· 2616 commits to develop since this release
dff6564

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