Skip to content

Releases: ava-labs/avalanchego

Cortina - DAG Linearization - Fuji Pre-Release

04 Apr 00:25
fa8b402
Compare
Choose a tag to compare

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 linearizes the X-chain, introduces delegation batching to the P-chain, and increases the maximum block size on the C-chain.

The changes in the upgrade go into effect at 11 AM EDT, April 6th 2023 on the Fuji testnet. After Fuji is updated and verified, a mainnet compatible release will be published.

All Fuji nodes should upgrade before 11 AM EDT, April 6th 2023.

The supported plugin version is 25.

What's Changed

New Contributors

Full Changelog: v1.9.16...v1.10.0-fuji

Banff.16

26 Mar 01:58
7d73b59
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 24.

  • Removed unnecessary repoll after rejecting vertices
  • Improved snowstorm lookup error handling
  • Removed rejected vertices from the Avalanche frontier more aggressively
  • Reduced default health check values for processing decisions

Banff.15

24 Mar 00:44
7a7d5dd
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 24.

  • Fixed x/merkledb.ChangeProof#getLargestKey to correctly handle no changes
  • Added test for avm/txs/executor.SemanticVerifier#verifyFxUsage with multiple valid fxs
  • Fixed CPU + bandwidth performance regression during vertex processing
  • Added example usage of the /ext/index/X/block API
  • Reduced the default value of --snow-optimal-processing from 50 to 10
  • Updated the year in the license header

Banff.14

23 Mar 01:16
c27721a
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 24.

Banff.12 - Cortina Prep

21 Mar 21:46
b3a7468
Compare
Choose a tag to compare
Pre-release

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 24.

Networking

  • Removed linger setting on P2P connections
  • Improved error message when failing to calculate peer uptimes
  • Removed EngineType from P2P response messages
  • Added context cancellation during dynamic IP updates
  • Reduced the maximum P2P reconnect delay from 1 hour to 1 minute

Consensus

  • Added support to switch from Avalanche consensus to Snowman consensus
  • Added support for routing consensus messages to either Avalanche or Snowman consensus on the same chain
  • Removed usage of deferred evaluation of the handler.Consensus in the Avalanche OnFinished callback
  • Dropped inbound Avalanche consensus messages after switching to Snowman consensus
  • Renamed the Avalanche VM metrics prefix from avalanche_{chainID}_vm_ to avalanche_{chainID}_vm_avalanche
  • Replaced consensus and decision dispatchers with block, tx, and vertex dispatchers
  • Removed Avalanche bootstrapping restarts during the switch to Snowman consensus

AVM

  • Added avm block execution manager
  • Added avm block builder
  • Refactored avm transaction syntactic verification
  • Refactored avm transaction semantic verification
  • Refactored avm transaction execution
  • Added avm mempool gossip
  • Removed block timer interface from avm mempool
  • Moved toEngine channel into the avm mempool
  • Added GetUTXOFromID to the avm state.Chain interface
  • Added unpopulated MerkleRoot to avm blocks
  • Added avm transaction based metrics
  • Replaced error strings with error interfaces in the avm mempool

PlatformVM

  • Added logs when the local nodes stake amount changes
  • Moved platformvm message package into components
  • Replaced error strings with error interfaces in the platformvm mempool

Warp

  • Added ID method to warp.UnsignedMessage
  • Improved warp.Signature verification error descriptions

Miscellaneous

  • Improved merkledb locking to allow concurrent read access through trieViews
  • Fixed Banff transaction signing with ledger when using the wallet
  • Emitted github artifacts after successful builds
  • Added non-blocking bounded queue
  • Converted the x.Parser helper to be a block.Parser interface from a tx.Parser interface

Cleanup

  • Separated dockerhub image publishing from the kurtosis test workflow
  • Exported various errors to use in testing
  • Removed the vms/components/state package
  • Replaced ad-hoc linked hashmaps with the standard data-structure
  • Removed usr/local/lib/avalanche from deb packages
  • Standardized usage of constants.UnitTestID

Examples

  • Added P-chain RemoveSubnetValidatorTx example using the wallet
  • Added X-chain CreateAssetTx example using the wallet

Configs

  • Added support to specify HTTP server timeouts
    • --http-read-timeout
    • --http-read-header-timeout
    • --http-write-timeout
    • --http-idle-timeout

