AvalancheGo Release Notes
This version is backwards compatible to v1.6.0. It is optional, but encouraged.
Config Options
    Removed --coreth-config. See here.
    Added --throttler-inbound-node-max-processing-msgs. See here.
    Added --db-config-file. See here.
API
    API method avm.exportAVAX has been removed. Use avm.export instead.
    API method avm.importAVAX has been removed. Use avm.import instead.
    API method info.peers now treats the PublicIP field as option and only populates it when a valid IP is provided.
    API client platform.getValidatorsAt has been added.
    API client admin.lockProfile has been fixed to correctly call lockProfile.
    API client health.health has been fixed to properly handle responses from an unhealthy server.
    Improved responses from the Health Check API to be more descriptive.
Benchlist
    Changed the minimum time a validator must be unresponsive and the maximum amount of time a validator will be benched for. These used to be 5 minutes and 30 minutes, respectively, and are now 2.5 minutes and 15 minutes.
Database
    Allowed users to specify database config with flag --db-config-file.
Subnets
    Added the ability for a client to configure a subnet as private to restrict membership to only approved validators.
Networking
    Changed the default size of the inbound at-large message allocation from 32 MiB to 6 MiB.
    Changed the default size of the outbound at-large message allocation from 32 MiB to 6 MiB.
    Changed the default maximum number of bytes a node can take from the inbound at-large message allocation from 4 MiB to 2 MiB.
    Changed the default maximum number of bytes a node can take from the outbound at-large message allocation from 4 MiB to 2 MiB.
    Added additional inbound message rate-limiting. A node will not read more messages from a peer until it is processing less than --throttler-inbound-node-max-processing-msgs from that peer.
    Changed default number of non-validators an AppGossip message is gossiped to from 2 to 0.
    Changed default number of validators an AppGossip message is gossiped to from 4 to 6.
    Introduced the ability for a VM to gossip to specific validators rather than just uniformly randomly.
    Fixed an issue that caused some nodes to never attempt to reconnect to a previously disconnected node.
ProposerVM
    Introduced a pessimistic P-chain height lag to improve stability during high P-chain block issuance.
    Correctly applied the requested block delay.
Metrics
    Removed API request histogram metrics from the X-chain and the P-chain.
    Added P-chain mempool metrics.
    Added validator_sets metrics to the platformvm.
Other
    Refactored node startup and shutdown to avoid ungraceful shutdowns in the event that the node is started and then immediately stopped.
    Fixed P-chain mempool to correctly track the number of allocated bytes.
    Upgraded the C-chain to run geth 1.10.9.
    Supported abigen for the C-chain.
    Added support for pre-image support on the C-chain.
    Added support for the fee history endpoint on the C-chain.
    Refactored ID aliasing to better support GRPC tests.
    Removed the end-to-end test branch matchup logic.
    Removed the deprecated main entry point for the database migration's process manager.
This version is backwards compatible to v1.6.0. It is optional, but encouraged.
Upgrades
    Added ability to specify subnet configs
    Added various new networking config values
    Removed legacy messages from the network library
    Fixed P-chain mempool bug that impacted AddValidator transactions on local networks
    Changed transaction gossip rules to gossip to a fixed number of validators as well as all peers
    Removed deprecated getLiveness method from the Health API
    Added config option to disallow connections between non-validators
Note
The following are deprecated and should no longer be used. They may be removed in any future version:
    API method avm.exportAVAX should be removed in favor of avm.export
    API method avm.importAVAX should be removed in favor of avm.import
    Config option coreth-config should be removed in favor of a chain config file.
