Skip to content

Releases: Concordium/concordium-node

5.2.4

16 Mar 12:58
Compare
Choose a tag to compare

The major feature of this release is the revised Prometheus interface that is now fully documented and supported. See prometheus-exporter for documentation of the metrics available via this API.

Changelog.

Bugfixes

  • Fix a bug in GetAccountInfo endpoint in GRPCv2 where incoming_amounts
    field of encrypted amounts was not set correctly.
  • Fix an issue where the node configuration file (main.config.json) was
    sometimes corrupted.

Prometheus interface changes and additions.

  • Remove current_queue_size, resend_queue_size, packets_dropped, invalid_packets_received
    unknown_packets_received, invalid_network_packets_received,
    packets_resend metrics from the Prometheus server since they were never updated.
  • Rename a number of metrics exposed by the Prometheus exporter:
    • peer_number is now network_connected_peers.
    • conn_received is now network_connections_received_total.
    • packets_received is now network_packets_received_total.
    • packets_sent is now network_packets_sent_total.
    • inbound_high_priority_consensus_drops is now network_inbound_high_priority_message_drops_total.
    • inbound_low_priority_consensus_drops is now network_inbound_low_priority_message_drops_total.
    • inbound_high_priority_consensus_counter is now network_inbound_high_priority_messages_total.
    • inbound_low_priority_consensus_counter is now network_inbound_low_priority_messages_total.
    • inbound_high_priority_consensus_size is now network_inbound_high_priority_message_queue_size.
    • inbound_low_priority_consensus_size is now network_inbound_low_priority_message_queue_size.
    • outbound_high_priority_consensus_size is now network_outbound_high_priority_message_queue_size.
    • outbound_low_priority_consensus_size is now network_outbound_low_priority_message_queue_size.
    • bytes_received is now network_received_bytes.
    • bytes_sent is now network_sent_bytes.
  • Remove last_throughput_measurement_timestamp, avg_bps_in and avg_bps_out metrics exposed by the Prometheus exporter.
  • Change behavior of Prometheus metrics network_sent_bytes and network_received_bytes. Before this change these metrics were calculated as a sum of all the bytes sent/received to peers, which causes the metrics to drop when a peer is dropped. They were only updated during the scheduled "housekeeping" (every 30 secons by default). The new behavior is to update the metric every time a message is sent/received to a peer.
  • Extend Prometheus exporter with metrics: consensus_last_finalized_block_height, consensus_last_finalized_block_timestamp, consensus_last_arrived_block_height, consensus_last_arrived_block_timestamp, consensus_received_messages_total, consensus_sent_messages_total, network_soft_banned_peers, network_peers_total, node_info and node_startup_timestamp see docs/prometheus-exporter.md for more details.
  • Remove metrics network_inbound_high_priority_message_drops_total, network_inbound_low_priority_message_drops_total, network_inbound_high_priority_messages_total and network_inbound_high_priority_messages_total as they can be derived using the labels of consensus_received_messages_total.

Other API changes

  • Add an option to disable only the node specific grpc V1 endpoints that can be
    used to control the node. All the endpoints that are consensus related are
    kept allowing the node to be used as a gateway to the chain. The mentioned can
    be disabled by setting CONCORDIUM_NODE_DISABLE_RPC_SERVER_NODE_ENDPOINTS
    or using the flag --no-rpc-server-node-endpoints.

5.1.3

19 Jan 14:04
Compare
Choose a tag to compare

This is a maintenance release that brings performance improvements and bugfixes.

  • Fix a bug in the GetAccountInfo endpoint in GRPCv2 where the ar_data field
    always would be empty.
  • Avoid deadlocks during node shutdown in specific scenarios.
  • The node will now shut down to start if an error occurs in a required service
    (e.g., grpc server). In particular, the node will shut down if a required
    service could not be started.
  • Add timeout to downloading out of band catchup files when block indices and
    catch-up chunk files are specified by an URL. The timeout is controlled
    by the option --download-blocks-timeout (environment variable
    CONCORDIUM_NODE_CONSENSUS_DOWNLOAD_BLOCKS_TIMEOUT) and defaults to 5 min.
    timeout is 5 now minutes per chunk instead of waiting indefinitely.
  • Relay blocks earlier. In particular this means that blocks are now processed in
    two steps, block receive and block execute. The former performs verification of block meta data
    while the latter adds the block to the tree.
    Blocks are now enqueued in the outgoing message queue in between the the two steps.
  • Removed the configuration option 'no_rebroadcast_consensus_validation'.
  • Improvements to allow greater concurrency with transaction processing.
    (Checking transaction signatures is done without acquiring the global
    state lock.)