APIs

  • Added avm block APIs
    • avm.getBlock
    • avm.getBlockByHeight
    • avm.getHeight
  • Converted avm APIs to only surface accepted state
  • Deprecated all ipcs APIs
    • ipcs.publishBlockchain
    • ipcs.unpublishBlockchain
    • ipcs.getPublishedBlockchains
  • Deprecated all keystore APIs
    • keystore.createUser
    • keystore.deleteUser
    • keystore.listUsers
    • keystore.importUser
    • keystore.exportUser
  • Deprecated the avm/pubsub API endpoint
  • Deprecated various avm APIs
    • avm.getAddressTxs
    • avm.getBalance
    • avm.getAllBalances
    • avm.createAsset
    • avm.createFixedCapAsset
    • avm.createVariableCapAsset
    • avm.createNFTAsset
    • avm.createAddress
    • avm.listAddresses
    • avm.exportKey
    • avm.importKey
    • avm.mint
    • avm.sendNFT
    • avm.mintNFT
    • avm.import
    • avm.export
    • avm.send
    • avm.sendMultiple
  • Deprecated the avm/wallet API endpoint
    • wallet.issueTx
    • wallet.send
    • wallet.sendMultiple
  • Deprecated various platformvm APIs
    • platform.exportKey
    • platform.importKey
    • platform.getBalance
    • platform.createAddress
    • platform.listAddresses
    • platform.getSubnets
    • platform.addValidator
    • platform.addDelegator
    • platform.addSubnetValidator
    • platform.createSubnet
    • platform.exportAVAX
    • platform.importAVAX
    • platform.createBlockchain
    • platform.getBlockchains
    • platform.getStake
    • platform.getMaxStakeAmount
    • platform.getRewardUTXOs
  • Deprecated the stake field in the platform.getTotalStake response in favor of weight

Banff.11 - Plugin Registration Regression

04 Mar 02:40
c5d8cd3
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 24.

Plugins

  • Removed error from logging.NoLog#Write
  • Added logging to the static VM factory usage
  • Fixed incorrect error being returned from subprocess.Bootstrap

Ledger

  • Added ledger tx parsing support

MerkleDB

  • Added explicit consistency guarantees when committing multiple merkledb.trieViews to disk at once
  • Removed reliance on premature root calculations for merkledb.trieView validity tracking
  • Updated x/merkledb/README.md

Banff.10 - Warp UX Improvements

02 Mar 00:56
98c4466
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 24.

MerkleDB

  • Removed parent tracking from merkledb.trieView
  • Removed base caches from merkledb.trieView
  • Fixed error handling during merkledb intermediate node eviction
  • Replaced values larger than 32 bytes with a hash in the merkledb hash representation

AVM

  • Refactored avm API tx creation into a standalone Spender implementation
  • Migrated UTXO interfaces from the platformvm into the components for use in the avm
  • Refactored avm tx.SyntacticVerify to expect the config rather than the fee fields

Miscellaneous

  • Updated the minimum golang version to v1.19.6
  • Fixed rpcchainvm signal handling to only shutdown upon receipt of SIGTERM
  • Added warp.Signature#NumSigners for better cost tracking support
  • Added snow.Context#PublicKey to provide access to the local node's BLS public key inside the VM execution environment
  • Renamed Avalanche consensus metric prefix to avalanche_{chainID}_avalanche
  • Specified an explicit TCP Linger timeout of 15 seconds
  • Updated the secp256k1 library to v4.1.0

Cleanup

  • Removed support for the --whitelisted-subnets flag
  • Removed unnecessary abstractions from the app package
  • Removed Factory embedding from platformvm.VM and avm.VM
  • Removed validator package from the platformvm
  • Removed timer.TimeoutManager
  • Replaced snow.Context in Factory.New with logging.Logger
  • Renamed set.Bits#Len to BitLen and set.Bits#HammingWeight to Len to align with set.Bits64

Banff.9 - gRPC Plugin Protocol

21 Feb 20:44
d755f87
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 23.

Note: The --whitelisted-subnets flag was deprecated in v1.9.6. This is the last release in which it will be supported. Use --track-subnets instead.

Monitoring

  • Added warning when the P2P server IP is private
  • Added warning when the HTTP server IP is potentially publicly reachable
  • Removed merkledb.trieView#calculateIDs tracing when no recalculation is needed

