Skip to content

Releases: ava-labs/avalanchego

Apricot Phase 2 - Patch 10

12 Jul 20:40
Compare
Choose a tag to compare

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

Note that in AvalancheGo >= v1.4.10, C-Chain pruning is enabled by default. If you need archive mode functionality (i.e. historical lookups) on the C-Chain, set C-Chain config flag pruning-enabled to false. See here for more information on C-Chain config.

  • Added support to use RocksDB rather than LevelDB on supported architectures.
  • Restructured inbound network throttling to be managed once in networking rather than once at each chain, to properly restrict the bandwidth usage of peer nodes.
  • Updated outbound network throttling to weight allocated bytes by stake.
  • Updated the default value of the pruning-enabled flag to true for the C-chain.
  • Enabled registering of custom VMs over RPC.
  • Updated blockchain status to report validation status.
  • Moved TimestampVM into its own repository to match the expected VM creation path.
  • Fixed protobuf code-gen script to place grpc files in the correct location.
  • Passed the block bytes through the rpcchainvm#Block.Verify to avoid any potential cache eviction verification failures.

Apricot Phase 2 - Patch 9

29 Jun 01:36
c82a6e8
Compare
Choose a tag to compare

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

  • Added support to run the C-chain with pruning enabled. Pruning is currently disabled by default.
  • Reduced C-chain websocket ping interval to reduce disconnects when behind a load balancer.
  • Added timestamp to the snowman.Block interface.
  • Fixed bug in C-chain API max duration enforcement for calls made via websockets.
  • Added gzip header support for the http endpoint.
  • Added additional version descriptions to the info.getNodeVersion endpoint.
  • Restricted connection attempts to only connect with node versions >= 1.4.5.
  • Moved daemon logs under the primary log folder.
  • Added support for deterministic sampling.
  • Added auto deployment github action for new tags.
  • Refactored config management to better support launching nodes programmatically.

Apricot Phase 2 - Patch 8

15 Jun 21:44
9e609e0
Compare
Choose a tag to compare

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

  • Changed the AVM’s fee definition to enforce fees to be paid in the chain’s native asset. This doesn’t change the X-Chain’s behavior, but it makes other AVM instances usable.
  • Added the ability to specify configs to specific chains. This deprecates the coreth-config CLI parameter.
  • Added rate limiting to the number of new outbound connections.
  • Introduced a VM wrapper that adds transparent metrics to a chain.
  • Added the ability to enable continuous node profiling.
  • Reduced byte allocations in the networking layer.
  • Added various CLI parameters for tuning gossip parameters.
  • Enabled nodes to run using an ephemeral key pair, rather than one that is read from disk.
  • Removed incorrect spurious warning.
  • Moved CI tests to run in Github Actions rather than running in Travis.
  • Removed special cases from the VM interface.

Added Command Line Arguments:

  • profile-dir
  • profile-continuous-enabled
  • profile-continuous-freq
  • profile-continuous-max-files
  • chain-config-dir
  • bootstrap-multiput-max-containers-received
  • bootstrap-multiput-max-containers-sent
  • boostrap-max-time-get-ancestors
  • consensus-on-accept-gossip-size
  • consensus-accepted-frontier-gossip-size
  • meter-vms-enabled
  • staking-ephemeral-cert-enabled
  • outbound-connection-timeout
  • outbound-connection-throttling-rps

Apricot Phase 2 - Patch 7

28 May 23:49
59980ca
Compare
Choose a tag to compare

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

If the previously installed node version is <= v1.4.4 then this node may have stopped processing blocks. This update will repair the node and perform a database migration. For details about the database migration please see the v1.4.5 release notes. If the previously installed node version is >=v1.4.5 then this node will use the existing database and does not need to perform a database migration.

  • Fixed the pre-migration node to correctly verify the P-chain block SHraz7TtMfTQ5DX1rREhNZW1bi7PpPzAq7xoJAwrWNQrLhQcD.
  • Fixed regression in platformvm.GetBlockchains to correctly return the primary subnet blockchains.
  • Updated the grpc version to v1.37.
  • Optimized peerlist sampling.
  • Added database benchmarks.
  • Reduced various repeated memory allocations.