5.0.6

29 Nov 10:30
Compare
Choose a tag to compare

5.0.6

This major release brings support for protocol 5 and fixes a security issue that exists in version 4 nodes.

The detailed changelog follows.

  • Add support for protocol version 5. This adds the following features:
    • Support for smart contract upgradability.
    • Query the current exchange rates, account balances and contract balances from a smart contract.
    • Relax restrictions on smart contracts
      • Parameter size limit: 1kiB -> 65kiB
      • Return value size limit: 16kiB -> no limit (apart from energy)
      • Number of logs per invocation: 64 -> no limit (apart from energy)
    • A new representation of accounts that is better optimised for common operations.
    • Revised the hashing scheme for transaction outcomes in protocol version 5. In particular the exact reject reasons are no longer part of the computed hash. Further the transaction outcomes are being stored in a merkle tree for P5 resulting in some queries being faster.
    • More efficient indexing of accounts with scheduled releases.
  • Fix an issue where the catch-up downloader would fail at a protocol update.
  • Fix an issue in the node GRPC V2 API where a baker transaction was encoded in an unintended way.
  • Enforce parameter limits in InvokeContract endpoint.

The details of the security issue will be released on Dec 13 in the form of a security advisory.

4.5.0

25 Oct 14:02
d7b9127
Compare
Choose a tag to compare

The node release 4.5.0 brings a new GRPC API and performance and stability improvements.

  • The node is now able to recover after crashes which leave only treestate or only blockstate usable.
  • Fix a memory leak that could occur in certain usage scenarios involving smart contracts.
  • Support for a new GRPC API which uses typed proto definitions. This adds a number of new configuration options for the node. These are detailed in grpc2.md

4.4.4

05 Oct 13:46
Compare
Choose a tag to compare

This is a maintenance release bringing performance and security improvements.

4.4.4

  • Fix typo in environment variable CONCORDIUM_NODE_PROMETHEUS_LISTEN_ADDRESSS (remove trailing S).
  • Speed up and reduce memory overhead during protocol updates.
  • Smart contract modules are no longer retained in memory. Module artifacts are loaded as needed
    during contract execution. Metadata is cached for a limited number of smart contract modules.
    By default, the cache will retain metadata for at most 1000 smart contract modules, and this is
    configurable via the --modules-cache-size command line argument or by using the
    CONCORDIUM_NODE_CONSENSUS_MODULES_CACHE_SIZE environment variable.
  • Smart contract state is no longer cached on startup and is not cached after
    finalization.
  • Partial node database recovery. The node is now able to recover from the most
    common causes of its database corruption.
  • The node now validates pending blocks as much as possible, and does not relay them.
    Only blocks with known ancestry are relayed.

4.3.1

05 Sep 09:17
Compare
Choose a tag to compare

4.3.1

This is a maintenance release bringing bugfixes and substantial performance improvements. Upgrade to this version is optional, but highly recommended. Compared to 4.2.3 this node version has the following changes.

  • Account records are no longer constantly retained in memory. Instead a limited
    number are retained in a cache. The number of cached accounts defaults to 10000,
    and can be configured by the --accounts-cache-size command line argument or the
    CONCORDIUM_NODE_CONSENSUS_ACCOUNTS_CACHE_SIZE environment variable.
  • Reduce startup time and memory use further by reducing the amount of block
    data retained in memory. In particular finalized blocks are no longer stored
    in memory.
  • Optimize node data structures related to accounts. This reduces node memory
    use and improves performance.
  • Added the ability to download the catch-up file using the
    --download-blocks-from option (or CONCORDIUM_NODE_CONSENSUS_DOWNLOAD_BLOCKS_FROM environment variable).
  • The gRPC API now reports correctly when the sender of a transaction did
    not have enough funds to cover the transaction costs.
  • Remove obsolete and unused option --max-expiry-duration
  • Remove transaction logging functionality from the node. It is replaced by an
    external service. As a consequence the transaction-outcome-logging family of
    command-line options are removed from the node. This functionality is replaced by the transaction logger service

4.2.3

15 Aug 06:15
Compare
Choose a tag to compare

4.2.3

  • Fix a bug in the scheduler which would cause the node to crash when executing
    certain transactions. Security advisory

All previous node releases with major version 4 are affected, and users must upgrade.

4.2.1

