Skip to content

Releases: ava-labs/avalanchego

Apricot Phase 2

05 May 02:03
10ea1c5
Compare
Choose a tag to compare

Please note that this change is not backwards compatible with previous releases.

This upgrade applies the Ethereum Berlin upgrade to the C-chain, adds a new AVM endpoint, and includes various stability improvements. We urge everyone in the community to update as soon as possible in order to ensure that their nodes remain healthy.

The changes in the upgrade go into effect at 10 AM EDT, May 5th 2021 on the Fuji testnet and 7 AM EDT, May 10th 2021 on mainnet.

The primary components to this upgrade include:

  • Updated Coreth to depend on v1.10.2 of go-ethereum.
  • Applied the Ethereum Berlin upgrade. Specifically EIP-2565, EIP-2718, EIP-2929, and EIP-2930.
  • Added new stateful pre-compiled smart contracts to the C-chain to support ANT transfers and ARC-20 wrappers around ANTs.
  • Added an AVM /events endpoint that supports websocket notification of transactions being accepted matching an addresses filter.
  • Added two new networking message types SignedVersion and SignedPeerlist to improve validator -> IP mappings.
  • Fixed a long standing bug where shutting down the node while a chain was bootstrapping could cause the chain to be shut down ungracefully.
  • Updated the plugin gRPC packages to paginate large requests to improve stability.
  • Added the ability to run avalanchego's main binary as a plugin.
  • Fixed a potential race condition in the leveldb corruption protection.
  • Updated the automated build scripts to better support multiple architectures.

Added command line arguments:

  • plugin-mode-enabled specifies the binary to run in plugin mode.

Removed command line arguments:

  • p2p-tls-enabled
  • disconnected-check-frequency
  • disconnected-restart-timeout
  • restart-on-disconnected

Apricot Phase 1 - Patch 2

13 Apr 01:34
7ef080b
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes security improvements, bug fixes, and monitoring improvements.

Security Improvements

  • Enforced a strict canonical format for C-chain blocks made prior to Apricot Phase 1. This ensures that modifications to the extra-data block field can not result in modifications to the chain state during bootstrapping.
  • Changed the Keystore to ensure only encrypted values are sent over the IPC between avalanchego and plugin processes.

Bug Fixes:

  • Fixed delegation cap calculations to include updating the current delegation maximum before removing a delegator. This ensures that the delegation cap is always enforced.
  • Fixed AVM's static API to be registered correctly on startup.
  • Updated node uptime calculations to take network upgrades into account.

Monitoring Improvements

  • Added an optional node indexer that can provide a locally consistent ordering of operations accepted on a chain.
  • Updated ansible inventory to include numerous improvements (Huge thanks to @moreati).

Apricot Phase 1 - Patch 1

30 Mar 03:06
7c96375
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes stability, monitoring improvements, and minor bug fixes.

The primary components to this upgrade include:

  • Fixed C-chain segfault when performing compression on arm64 CPUs.
  • Added group permissions to local files to enable complex node monitoring.
  • Stripped white space from Auth passwords passed through the api-auth-password-file flag.
  • Removed timeSinceNoOutstandingRequests as it was replaced by longestRunningRequest.
  • Added additional metrics in network throttling.
  • Various code cleanup.

Added command line arguments:

  • network-health-max-outstanding-request-duration

Removed command line arguments:

  • network-health-max-time-since-no-requests

Apricot Phase 1

25 Mar 23:43
c41d752
Compare
Choose a tag to compare

Please note that this change is not backwards compatible with previous releases.

This upgrade reduces C-chain gas fees, removes C-chain gas refunds, and includes various security improvements. We urge everyone in the community to update as soon as possible in order to ensure that their nodes remain healthy.

The changes in the upgrade go into effect at 10 AM EST, March 25th 2021 on the Fuji testnet and 10 AM EST, March 31st 2021 on mainnet.

The primary components to this upgrade include:

  • Reduced C-chain gas cost from 470 nAVAX to 225 nAVAX.
  • Removed C-chain gas refunds. This change adopts EIP-3298.
  • Refactored C-chain verification to be cleaner when performing network upgrades.
  • Fixed the Auth API to properly enforce revoked tokens.
  • Strengthened the Auth API to ensure the expected signature format is used.
  • Removed the Auth API's password from the CLI arguments.
  • Added more strict file permissions checks.
  • Added some minor additional error handling.
  • Sanitized log writes before being written to disk.
  • Added configurable origins to the HTTP endpoint.
  • Removed attempted HTTPs to HTTP fail over on startup. Now the node will close on startup if upgrading the HTTP endpoint to HTTPs fails.

Added command line arguments:

  • api-auth-password-file specifies the file to read the Auth API's password from.

Removed command line arguments:

  • api-auth-password

Thanks to the Flare network for bringing issues to our attention.

