Releases: ava-labs/avalanchego
Banff.5 - Warp Messaging
This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 21
.
Subnet Messaging
- Added subnet message serialization format
- Added subnet message signing
- Replaced
bls.SecretKey
with ateleporter.Signer
in thesnow.Context
- Moved
SNLookup
into thevalidators.State
interface to support non-whitelisted chainID to subnetID lookups - Added support for non-whitelisted subnetIDs for fetching the validator set at a given height
- Added subnet message verification
- Added
teleporter.AnycastID
to denote a subnet message not intended for a specific chain
Fixes
- Added re-gossip of updated validator IPs
- Fixed
rpcchainvm.BatchedParseBlock
to correctly wrap returned blocks - Removed incorrect
uintptr
handling in the generic codec - Removed message latency tracking on messages being sent to itself
Coreth
- Added support for eth_call over VM2VM messaging
- Added config flags for tx pool behavior
Miscellaneous
- Added networking package README.md
- Removed pagination of large db messages over gRPC
- Added
Size
to the generic codec to reduce allocations - Added
UnpackLimitedBytes
andUnpackLimitedStr
to the manual packer - Added SECURITY.md
- Exposed proposer list from the
proposervm
'sWindower
interface - Added health and bootstrapping client helpers that block until the node is healthy
- Moved bit sets from the
ids
package to theset
package - Added more wallet examples
Banff.4 - VM BLS Access
This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 20
.
This version modifies the db format. The db format is compatible with v1.9.3, but not v1.9.2 or earlier. After running a node with v1.9.4 attempting to run a node with a version earlier than v1.9.3 may report a fatal error on startup.
PeerList Gossip Optimization
- Added gossip tracking to the
peer
instance to only gossip newIP
s to a connection - Added
PeerListAck
message to report whichTxID
s provided by thePeerList
message were tracked - Added
TxID
s to thePeerList
message to unique-ify nodeIDs across validation periods - Added
TxID
mappings to the gossip tracker
Validator Set Tracking
- Renamed
GetValidators
toGet
on thevalidators.Manager
interface - Removed
Set
,AddWeight
,RemoveWeight
, andContains
from thevalidators.Manager
interface - Added
Add
to thevalidators.Manager
interface - Removed
Set
from thevalidators.Set
interface - Added
Add
andGet
to thevalidators.Set
interface - Modified
validators.Set#Sample
to returnids.NodeID
rather thanvaldiators.Validator
- Replaced the
validators.Validator
interface with a struct - Added a
BLS
public key field tovalidators.Validator
- Added a
TxID
field tovalidators.Validator
- Improved and documented error handling within the
validators.Set
interface - Added
BLS
public keys to the result ofGetValidatorSet
- Added
BuildBlockWithContext
as an optional VM method to build blocks at a specific P-chain height - Added
VerifyWithContext
as an optional block method to verify blocks at a specific P-chain height
Uptime Tracking
- Added ConnectedSubnet message handling to the chain handler
- Added SubnetConnector interface and implemented it in the platformvm
- Added subnet uptimes to p2p
pong
messages - Added subnet uptimes to
platform.getCurrentValidators
- Added
subnetID
as an argument toinfo.Uptime
Fixes
- Fixed incorrect context cancellation of escaped contexts from grpc servers
- Fixed race condition between API initialization and shutdown
- Fixed race condition between NAT traversal initialization and shutdown
- Fixed race condition during beacon connection tracking
- Added race detection to the E2E tests
- Added additional message and sender tests
Coreth
- Improved header and logs caching using maximum accepted depth cache
- Added config option to perform database inspection on startup
- Added configurable transaction indexing to reduce disk usage
- Added special case to allow transactions using Nick's Method to bypass API level replay protection
- Added counter metrics for number of accepted/processed logs
APIs
- Added indices to the return values of
GetLastAccepted
andGetContainerByID
on theindexer
API client - Removed unnecessary locking from the
info
API
Chain Data
- Added
ChainDataDir
to thesnow.Context
to allow blockchains to canonically access disk outside avalanchego's database - Added
--chain-data-dir
as a CLI flag to specify the base directory for allChainDataDir
s
Miscellaneous
- Removed
Version
from thepeer.Network
interface - Removed
Pong
from thepeer.Network
interface - Reduced memory allocations inside the system throttler
- Added
CChainID
to thesnow.Context
- Converted all sorting to utilize generics
- Converted all set management to utilize generics
Banff.3 - Tracing
This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 19
.
Tracing
- Added
context.Context
to allVM
interface functions - Added
context.Context
to thevalidators.State
interface - Added additional message fields to
tracedRouter#HandleInbound
- Added
tracedVM
implementations forblock.ChainVM
andvertex.DAGVM
- Added
tracedState
implementation forvalidators.State
- Added
tracedHandler
implementation forhttp.Handler
- Added
tracedConsensus
implementations forsnowman.Consensus
andavalanche.Consensus
Fixes
- Fixed incorrect
NodeID
used in registeredAppRequest
timeouts - Fixed panic when calling
encdb#NewBatch
afterencdb#Close
- Fixed panic when calling
prefixdb#NewBatch
afterprefixdb#Close
Configs
- Added
proposerMinBlockDelay
support to subnet configs - Added
providedFlags
field to theinitializing node
for easily observing custom node configs - Added
--chain-aliases-file
and--chain-aliases-file-content
CLI flags - Added
--proposervm-use-current-height
CLI flag
Coreth
- Added metric for number of processed and accepted transactions
- Added wait for state sync goroutines to complete on shutdown
- Increased go-ethereum dependency to v1.10.26
- Increased soft cap on transaction size limits
- Added back isForkIncompatible checks for all existing forks
- Cleaned up Apricot Phase 6 code
Linting
- Added
unused-receiver
linter - Added
unused-parameter
linter - Added
useless-break
linter - Added
unhandled-error
linter - Added
unexported-naming
linter - Added
struct-tag
linter - Added
bool-literal-in-expr
linter - Added
early-return
linter - Added
empty-lines
linter - Added
error-lint
linter
Testing
- Added
scripts/build_fuzz.sh
and initial fuzz tests - Added additional
Fx
tests - Added additional
messageQueue
tests - Fixed
vmRegisterer
tests
Documentation
- Documented
Database.Put
invariant fornil
and empty slices - Documented avalanchego's versioning scheme
- Improved
vm.proto
docs
Miscellaneous
- Added peer gossip tracker
- Added
avalanche_P_vm_time_until_unstake
andavalanche_P_vm_time_until_unstake_subnet
metrics - Added
keychain.NewLedgerKeychainFromIndices
- Removed usage of
Temporary
error handling afterlistener#Accept
- Removed
Parameters
from allConsensus
interfaces - Updated
avalanche-network-runner
tov1.3.0
- Added
ids.BigBitSet
to extendids.BitSet64
for arbitrarily large sets - Added support for parsing future subnet uptime tracking data to the P-chain's state implementation
- Increased validator set cache size
- Added
avax.UTXOIDFromString
helper for managingUTXOID
s more easily
Banff.2 - Additional BLS Support
This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 19
.
Coreth
- Added trie clean cache journaling to disk to improve processing time after restart
- Fixed regression where a snapshot could be marked as stale by the async acceptor during block processing
- Added fine-grained block processing metrics
RPCChainVM
- Added
validators.State
to the rpcchainvm server'ssnow.Context
- Added
rpcProtocolVersion
to the output ofinfo.getNodeVersion
- Added
rpcchainvm
protocol version to the output of the--version
flag - Added
version.RPCChainVMProtocolCompatibility
map to easily compare plugin compatibility against avalanchego versions
Builds
- Downgraded
ubuntu
release binaries fromjammy
tofocal
- Updated macos github runners to
macos-12
- Added workflow dispatch to build release binaries
BLS
- Added bls proof of possession to
platform.getCurrentValidators
andplatform.getPendingValidators
- Added bls public key to in-memory staker objects
- Improved memory clearing of bls secret keys
Cleanup
- Fixed issue where the chain manager would attempt to start chain creation multiple times
- Fixed race that caused the P-chain to finish bootstrapping before the primary network finished bootstrapping
- Converted inbound message handling to expect usage of types rather than maps of fields
- Simplified the
validators.Set
implementation - Added a warning if synchronous consensus messages take too long
Banff.1 - VM2 Messaging
This version is backwards compatible to v1.9.0. It is optional, but encouraged. The supported plugin version is 18
.
Features
- Added cross-chain messaging support to the VM interface
- Added Ledger support to the Primary Network wallet
- Converted Bionic builds to Jammy builds
- Added
mock.gen.sh
to programmatically generate mock implementations - Added BLS signer to the
snow.Context
- Moved
base
fromrpc.NewEndpointRequester
to be included in themethod
inSendRequest
- Converted
UnboundedQueue
toUnboundedDeque
Observability
- Added support for OpenTelemetry tracing
- Converted periodic bootstrapping status update to be time-based
- Removed duplicated fields from the json format of the node config
- Configured min connected stake health check based on the consensus parameters
- Added new consensus metrics
- Documented how chain time is advanced in the PlatformVM with
chain_time_update.md
Cleanup
- Converted chain creation to be handled asynchronously from the P-chain's execution environment
- Removed
SetLinger
usage of P2P TCP connections - Removed
Banff
upgrade flow - Fixed ProposerVM inner block caching after verification
- Fixed PlatformVM mempool verification to use an updated chain time
- Removed deprecated CLI flags:
--dynamic-update-duration
,--dynamic-public-ip
- Added unexpected Put bytes tests to the Avalanche and Snowman consensus engines
- Removed mockery generated mock implementations
- Converted safe math functions to use generics where possible
- Added linting to prevent usage of
assert
in unit tests - Converted empty struct usage to
nil
for interface compliance checks - Added CODEOWNERs to own first rounds of PR review
Banff - Elastic Subnets
This upgrade adds support for creating Proof-of-Stake Subnets.
This version is not backwards compatible. The changes in the upgrade go into effect at 12 PM EDT, October 18th 2022 on Mainnet.
All Mainnet nodes should upgrade before 12 PM EDT, October 18th 2022.
The supported plugin version is 17
.
Upgrades
- Activated P2P serialization format change to Protobuf
- Activated non-AVAX
ImportTx
/ExportTx
s to/from the P-chain - Activated
Banff*
blocks on the P-chain - Deactivated
Apricot*
blocks on the P-chain - Activated
RemoveSubnetValidatorTx
s on the P-chain - Activated
TransformSubnetTx
s on the P-chain - Activated
AddPermissionlessValidatorTx
s on the P-chain - Activated
AddPermissionlessDelegatorTx
s on the P-chain - Deactivated ANT
ImportTx
/ExportTx
s on the C-chain - Deactivated ANT precompiles on the C-chain
Deprecations
- Ubuntu 18.04 releases are deprecated and will not be provided for
>=v1.9.1
Miscellaneous
- Fixed locked input signing in the P-chain wallet
- Removed assertions from the logger interface
- Removed
--assertions-enabled
flag - Fixed typo in
--bootstrap-max-time-get-ancestors
flag - Standardized exported P-Chain codec usage
- Improved isolation and execution of the E2E tests
- Updated the linked hashmap implementation to use generics
Banff - Elastic Subnets - Fuji Startup Pre-release
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 performs post-upgrade cleanup to the C-chain. Additionally, this release fixes the startup for nodes that didn't update in time for the prior Fuji upgrade.
The changes in the upgrade go into effect at 3 PM EDT, October 4th 2022 on the Fuji testnet.
All Fuji nodes should upgrade before 3 PM EDT, October 4th 2022.
The supported plugin version is 16
.
Upgrades
- Activated P2P serialization format change to Protobuf
- Activated non-AVAX
ImportTx
/ExportTx
s to/from the P-chain - Activated
Banff*
blocks on the P-chain - Deactivated
Apricot*
blocks on the P-chain - Activated
RemoveSubnetValidatorTx
s on the P-chain - Activated
TransformSubnetTx
s on the P-chain - Activated
AddPermissionlessValidatorTx
s on the P-chain - Activated
AddPermissionlessDelegatorTx
s on the P-chain - Deactivated ANT
ImportTx
/ExportTx
s on the C-chain - Deactivated ANT precompiles on the C-chain
Deprecations
- Ubuntu 18.04 releases are deprecated and will not be provided for
>=v1.9.1
Miscellaneous
- Fixed locked input signing in the P-chain wallet
- Removed assertions from the logger interface
- Removed
--assertions-enabled
flag - Fixed typo in
--bootstrap-max-time-get-ancestors
flag - Standardized exported P-Chain codec usage
- Improved isolation and execution of the E2E tests
- Updated the linked hashmap implementation to use generics
Banff - Elastic Subnets - Fuji Post Upgrade Pre-release
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 performs post-upgrade cleanup to the C-chain.
The changes in the upgrade go into effect at 3 PM EDT, October 4th 2022 on the Fuji testnet.
All Fuji nodes should upgrade before 3 PM EDT, October 4th 2022.
The supported plugin version is 16
.
Upgrades
- Activated P2P serialization format change to Protobuf
- Activated non-AVAX
ImportTx
/ExportTx
s to/from the P-chain - Activated
Banff*
blocks on the P-chain - Deactivated
Apricot*
blocks on the P-chain - Activated
RemoveSubnetValidatorTx
s on the P-chain - Activated
TransformSubnetTx
s on the P-chain - Activated
AddPermissionlessValidatorTx
s on the P-chain - Activated
AddPermissionlessDelegatorTx
s on the P-chain - Deactivated ANT
ImportTx
/ExportTx
s on the C-chain - Deactivated ANT precompiles on the C-chain
Deprecations
- Ubuntu 18.04 releases are deprecated and will not be provided for
>=v1.9.1
Miscellaneous
- Fixed locked input signing in the P-chain wallet
- Removed assertions from the logger interface
- Removed
--assertions-enabled
flag - Fixed typo in
--bootstrap-max-time-get-ancestors
flag - Standardized exported P-Chain codec usage
- Improved isolation and execution of the E2E tests
- Updated the linked hashmap implementation to use generics
Banff - Elastic Subnets - Fuji Pre-release
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 support for creating Proof-of-Stake Subnets.
The changes in the upgrade go into effect at 10 AM EDT, October 3rd 2022 on the Fuji testnet. After Fuji is updated and verified, a mainnet compatible release will be published.
All Fuji nodes should upgrade before 10 AM EDT, October 3rd 2022.
The supported plugin version is 16
.
Upgrades
- Activated P2P serialization format change to Protobuf
- Activated non-AVAX
ImportTx
/ExportTx
s to/from the P-chain - Activated
Banff*
blocks on the P-chain - Deactivated
Apricot*
blocks on the P-chain - Activated
RemoveSubnetValidatorTx
s on the P-chain - Activated
TransformSubnetTx
s on the P-chain - Activated
AddPermissionlessValidatorTx
s on the P-chain - Activated
AddPermissionlessDelegatorTx
s on the P-chain - Deactivated ANT
ImportTx
/ExportTx
s on the C-chain - Deactivated ANT precompiles on the C-chain
Deprecations
- Ubuntu 18.04 releases are deprecated and will not be provided for
>=v1.9.1
Miscellaneous
- Fixed locked input signing in the P-chain wallet
- Removed assertions from the logger interface
- Removed
--assertions-enabled
flag - Fixed typo in
--bootstrap-max-time-get-ancestors
flag - Standardized exported P-Chain codec usage
- Improved isolation and execution of the E2E tests
- Updated the linked hashmap implementation to use generics
Apricot Phase 6 - P2P Protobuf
This version is backwards compatible to v1.8.0. It is optional, but encouraged. The supported plugin version is 16
.
BLS
- Added BLS key file at
--staking-signer-key-file
- Exposed BLS proof of possession in the
info.getNodeID
API - Added BLS proof of possession to
AddPermissionlessValidatorTx
s for the Primary Network
The default value of --staking-signer-key-file
is ~/.avalanchego/staking/signer.key
. If the key file doesn't exist, it will be populated with a new key.
Networking
- Added P2P proto support to be activated in a future release
- Fixed inbound bandwidth spike after leaving the validation set
- Removed support for
ChitsV2
messages - Removed
ContainerID
s fromPut
andPushQuery
messages - Added
pending_timeouts
metric to track the number of active timeouts a node is tracking - Fixed overflow in gzip decompression
- Optimized memory usage in
peer.MessageQueue
Miscellaneous
- Fixed bootstrapping ETA metric
- Removed unused
unknown_txs_count
metric - Replaced duplicated code with generic implementations
Coreth
- Added failure reason to bad block API