05 Jul 17:57
5672885
Compare
Choose a tag to compare

This is a maintenance release bringing bugfixes and substantial performance improvements.

4.2.1

  • Decrease node startup time and memory use by avoiding needless checks when loading the database.
  • Improve startup time by avoiding processing already processed protocol updates.
  • Decrease memory usage by not storing genesis blocks. This has the effect that the database produced by node versions >= 4.2.* cannot be used by node versions <= 4.1. The other direction works.
  • Increase precision of block arrive and block receive times in the GetBlockInfo query.

4.1.1

15 Jun 17:36
Compare
Choose a tag to compare

The major release brings delegation support and new smart contracts.

4.1.1

  • The SendTransaction function exposed via the gRPC interface now provides the caller with detailed error messages if the
    transaction was rejected instead of just False. The function still returns True if
    the transaction was accepted.
    The following gRPC error codes can be returned.
    • 'SUCCESS' The transaction was succesfully relayed to consensus.
    • 'INVALID_ARGUMENT' The transaction was deemed invalid or exceeds the maximum size allowed (the raw size of the transaction).
      In addition the error message contains information as to why the transaction was deemed invalid.
    • 'FAILED_PRECONDITION' The network was stopped due to an unrecognized protocol update.
    • 'DUPLICATE_ENTRY' The transaction was a duplicate.
    • 'INTERNAL' An internal error happened and as such the transaction could not be processed.
      The server will return a gRPC status if the transaction was deemed invalid.
  • Support for wire-protocol version 0 is dropped, meaning that the node cannot
    connect to peers that do not support wire-protocol version 1, which is supported
    since version 1.1.0.
  • The macOS installer no longer overwrites the service files when reinstalling.
  • Cache smart contract modules on startup from existing state to improve smart
    contract execution.
  • Make consensus queries more robust, by validating input more extensively.
    This affects all queries whose input was a block or transaction hash.
    These queries now return InvalidArgument error, as opposed to Unknown
    which they returned previously.
  • Fix issue #244: Collector to keep querying. Remove the parameter for maximum allowed
    times a gRPC call can fail and keeps node-collector querying forever.
  • GetAccountInfo endpoint supports querying the account via the account index.
  • Mac installer: Users now can leave one (but not both) of the net configurations empty
    when they don't want to configure a node for it.
    • On the initial installation, leaving a net configuration empty means that
      the start/stop app shortcuts and the application support folder for that net won't be installed.
  • Implement baker pools and stake delegation for the P4 protocol version.
    • New gRPC endpoint: GetBakerList retrieves a JSON list of the baker IDs of the bakers
      registered in a known block. (Returns null for an unknown block.)
    • New gRPC endpoint: GetPoolStatus retrieves a status record for a baker pool, or for
      the set of passive delegators.
    • The bakerStakeThreshold level-2 keys are renamed as the poolParameters keys; two
      additional access structures are defined: cooldownParameters and timeParameters.
    • The following changes are made to the chain parameters in P4:
      • The mint distribution no longer includes the mint per slot rate.
      • Pool parameters are added, governed by the poolParameters keys, that determine
        commission rates and ranges, bounds and other factors affecting baker pools.
      • Time parameters, governed by timeParameters, are added that determine the
        duration of a payday (in epochs) and the mint rate per payday.
      • Cooldown parameters, governed by cooldownParameters, are added that determine
        the required cooldown periods when bakers and delegators reduce their stakes.
    • ConfigureBaker and ConfigureDelegator transactions are added (with the old baker
      transactions becoming obsolete in P4). These permit adding, modifying and removing bakers
      and delegators respectively from an account. Delegators can delegate to a baker, or
      delegate passively (effectively to all bakers).
    • The reward mechanism is overhauled, with minting and rewarding being done once per
      'payday' (a number of epochs, nominally one day). Baker rewards are shared with
      delegators to the baker's pool, with some commission being paid to the baker.
      Block rewards (i.e. transaction fee rewards), baking rewards and finalization rewards
      are accumulated over the reward period and paid out at the payday.
  • Implement V1 smart contracts with the following key features
    • unlimited contract state size
    • synchronous contract calls
    • fallback entrypoints
    • increased smart contract module size limit, 512kB
    • a number of cryptographic primitives
  • Node can now be stopped during out of band catchup by using signals, SIGINT and SIGTERM.

3.0.2

21 Apr 08:22
Compare
Choose a tag to compare
  • Fix an out of bounds access in the noise protocol implementation used in the network layer. This could have been used to cause the node to crash.