Releases: ava-labs/avalanchego
Apricot Phase 0 - Patch 2
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 thesnowman.Block
interface.
Apricot Phase 0 - Patch 1
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
TypeID
s 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
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
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
andplatform.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 theVertex
interface in preparation of a future release. - Deferred transaction hashing to reduce CPU/Memory utilization past fast checks.
Mainnet Patch - 5
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
andGetUTXOs
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
UniformSampler
s to avoid creating multiple maps. - Reduced usage of
ids.Set
in favor of[]ids.ID
to better utilize continuous memory. - Introduced
[]byte
reuse inPrefixDB
. - 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
This patch reverts an accidental change in the default visibility of coreth's net_
API.
Mainnet Patch - 4
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
toplatform.getTxStatus
.
If not provided, or iffalse
, the output fromgetTxStatus
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
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
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 therpcchainvm
'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
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.