Releases: ava-labs/avalanchego
Cortina - DAG Linearization - 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 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
- Add CODEOWNERS for the x/ package by @StephenButtolph in #1260
- Feature Spec Template by @richardpringle in #1258
- Standardize CI triggers by @StephenButtolph in #1265
- special case no sent/received message in network health check by @ceyonur in #1263
- Fix bug template by @StephenButtolph in #1268
- Replace
flags
usage withpflags
by @danlaine in #1270 - Fixed grammatical errors in
README.md
by @krakxn in #1102 - Add tests for race conditions in merkledb by @kyl27 in #1256
- Add P-chain indexer API example by @StephenButtolph in #1271
- use
require
insnow/choices
tests by @dhrubabasu in #1279 - use
require
inutils/wrappers
tests by @dhrubabasu in #1280 - add support for tracking delegatee rewards to validator metadata by @dhrubabasu in #1273
- defer delegatee rewards until end of validator staking period by @dhrubabasu in #1262
New Contributors
- @richardpringle made their first contribution in #1258
- @ceyonur made their first contribution in #1263
- @krakxn made their first contribution in #1102
- @kyl27 made their first contribution in #1256
- @dhrubabasu made their first contribution in #1279
Full Changelog: v1.9.16...v1.10.0-fuji
Banff.16
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
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
from50
to10
- Updated the year in the license header
Banff.14
Banff.12 - Cortina Prep
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 toSnowman
consensus - Added support for routing consensus messages to either
Avalanche
orSnowman
consensus on the same chain - Removed usage of deferred evaluation of the
handler.Consensus
in theAvalanche
OnFinished
callback - Dropped inbound
Avalanche
consensus messages after switching toSnowman
consensus - Renamed the
Avalanche
VM metrics prefix fromavalanche_{chainID}_vm_
toavalanche_{chainID}_vm_avalanche
- Replaced
consensus
anddecision
dispatchers withblock
,tx
, andvertex
dispatchers - Removed
Avalanche
bootstrapping restarts during the switch toSnowman
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 theavm
mempool
- Added
GetUTXOFromID
to theavm
state.Chain
interface - Added unpopulated
MerkleRoot
toavm
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 intocomponents
- Replaced error strings with error interfaces in the
platformvm
mempool
Warp
- Added
ID
method towarp.UnsignedMessage
- Improved
warp.Signature
verification error descriptions
Miscellaneous
- Improved
merkledb
locking to allow concurrent read access throughtrieView
s - 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 ablock.Parser
interface from atx.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 APIsavm.getBlock
avm.getBlockByHeight
avm.getHeight
- Converted
avm
APIs to only surface accepted state - Deprecated all
ipcs
APIsipcs.publishBlockchain
ipcs.unpublishBlockchain
ipcs.getPublishedBlockchains
- Deprecated all
keystore
APIskeystore.createUser
keystore.deleteUser
keystore.listUsers
keystore.importUser
keystore.exportUser
- Deprecated the
avm/pubsub
API endpoint - Deprecated various
avm
APIsavm.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 endpointwallet.issueTx
wallet.send
wallet.sendMultiple
- Deprecated various
platformvm
APIsplatform.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 theplatform.getTotalStake
response in favor ofweight
Banff.11 - Plugin Registration Regression
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.trieView
s 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
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 frommerkledb.trieView
- Fixed error handling during
merkledb
intermediate node eviction - Replaced values larger than
32
bytes with a hash in themerkledb
hash representation
AVM
- Refactored
avm
API tx creation into a standaloneSpender
implementation - Migrated UTXO interfaces from the
platformvm
into thecomponents
for use in theavm
- 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 ofSIGTERM
- 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 of15
seconds - Updated the
secp256k1
library tov4.1.0
Cleanup
- Removed support for the
--whitelisted-subnets
flag - Removed unnecessary abstractions from the
app
package - Removed
Factory
embedding fromplatformvm.VM
andavm.VM
- Removed
validator
package from theplatformvm
- Removed
timer.TimeoutManager
- Replaced
snow.Context
inFactory.New
withlogging.Logger
- Renamed
set.Bits#Len
toBitLen
andset.Bits#HammingWeight
toLen
to align withset.Bits64
Banff.9 - gRPC Plugin Protocol
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 alldatabase
interface tests
Cryptography
- Moved the
secp256k1
implementations to a newsecp256k1
package out of thecrypto
package - Added
rfc6979
compliance tests to thesecp256k1
signing implementation - Removed unused cryptography implementations
ed25519
,rsa
, andrsapss
- Removed unnecessary cryptography interfaces
crypto.Factory
,crypto.RecoverableFactory
,crypto.PublicKey
, andcrypto.PrivateKey
- Added verification when parsing
secp256k1
public keys to ensure usage of the compressed format
API
- Removed delegators from
platform.getCurrentValidators
unless a singlenodeID
is requested - Added
delegatorCount
anddelegatorWeight
to the validators returned byplatform.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 referenceSECURITY.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 forvalidatorOnly
subnets - Removed the
hashicorp/go-plugin
dependency to improve plugin flexibility - Replaced specialized
bag
implementations with genericbag
implementations - Added
mempool
package to theavm
- Added
chain.State#IsProcessing
to simplify integration withblock.WithVerifyContext
- Added
StateSyncMinVersion
tosync.ClientConfig
- Added validity checks for
InitialStakeDuration
in a custom network genesis - Removed unnecessary reflect call when marshalling an empty slice
Cleanup
- Renamed
teleporter
package towarp
- Replaced
bool
flags in P-chain state diffs with anenum
- 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
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 returnuptime
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
andweight
to all staker responses in P-chain APIs - Deprecated
stakeAmount
in staker responses from P-chain APIs - Removed
creationTxFee
frominfo.GetTxFeeResponse
- Removed
address
fromplatformvm.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
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