Skip to content

Releases: ava-labs/avalanchego

Apricot Phase 0 - Patch 2

09 Jan 20:03
1e7b7ae
Compare
Choose a tag to compare

This update is optional but encouraged. The patch includes bug fixes and performance improvements.

  • Fixed bootstrapping processing cache to reduce duplicated traversals when bootstrapping Avalanche.
  • Optimized P-chain verification during bootstrapping.
  • Fixed maximum benchlist calculation to use the proper input values.
  • Removed extra linter runs from CI.
  • Added Height to the snowman.Block interface.

Apricot Phase 0 - Patch 1

18 Dec 23:24
f76f1fd
Compare
Choose a tag to compare

This update is optional but encouraged. The patch includes minor bug fixes, performance improvements, and preparations for the remaining Apricot upgrades.

  • Fixed a node crash bug when users disabled the Health API.
  • Fixed a bug in uptime tracking that could over report a node's uptime.
  • Refactored vertex parsing to use a Codec.
  • Separated stateful and stateless vertex management.
  • Added per-field slice length checking to the Codec.
  • Introduced a new codec type that groups TypeIDs together.
  • Introduced message limit flags to the CLI.
  • Introduced a semanticdb package to be used during a future database migration.
  • Added Epoch tracking to the chain context.
  • Improved some of the error messages returned during transaction validation.
  • Reduced GC pressure in the version DB.

Apricot Phase 0

05 Dec 19:21
34c7ebd
Compare
Choose a tag to compare

Please note that this upgrade is not backwards compatible with previous releases. Upgrades must be performed no later than Monday, December 7th at 11 p.m. UTC (6 p.m. EST). The upgrade, which was originally scheduled around mid December, is now being expedited to fix an important token unlocking bug. We urge everyone in the community to upgrade as soon as possible in order to ensure that their nodes are not affected.

There are two primary components to this upgrade:

  • General preparations for our upcoming Apricot network upgrade, called the Apricot Phase Zero Upgrade
  • Fixing an issue that prevented stake-able locked outputs from being unlocked after their locktime had passed

Mainnet Patch - 6

01 Dec 19:45
8db1bbd
Compare
Choose a tag to compare

Please note that this release changes the default response format of platform.getTxStatus and platform.getCurrentValidators.

The update is optional but encouraged. The patch includes performance improvements and some quality of life improvements.

  • Removed deprecated formats of platform.getTxStatus and platform.getCurrentValidators.
  • Added support for hex encodings of imported and exported users from the keystore API.
  • Set golang requirement to v1.15.5 to avoid a DoS vulnerability found in the golang standard lib.
  • Added API clients to act as helpers interacting with the node software.
  • Implemented falling back to bootstrapping if a node becomes disconnected from the rest of the network.
  • Fixed the GetUTXOs APIs when UTXOs referenced multiple addresses.
  • Refactored binary encoding to better generalize RPC options.
  • Fixed IP block filtering to correctly set the window length.
  • Generalized the codec package to be able to manage multiple codecs with different versions.
  • Added Epoch to the Vertex interface in preparation of a future release.
  • Deferred transaction hashing to reduce CPU/Memory utilization past fast checks.

Mainnet Patch - 5

12 Nov 05:04
5241d65
Compare
Choose a tag to compare

Please note that the release after this one, v1.0.6, will contain breaking changes. Namely, the response format of platform.getTxStatus and platform.getCurrentValidators will change.

The changes in this release, v1.0.5, are backwards compatible with previous releases. The update is optional but encouraged. The patch includes performance improvements and some quality of life improvements.

  • Added IssueTx and GetUTXOs to the C-chain API to enable issuing atomic swaps without revealing private keys to a node.
  • Fixed memory leak in the snowman request manger with oracle block processing.
  • Fix UTXO pagination bug that under-reported available funds.
  • Moved chain http logs to live in the human readable chain logs folder.
  • Optimized AVM load user to avoid reading unnecessary information from disk.
  • Restructured how IDs are managed to avoid heap allocations.
  • Optimized the UniformSamplers to avoid creating multiple maps.
  • Reduced usage of ids.Set in favor of []ids.ID to better utilize continuous memory.
  • Introduced []byte reuse in PrefixDB.
  • Implemented type specific sorting functions to avoid frequent interface conversion allocations.
  • Removed a memory allocation + copy in socket sending for full length of the message.

v1.0.4 Coreth Hotfix

30 Oct 22:15
032a79a
Compare
Choose a tag to compare

This patch reverts an accidental change in the default visibility of coreth's net_ API.

Mainnet Patch - 4