This change is not backwards compatible with previous releases.
This upgrade adds a contention limiter to the C-chain and P-chain, introduces a block based fee on the C-chain, and tunes some dynamic fee parameters on the C-chain.
The changes in the upgrade go into effect at 5 PM EDT / 9 PM UTC, September 22th 2021 on Mainnet. You should upgrade your node before the changes go into effect, otherwise you may experience loss of uptime on your node.
More info can be found here.
Go
The minimum Go version required to build AvalancheGo is now Go 1.16.8
Bug Fixes
Fix race condition during timeout manager startup.
Upgrades
    Introduced Snowman++ on the P-chain and C-chain.
    Introduced mempool gossiping to the P-chain and C-chain using the VM<->VM communication layer.
    Added a block based fee to C-chain blocks.
    Set the minimum gas price to 25 nAVAX and the maximum gas price to 1000 nAVAX in the C-chain dynamic fee mechanism.
    Rate limit incoming connections
New Metrics
    avalanche_C_blks_built / avalanche_P_blks_built: Number of blocks that have been built locally on the C-Chain and P-Chain, respectively.
    avalanche_C_blks_builds_failed / avalanche_P_blks_builds_failed: Number of calls to BuildBlock that failed on the C-Chain and P-Chain, respectively.
Config Options
    Added flag inbound-connection-throttling-max-conns-per-sec.(See config documentation.)
    Deprecated flag inbound-connection-throttling-max-recent. This flag is now ignored.

PRE_RELEASE v1.6.0-fuji (View on GitHub)

Please note that this release is unable to run mainnet - and will display "mainnet is not supported" if attempted to run with a mainnet configuration.
This upgrade adds a contention limiter to the C-chain and P-chain, introduces a block based fee on the C-chain, and tunes some dynamic fee parameters on the C-chain.
The changes in the upgrade go into effect at 5 PM EDT, September 16th 2021 on the Fuji testnet. After Fuji is updated and verified, a Mainnet compatible release will be published.
All Fuji nodes should upgrade before 5 PM EDT, September 16th 2021.
Upgrades
    Introduced Snowman++ on the P-chain and C-chain.
    Introduced mempool gossiping to the P-chain and C-chain using the VM<->VM communication layer.
    Added a block based fee to C-chain blocks.
    Set the minimum gas price to 25 nAVAX and the maximum gas price to 1000 nAVAX in the C-chain dynamic fee mechanism.
    Added metrics for the number of blocks built and the number of failed build block attempts.
This version is backwards compatible to v1.5.0.
Uptime
    Changed minimum uptime requirement to receive a staking reward from 60% to 80%.
Networking
    Added 3 new network messages: AppRequest, AppResponse and AppGossip. These messages allow instances of a blockchain to send arbitrary data to each other as defined by their VM. Previously, instances of a blockchain could only communicate with one another by sending consensus messages (Put, PushQuery, etc.). See snow/engine/common/engine.go.
    Upon receipt of a Pong message, disconnect from the sender if their version is incompatible.
    Prepended method named in common.Sender with Send for clarity (e.g. Put --> SendPut).
P-Chain
    Added functionality to track changes in validator weight by block.
    Added API method GetValidatorsAt which allows for retrieval of a subnet's (or the Primary Network's) validator set at a given P-Chain height.
C-Chain
    Incorporate changes from Geth v1.10.8
    Remove references to Ancients
Consensus
    Added method Timestamp() to the snowman.Block interface.
Local Networks
    Updated the start time of the validators in the local genesis. The end time for validators specified in the local config in versions before v1.5.3 is Sep. 10, 2021 00:00:00 UTC. Because of this, you must upgrade to AvalancheGo v1.5.3 in order to run a local network after this time.
Config Options
    Added AvalancheGo config option consensus-app-gossip-size, which defines the number of peers an AppGossip message is gossiped to.
    Added C-Chain config option log-level. Options are: "trace", "debug", "info", "warn", "error", "crit". Defaults to "debug" (as before.)
This update is backwards compatible with v1.5.0. Please see the expected update times in the v1.5.0 release.
Coreth
AVM
    Introduced stateless codec generation for improved tooling.
Consensus
    Added additional logging around bubbling votes.

v1.5.1-eth_call (View on GitHub)