Apricot Phase 2 - Patch 6

25 May 06:12
a134365
Compare
Choose a tag to compare

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

If the previously installed node version is <= v1.4.4 then this node will perform a database migration. For details about the database migration please see the v1.4.5 release notes. If the previously installed node version is v1.4.5 then this node use the existing database and does not need to perform a database migration.

  • Removes invalid transaction issuance into P-chain mempool that caused high sustained DB writes.
  • Ignored non-database files and folders in the database directory. This should specifically fix errors reported on macOS with .DS_Store files.
  • Fixed the build-dir flag to be able to be specified via CLI without causing the preupgrade node to error.
  • Removed the plugin-dir flag that is no longer supported with the node-manager daemon. Typically not specifying the flag leads to the correct behavior. However, for complex installations the build-dir flag may be required.
  • Enforced gossiping messages only to connections that have finished the peer handshake.
  • Reduced memory allocations during consensus traversals and bootstrapping.

Apricot Phase 2 - Patch 5 - DB Upgrade

21 May 22:43
92e55bc
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but highly encouraged. The patch includes significant performance improvements and numerous other updates.

This upgrade is more involved than the typical version update. More detailed instructions and an FAQ can be found here.

VM Improvements:

  • Fully redesigned the platformvm's state management.
    • Removed the usage of versiondbs being passed through blocks to pass state references that can be modified and read without re-parsing objects.
    • Implemented a base state manager to properly cache and mange writes to the underlying database.
    • Implemented CoW validator sets to enable caching multiple validator sets in memory.
    • Indexed chains by subnet to avoid touching unused state objects.
    • Indexed validators by nodeID to avoid unnecessary iterations while accepting addDelegator and addSubnetValidator transactions.
    • Reduced the number of key-value pairs dedicated to managing validator sets on disk and validator uptimes.
  • Added staking reward look-ups to the platformvm's API to support indexing of rewards.
  • Refactored validator uptime metering to simplify testing.
  • Added block and transaction type metrics to the platformvm.
  • Added API call metrics to the avm and the platformvm.
  • Updated the avm's state management to use prefixdbs, record caching metrics, and share additional code with the platformvm.
  • Simplified UTXO management and indexing in the avm and platformvm.
  • Restructured address parsing and management to be fully shared across compatible VM instances.
  • Restructured shared memory of the primary subnet to be fully shared across VM instances.
  • Added a chain state implementation to support seamless caching over existing VM implementations and to simplify the implementation of new VMs.
  • Integrated the new chain state manager into the rpcchainvm, which also adds various metrics.
  • Added upgradeBytes and configBytes to the standard VM interface to better support future network upgrades.
  • Added getAtomicTx and getAtomicTxStatus endpoints to the evm API.
  • Simplified evm block production to be synchronously performed with the consensus engine.
  • Added an atomic transaction mempool to re-introduce orphaned atomic transactions.
  • Fixed bug in the evm client to properly set the sourceChain in getAtomicUTXOs.
  • Integrated the new chain state manager into the evm to better optimize block management.

Bootstrapping Improvements:

  • Removed re-traversals during bootstrapping. This significantly improves the performance of the node during restarts of the bootstrapping process.
  • Fixed an ungraceful node shutdown when attempting to exit the node while executing bootstrapped containers.
  • Fixed duplicated IPC container broadcasts during bootstrapping.
  • Standardized the bootstrapping jobs queue to write to state using prefixdbs rather than implementing custom prefixing.
  • Added additional bootstrapping caching and cache metrics.

Database Migration Additions:

  • Added a daemon process manager to seamlessly migrate to the updated database format.
  • Refactored version handling to track database semantic versions.
  • Implemented a database manager to track and operate over different database versions.
  • Implemented a keystore migration that automatically copies users from the v1.0.0 database to the v1.4.5 database.
  • Implemented a validator uptime migration from the v1.0.0 database to the v1.4.5 database.