29 Oct 00:11
Compare
Choose a tag to compare

This update is optional, but encouraged. The patch includes quality of life improvements and various performance enhancements.

Note that this update requires the CLI parameters to be specified with -- rather than allowing for either - or --. For example, -public-ip=127.0.0.1 is no longer allowed and must be specified as --public-ip=127.0.0.1. Otherwise this update is backwards compatible.

  • Added subnet whitelisting to allow a node owner to choose which subnets to validate.
  • Added config file parsing for node settings.
  • Added more options for specifying a node's IP address and added getNodeIP to the info endpoint.
  • Added a TxID to the result of get.*Validators in the platformvm.
  • Updated Coreth version.
  • Cleaned up the snowball trie implementation and added additional tests to align with mutation tests.
  • Implemented and optimized continuous time averagers for tracking CPU and network latency.
  • Significantly optimized memory allocations in various locations.
  • Increased the signature verification cache size.
  • Reduced DB reads during vertex management.
  • Added an optional argument includeReason to platform.getTxStatus.
    If not provided, or if false, the output from getTxStatus is the same as before.
    For example:
{
    "jsonrpc": "2.0",
    "result": "Dropped",
	"id": 1
}

If includeReason is true, the output from getTxStatus has a new format. It's an object that looks like this:

{
    "jsonrpc": "2.0",
	"result": {
	    "status":"[Status]",
	    "reason":"[Reason tx was dropped, if applicable]"
	},
	"id": 1
}

In this new format, reason will not be present unless the status is Dropped.
Anything that depends on platform.getTxStatus should switch to using the includeReason argument and use the new response format. After a few releases, we'll only support the new response format.

Mainnet Patch - 3

14 Oct 23:12
64199f2
Compare
Choose a tag to compare

This patch includes networking DoS protection improvements, a new simple AVM wallet, expanding of health checks, and throttling cleanup.

  • Implemented a continuous time exponentially weighted uptime meter. Also implemented a discrete exponentially weighted uptime meter for performance improvements.
  • Simplified multilevel queue implementation to abstract out resource management.
  • Added health checks to the VM and Engine interfaces to allow for fine grained health checks.
  • Added partition detection into the health checks.
  • Meter connection attempts from the same IP address.
  • Reduced lock contention in the networking library.
  • Added a wallet service that allows for transactions to be chained automatically, by assuming the transactions that are being issued are virtuous.
  • Dynamically manage the IP address by attempting to refresh the existing IP address periodically.

Mainnet Patch - 2

09 Oct 01:57
4bd067e
Compare
Choose a tag to compare

This patch includes network latency enhancements, database stability improvements, increased transaction reliability on the P-chain, and various other stability/usability improvements.

  • Added downed node detection to temporarily bench nodes due to poor query responsiveness.
  • Changed the adaptive timeout manager to be additive/additive rather than multiplicative/additive to avoid timeouts from staying unreasonably long.
  • Added request latency metrics.
  • Close DB instance after first unexpected error to prevent potential DB corruption.
  • Removed potentially DB corruption while bootstrapping the P-chain and accepting ProposalBlocks.
  • Added advanceTimeTx synchrony buffer.
  • Reintroduce valid P-chain txs that were placed into rejected blocks.
  • Track txs that were dropped due to an invalid start time in the mempool.
  • Simplified NAT traversal, including no longer scanning for an available port.
  • Correctly set the initial ResponseWriter header values in the rpcchainvm's HTTP handler.
  • Clean up networking go-routines immediately after close rather than waiting for a timeout.
  • Added the number of peers as a direct response in info.peers API.
  • Increased bootup time allotment past the ping/pong timeout to avoid exiting the node on restart of the node.
  • Updated build scripts to correctly build Linux and MacOS versions.
  • Cleaned up recursive dependency chains and added more linting requirements.

Mainnet Patch - 1

29 Sep 03:13
87ae6b3
Compare
Choose a tag to compare

This patch includes some performance enhancements, stability improvements, and other minor upgrades.

  • Attempted to increase the soft-limit of file descriptors from the default size to up to 15k FDs on startup.
  • Explicitly disabled networking naggle and lingering.
  • Returned delegators nested inside the validators response in platformvm.getCurrentValidators.
  • Introduced a new SendMultiple API call that allows for sending to multiple addresses in the same atomic transaction.
  • Reduced bandwidth usage during bootstrapping by disabling gossiping.
  • Reduced the size of the accepted frontier to be manged in bootstrapping by utilizing a 1/N correctness assumption.
  • Increased the keystore maximum user size for exporting + importing.
  • Introduced automatic cross platform builds.