This update is backwards compatible with v1.5.0. Please see the expected network upgrade times in the v1.5.0 release.
This update is a hotfix for v1.5.1 that allows using eth_call without the externally owned account check.
This update is backwards compatible with v1.5.0. Please see the expected network upgrade times in the v1.5.0 release.
Configuration
    Removed option bootstrap-retry-max-attempts and added option bootstrap-retry-warn-frequency
Subnets
    Added subnetIDs to the handshake message. This notifies peers about which subnets a node is interesting in syncing.
    Optimized subnet container gossiping.
AVM
    Fixed avm.GetTx's JSON endpoint to properly report amounts on UTXOs.
Bootstrapping
    Fixed busy loop that could occur if a node's internet dropped during bootstrapping, causing the node to report a fatal error.
RPCChainVM
    Improved caching of unverified blocks.
Coreth
    Updated to Geth v1.10.7.
This change is not backwards compatible with previous releases.
This upgrade adds dynamic fees to the C-chain, along with various other improvements.
The changes in the upgrade go into effect at 10 AM EDT, August 24th 2021 on Mainnet. You should upgrade your node before the changes go into effect, otherwise you may experience loss of uptime on your node.
More info can be found here.
Network Upgrades
    Added dynamic fee calculations to the C-chain.
    Increased CreateSubnetTx and CreateChainTx fees.
    Fixed heap corruption bug in delegator validation.
    Enforced MaxStakeWeight for delegation transactions.
Client Upgrades
    Added transaction indexing capabilities to the X-chain to enable historical lookups of transactions by address and asset.
    Added ./avalanchego as the default command in the docker image.
    Used static dependency versions in the docker image.
    Removed database migration support and deamon runner.
    Refactored node config parsing.
    Optimized container gossiping sampling.
    Added the ability to statically build the AvalancheGo and EVM binaries.
    Simplified the Block interface to only expose the parent block's ID rather than fetching the full parent block.
    Added additional metrics for pending jobs in the consensus engines.
    Refactored P-chain statuses to handle blockchain validation statuses separately from transaction confirmation statuses.
Updated APIs
    Added GetAddressTxs to the avm API.
    Added SetLoggerLevel and GetLoggerLevel to the Admin API to allow fine grained tuning of log levels while the node is still running.
    Added GetConfig to the Admin API to allow fetching the node config that the node is currently using.
    Updated platformvm.Client to allow specifying nodeIDs in GetCurrentValidators and GetPendingValidators and generalized the response to GetStake.
Updated CLI Arguments
    Removed fetch-only.
    Added JSON config parsing to avm VM.
      Added indexTransactions
      Added indexAllowIncomplete

PRE_RELEASE v1.5.0-fuji (View on GitHub)

Please note that this release is unable to run mainnet - and will display "this node version doesn't support mainnet" if attempted to run with a mainnet configuration. If you run a mainnet node, no action is required until the official release is published next week.
This change is not backwards compatible with previous releases.
This upgrade adds dynamic fees to the C-chain, along with various other improvements.
The changes in the upgrade go into effect at 3 PM EDT, August 16th 2021 on the Fuji testnet. After Fuji is updated and verified, a mainnet compatible release will be published.
Network Upgrades
    Added dynamic fee calculations to the C-chain.
    Increased CreateSubnetTx and CreateChainTx fees.
    Fixed heap corruption bug in delegator validation.
    Enforced MaxStakeWeight for delegation transactions.
Client Upgrades
    Added transaction indexing capabilities to the X-chain to enable historical lookups of transactions by address and asset.
    Added ./avalanchego as the default command in the docker image.
    Used static dependency versions in the docker image.
    Removed database migration support and deamon runner.
    Refactored node config parsing.
    Optimized container gossiping sampling.
    Added the ability to statically build the AvalancheGo and EVM binaries.
    Simplified the Block interface to only expose the parent block's ID rather than fetching the full parent block.
    Added additional metrics for pending jobs in the consensus engines.
    Refactored P-chain statuses to handle blockchain validation statuses separately from transaction confirmation statuses.