Apricot Phase 0 - Upgrade 1 - Patch 4

17 Mar 22:12
c272c0c
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes stability and monitoring improvements.

  • Updated readme to correct storage requirements.
  • Added additional error handling to Avalanche Tx verification during bootstrapping.
  • Updated numerous metrics, including adding various new metrics relating to node health and database usage, removing unused and invalid metrics, and fixing some metric names.
  • Added additional logging to CI.
  • Added the C-chain to the list of critical chains.

Apricot Phase 0 - Upgrade 1 - Patch 3

08 Mar 23:14
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes stability and monitoring improvements.

  • Adjusted [network, router, consensus] health check parameters to remove flaky health checks.
  • Simplified C-chain block handling.

Apricot Phase 0 - Upgrade 1 - Patch 2

06 Mar 18:58
93d00d3
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes stability, performance, and monitoring improvements.

  • Added IP aliases in the network library to avoid repeated SYN calls.
  • Fixed bootstrap message handling when bootstrapping from yourself.
  • Simplified AdvanceTimeTx issuance.
  • Added new consensus health checks.
  • Adding node health logging.
  • Added health responses to health GET requests.
  • Consolidated incoming message logs.
  • Added error logging to the LevelDB wrapper.
  • Added error codes to the rpcdb to avoid string parsing.
  • Improved C-chain handling of canonical chain to reduce the number of reorgs.
  • Improved C-chain handling of mock calls performed on the pending block.

Apricot Phase 0 - Upgrade 1 - Patch 1

26 Feb 23:30
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes stability, performance, and monitoring improvements. Note that this update removes network-timeout-increase and network-timeout-reduction as command line arguments.

Change summary:

  • Added UTXOs to the platformvm.getStake response.
  • Added benchlist reporting to the info.peers response.
  • Added additional health checks into the networking layer.
  • Added percent of stake connected as a reported metric.
  • Added bootstrapping restart logic to ensure the node has caught up to the current tip, even during times of high throughput.
  • Added subnet-wide bootstrapping to ensure that a chain won't fall behind due to another chain bootstrapping.
  • Prevented verification of rejected blocks to avoid unnecessary computation.
  • Removed gossiping of non-preferred blocks to the network.
  • Switched the network timeout calculator to use an EWMA of the observed network latency.
  • Removed Get requests from the network latency calculations.
  • Cleaned up the benchlisting algorithm.
  • Cleaned up handling of dropped messages on send.
  • Cleaned up outstanding request and timeout logic.
  • Generalized performance tracking to allow for prefixing of profile names.
  • Added additional caching to the Avalanche bootstrapping traversal.
  • Fixed ansible linting.

The added command line arguments mainly consist of configurations of health checks. Additionally, the modified network latency calculations changed the name of some command line args.

Added command line arguments:

  • network-timeout-halflife
  • network-timeout-coefficient
  • network-health-min-conn-peers
  • network-health-max-time-since-msg-received
  • network-health-max-time-since-msg-sent
  • network-health-max-portion-send-queue-full
  • network-health-max-send-fail-rate
  • network-health-max-time-since-no-requests
  • router-health-max-drop-rate
  • router-health-max-outstanding-requests
  • health-check-frequency
  • health-check-averager-halflife
  • bootstrap-retry-enabled
  • bootstrap-retry-max-attempts

Removed command line arguments:

  • network-timeout-increase
  • network-timeout-reduction

Apricot Phase 0 - Upgrade 1

12 Feb 06:20
5214e00
Compare
Choose a tag to compare

Please note that this patch is not backwards compatible with previous releases. This upgrade fixes performance issues related to interchange transfers between X, C, and P chains. We urge everyone in the community to upgrade as soon as possible in order to ensure that their nodes are not affected. Also note that nodes may take several extra minutes to connect after the upgrade and the process should be allowed to complete uninterrupted.

The primary components to this upgrade include:

  • Fixed atomic import validation on C-Chain
  • Added rule exception logic to allow atomic bonus blocks
  • Added fail-fast logic into Shared Memory if duplicated deletes are issued
  • Fixed issue where polls could stall in snowman because of a failure to clear requests
  • Fixed BAD BLOCK issue in coreth due to unknown ancestors
  • Fixed a race condition in the repair canonical chain script in coreth
  • Limited number of processing blocks in Snowman and processing txs in Avalanche
  • Updated networking timeout default values and benchlist settings
  • Verified there was no safety violation after the initial network instability

Apricot Phase 0 - Patch 5

08 Feb 20:30
3c9f1cb
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes stability improvements.

  • Fixed a potential deadlock when registering new chains that could cause the P-chain and http(s) endpoint to block.
  • Repairs TxID -> Block Height indexing in the C-chain.
  • Added graceful handling of empty contract deployments in the debug_traceTransaction API in the C-chain.
  • Improved error handling in the C-chain.