Skip to content

6.1.7

Compare
Choose a tag to compare
@abizjak abizjak released this 08 Nov 20:34
· 355 commits to main since this release
f0f3eca

Node 6.1.7 release adds improved node API, especially in relation to staking, and makes the node substantially more robust in certain scenarios.

In particular the node now remembers its peers across restarts, so it is less reliant on a bootstrapper.

The gRPC V2 API has also received a number of configuration options for limiting resources it is allowed to use, making the node more robust.

Detailed changes

  • Add load-shedding to the V2 GRPC API. In particular, if at the time of the
    request the node is already handling more than
    CONCORDIUM_NODE_GRPC2_MAX_CONCURRENT_REQUESTS requests then the incoming
    request will be immediately rejected.
  • Fix a regression in the start up time. When upgrading from an earlier version, the first start-up
    time may be longer than usual, as the genesis state hashes are computed. Subsequent restarts
    will not suffer this penalty.
  • Enable out of band catchup by default in all distributions.
  • Expose the health check service via grpc-web when grpc-web is enabled.
  • Support for out-of-band catch-up for protocol versions beyond P6.
  • Extend Prometheus exporter with metric grpc_connected_clients, see
    docs/prometheus-exporter.md for more details.
  • Add configuration options for imposing resource limits to the V2 gRPC server.
    The following environment variables are added
    • CONCORDIUM_NODE_GRPC2_KEEPALIVE_INTERVAL
    • CONCORDIUM_NODE_GRPC2_KEEPALIVE_TIMEOUT
    • CONCORDIUM_NODE_GRPC2_TCP_KEEPALIVE
    • CONCORDIUM_NODE_GRPC2_INVOKE_MAX_ENERGY
    • CONCORDIUM_NODE_GRPC2_MAX_CONCURRENT_REQUESTS
    • CONCORDIUM_NODE_GRPC2_MAX_CONCURRENT_REQUESTS_PER_CONNECTION
    • CONCORDIUM_NODE_GRPC2_MAX_CONCURRENT_STREAMS
    • CONCORDIUM_NODE_GRPC2_MAX_CONNECTIONS
    • CONCORDIUM_NODE_GRPC2_REQUEST_TIMEOUT
      See
      docs/grpc2.md
      for an explanation of the options.
  • Fix incorrect peer_bucket_size metric calculation exposed by the
    bootstrapper. What was counted was not the number of peers in the bucket, but
    rather, roughly, how many times peers that are in the bucket have
    reconnected.
  • Fix a bug where the block state hash was not returned properly for the genesis block.
  • Do not reset banned peers on startup by default.
  • The node remembers peers across restarts. When starting up it will try to connect to stored peers in addition to any supplied bootstrap and given nodes.
    Use the new flag --clear-persisted-peers (environment variable CONCORDIUM_NODE_CLEAR_PERSISTED_PEERS) to clear stored peers on startup.
  • Renamed the flag --no-clear-bans to clear-bans. When set it will clear the banned peers on startup.
  • Fix a bug where credential registration IDs for genesis accounts were not
    correctly recorded. As a result, the index of accounts by credential ids was
    incorrect if the chain was started from genesis by node versions 5.1.3 up to
    and including 6.0. If a chain was started by an older node version and then
    the node was upgraded the index is loaded correctly. This index is used when
    checking for duplicate credential registration IDs, and when looking up an
    account via a credential registration ID.
  • Fix a bug in the InvokeInstance endpoint where the amount sent was
    used incorrectly. The consequence was that in some cases the calls would fail
    with an error indicating insufficient amount on the account where the amount
    was sufficient for the transaction.
  • Fix a bug where it was not possible to use the collector with a node configured with TLS.
    One has to configure the grpc-host flag of the collector with domain stated in the certificate that the
    node is configured with.
  • Apply fix for processing of chain parameter updates when they occur at the same time
    retroactively to all protocol versions. This may break compatibility with any local/private
    chains on which the bug occurs.
  • Remove the concept of pending blocks.
  • GetPoolInfo now also returns the commission rates for the current reward period.
  • Add GetBakersRewardPeriod to GRPCV2 API. Provided a block, then it returns information about bakers
    for the reward period of the block.
  • Add endpoint GetBlockCertificates to GRPCV2 API. Provided a block, then it returns
    quorum certificate, timeout certificate and epoch finalization entry contained in the block (where present).
  • Add endpoint GetBakerEarliestWinTime to GRPCV2 API. Provided a baker ID, it returns the
    earliest time at which the node projects that the baker could be required to bake a block.
  • Add endpoint GetFirstBlockEpoch to GRPCV2 API. It returns the block hash of the first block in
    a given epoch.
  • Add endpoint GitWinningBakersEpoch to GRPCV2 API. It returns a list of the bakers that won
    rounds in a specified (finalized) epoch. This only supports consensus version 1.
  • Fix a bug in how the last timeout certificate is recovered at start-up.
  • Fix the behaviour of the block last finalized pointer in the GetBlockInfo so that it
    consistently returns the last finalized block at the time the block was baked.
  • Add debug-level logging when a round is advanced, either due to a quorum certificate or a
    timeout certificate.