Updated APIs
    Added GetAddressTxs to the avm API.
    Added SetLoggerLevel and GetLoggerLevel to the Admin API to allow fine grained tuning of log levels while the node is still running.
    Added GetConfig to the Admin API to allow fetching the node config that the node is currently using.
    Updated platformvm.Client to allow specifying nodeIDs in GetCurrentValidators and GetPendingValidators and generalized the response to GetStake.
Updated CLI Arguments
    Removed fetch-only.
    Added JSON config parsing to avm VM.
      Added indexTransactions
      Added indexAllowIncomplete

v1.4.12 (View on GitHub)

This update is backwards compatible. It is optional, but encouraged.
X-Chain
    Added formatting argument "json" to API method GetTx, which returns the JSON representation of the queried transaction
    Added interface type assertions
Info API
    Added method GetNodeVersion to Info API client
Prometheus Metrics
    Fixed and renamed metrics for bytes not sent due to compression
    Added metrics for bytes not received due to compression
    Added helper struct noAverager to metrics package
Database
    Updated/added benchmarks
Shared Memory
    Replace Put and Remove with Apply to allow for future atomic transaction optimization

v1.4.11 (View on GitHub)

C-Chain
This release enables snapshots by default.
Config Flags
Removed
    conn-meter-reset-duration
    conn-meter-max-conns
Added
    network-compression-enabled
Prometheus Metrics
Many Prometheus metrics were renamed, and many histograms were replaced with 2 gauges. See here for updated Grafana Dashboards.
This release also adds helper methods to the utils/metric package.
RocksDB
RocksDB is no longer built by default when running the build script, and it is not included in publicly released binaries. To build AvalancheGo with RocksDB, run export ROCKSDBALLOWED=1 in your terminal and then scripts/build.sh. You must do this before you can use --db-type=rocksdb.
The RocksDB database now places/looks for its files in a subdirectory rocksdb. Note that if you previously ran with RocksDB, you'll need to move the existing files.
Message Compression
Nodes now compress some P2P messages. If a peer is version >= v1.4.11, Put, Push Query, Peer List and Multiput messages sent to the peer are compressed using gzip before being sent over the network. This reduces AvalancheGo's bandwidth usage.
Inbound Connection Throttling Refactored inbound connection rate-limiting and enable it by default.
General Improvements
    Refactored and improved performance of iteration over a database served by gRPC to a plugin.
    On Linux, clean up the C-Chain if AvalancheGo dies ungracefully
    Refactored P2P message definitions and move them from the network package.
    Added VM aliases to the HTTP API server
    Replaced 1024 with units.KiB, etc.
    Improved partition tolerance by processing chits in order of the creation of the corresponding queries.
Fuji IPs
Updated the bootstrap IPs for the Fuji Testnet.

v1.4.10 (View on GitHub)

Apricot Phase 2 - Patch 10
This update is backwards compatible. It is optional, but encouraged.
The patch includes performance, throttling, and VM improvements:
    Added support to use RocksDB rather than LevelDB on supported architectures.
    Restructured inbound network throttling to be on a per-node basis, to restrict the bandwidth usage of peer nodes.
    Restructured 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
This update is backwards compatible. It is optional, but encouraged.
The patch includes performance improvements, 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 load balancer.
    Added timestamp to 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 connecting to 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
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
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 database migration 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
This update is backwards compatible. It is optional, but encouraged. This 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.
This patch:
    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
This upgrade is more involved than the typical version update. More detailed instructions and an FAQ can be found here.
This update is backwards compatible. It is optional, but encouraged. The patch includes significant performance improvements and numerous other updates.
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
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
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 process 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
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
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.
Apricot Phase 2
Please note that this change is not backwards compatible with previous releases.
The related blog post can be found here.
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
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
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
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
Apricot Phase 0 - Upgrade 1 - Patch 4
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 numerous new metrics relating to node health and database usage, removing unused and invalid metrics, and fixing some metric names.