Databases

  • Capped the number of goroutines that merkledb.trieView#calculateIDsConcurrent will create
  • Removed nodb package
  • Refactored Batch implementations to share common code
  • Added Batch.Replay invariant tests
  • Converted to use require in all database interface tests

Cryptography

  • Moved the secp256k1 implementations to a new secp256k1 package out of the crypto package
  • Added rfc6979 compliance tests to the secp256k1 signing implementation
  • Removed unused cryptography implementations ed25519, rsa, and rsapss
  • Removed unnecessary cryptography interfaces crypto.Factory, crypto.RecoverableFactory, crypto.PublicKey, and crypto.PrivateKey
  • Added verification when parsing secp256k1 public keys to ensure usage of the compressed format

API

  • Removed delegators from platform.getCurrentValidators unless a single nodeID is requested
  • Added delegatorCount and delegatorWeight to the validators returned by platform.getCurrentValidators

Documentation

  • Improved documentation on the block.WithVerifyContext interface
  • Fixed --public-ip and --public-ip-resolution-service CLI flag descriptions
  • Updated README.md to explicitly reference SECURITY.md

Coreth

  • Enabled state sync by default when syncing from an empty database
  • Increased block gas limit to 15M for Cortina Network Upgrade
  • Added back file tracer endpoint
  • Added back JS tracer

Miscellaneous

  • Added allowedNodes to the subnet config for validatorOnly subnets
  • Removed the hashicorp/go-plugin dependency to improve plugin flexibility
  • Replaced specialized bag implementations with generic bag implementations
  • Added mempool package to the avm
  • Added chain.State#IsProcessing to simplify integration with block.WithVerifyContext
  • Added StateSyncMinVersion to sync.ClientConfig
  • Added validity checks for InitialStakeDuration in a custom network genesis
  • Removed unnecessary reflect call when marshalling an empty slice

Cleanup

  • Renamed teleporter package to warp
  • Replaced bool flags in P-chain state diffs with an enum
  • Refactored subnet configs to more closely align between the primary network and subnets
  • Simplified the utxo.Spender interface
  • Removed unused field common.Config#Validators

Banff.8 - PROXY Protocol

01 Feb 23:57
45ec881
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 22.

Note: The --whitelisted-subnets flag was deprecated in v1.9.6 and may be removed in v1.9.9.

Networking

  • Added TCP proxy support for p2p network traffic
  • Added p2p network client utility for directly messaging the p2p network

Consensus

  • Guaranteed delivery of App messages to the VM, regardless of sync status
  • Added EngineType to consensus context

MerkleDB - Alpha

  • Added initial implementation of a path-based merkle-radix tree
  • Added initial implementation of state sync powered by the merkledb

APIs

  • Updated platform.getCurrentValidators to return uptime as a percentage
  • Updated platform.get*Validators to avoid iterating over the staker set when requesting specific nodeIDs
  • Cached staker data in platform.get*Validators to significantly reduce DB IO
  • Added stakeAmount and weight to all staker responses in P-chain APIs
  • Deprecated stakeAmount in staker responses from P-chain APIs
  • Removed creationTxFee from info.GetTxFeeResponse
  • Removed address from platformvm.GetBalanceRequest

Fixes

  • Fixed RemoveSubnetValidatorTx weight diff corruption
  • Released network lock before attempting to close a peer connection
  • Fixed X-Chain last accepted block initialization to use the genesis block, not the stop vertex after linearization
  • Removed plugin directory handling from AMI generation
  • Removed copy of plugins directory from tar script

Cleanup

  • Removed unused rpm packaging scripts
  • Removed engine dependency from chain registrants
  • Removed unused field from chain handler log
  • Linted custom test chains.Manager
  • Used generic btree implementation
  • Deleted utils.CopyBytes
  • Updated rjeczalik/notify from v0.9.2 to v0.9.3

Miscellaneous

  • Added AVM state.Chain interface
  • Added generic atomic value utility
  • Added test for the AMI builder during RCs
  • Converted cache implementations to use generics
  • Added optional cache eviction callback

Banff.7 - Subnet Validator Lookups

11 Jan 23:03
3e3e40f
Compare
Choose a tag to compare

This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 22.

Fixes

  • Fixed subnet validator lookup regression