Node Improvements:

  • Updating config parsing to always expand environment variables.
  • Refactored the node config to allow specifying TLS certificates in memory without touching disk.
  • Added better support for meaningful exit codes.
  • Displayed listening address of the http and staking servers to aid in supporting non-specific port mappings.
  • Implemented a versionable database to be able to toggle between a pass through database and a versioned database.
  • Optimized ID Set pre-allocations and reduced the memory usage of the structs.
  • Enforced stricter linting rules.

Modified command line arguments:

For the following arguments "default" was previously treated as a keyword. Now, "default" will attempt to be treated as the intended value of the flag. To retain the default behavior, the flag should not be specified.

  • config-file
  • coreth-config
  • plugin-dir
  • staking-tls-key-file
  • staking-tls-cert-file
  • bootstrap-ips
  • bootstrap-ids
  • ipcs-path
  • db-dir

For the following arguments "" was previously treated as a keyword. Now, "" will attempt to be treated as the intended value of the flag. To retain the default behavior, the flag should not be specified.

  • ipcs-chain-ids
  • log-dir
  • log-display-level

It is no longer required that the bootstrap-ips and bootstrap-ids are paired. This means it is now valid to specify a different number of bootstrap-ips than bootstrap-ids. The bootstrap-ips are used to initially connect to the network and the bootstrap-ids are used as the beacons in bootstrapping.

Added command line arguments:

  • fetch-only
  • build-dir

Removed command line arguments:

  • xput-server-port
  • xput-server-enabled

Apricot Phase 2 - Patch 4

19 May 21:12
9584187
Compare
Choose a tag to compare

This update is backwards compatible. It is optional, but encouraged. The patch includes bug fixes and performance improvements that aim to optimize the upcoming db-upgrade release.

  • Skipped tailing delay in bootstrapping so that all chains finish as soon as the last chain is marked as bootstrapped in a subnet.
  • Improved message handling during bootstrapping to handle messages while waiting for other chains to sync.
  • Reduced sampler allocations by re-using existing samplers.
  • Updated docker scripts to only push images from the master branch.
  • Fixed log formatting.
  • Improved error messages.

Apricot Phase 2 - Patch 3

13 May 20:31
4b642e0
Compare
Choose a tag to compare

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

  • Fixed benched message handling that could cause a node to be unable to progress during bootstrapping. This was typically experienced when the node would fail to transition to normal execution as it was finishing bootstrapping.
  • Fixed a non-deterministic bug in the C-Chain codebase that could cause nodes that receive a lot of transaction broadcast requests to temporarily stop producing blocks until they processes a block produced by another node.
  • Restricted the number of version messages to be sent to a peer to one.
  • Removed legacy handshake messages that were deprecated in Apricot Phase 2.
  • Marked nodes that have been benched as being offline for uptime calculations.
  • Updated the validator set to be more performant during validator set changes.
  • Updated the networking to only attempt to re-connect to a peer on disconnect if they are currently a validator.

Apricot Phase 2 - Patch 2

07 May 00:57
9cbf92d
Compare
Choose a tag to compare

This update is backwards compatible with v1.4.0 and v1.4.1. 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 patch further reduces the size of gossiped peerlist messages and introduces several new flags.

  • network-peer-list-size allows for tuning the number of peers gossiped in each peerlist message.
  • network-peer-list-gossip-size allows for tuning the number of peers to gossip peerlist messages to.
  • network-peer-list-gossip-frequency allows for tuning how frequently peerlists are gossiped.

Apricot Phase 2 - Patch 1

05 May 18:23
ad61602
Compare
Choose a tag to compare

This update is backwards compatible with v1.4.0. Please see the expected update times in the v1.4.0 release. The patch reduces the size of gossiped peerlist messages and introduces a new flag --bootstrap-beacon-connection-timeout that allows for the beacon connection timeout to be configured on startup.