Releases: ava-labs/avalanchego
Apricot Phase 6 - Fix Cache Regression
Please upgrade your node as soon as possible.
The supported plugin version is 16
.
Fixes
- Fixed stale block reference by evicting blocks upon successful verification
Coreth
- Removed check for Apricot Phase6 incompatible fork to unblock nodes that did not upgrade ahead of the activation time
Apricot Phase 6 - Caching Improvements
Please upgrade your node as soon as possible.
The supported plugin version is 16
.
Caching
- Added temporarily invalid block caching to reduce repeated network requests
- Added caching to the proposervm's inner block parsing
Coreth
- Reduced the log level of
BAD BLOCK
s fromERROR
toDEBUG
- Deprecated Native Asset Call
Apricot Phase 6 - Bootstrapping Improvements
Please upgrade your node as soon as possible.
The changes in v1.8.x
go into effect at 4 PM EDT on September 6th, 2022 on both Fuji and Mainnet. You should upgrade your node before the changes go into effect, otherwise they may experience loss of uptime.
The supported plugin version is 16
.
Coreth
- Fixed live-lock in bootstrapping, after performing state-sync, by properly reporting
database.ErrNotFound
inGetBlockIDAtHeight
rather than a formatted error - Increased the log level of
BAD BLOCK
s fromDEBUG
toERROR
- Fixed typo in Chain Config
String
function
Apricot Phase 6 - Logging Improvements
Please upgrade your node as soon as possible.
The changes in v1.8.x
go into effect at 4 PM EDT on September 6th, 2022 on both Fuji and Mainnet. You should upgrade your node before the changes go into effect, otherwise they may experience loss of uptime.
The supported plugin version is 16
.
Miscellaneous
- Reduced the severity of not quickly connecting to bootstrap nodes from
FATAL
toWARN
Coreth
- Reduced the log level of
BAD BLOCK
s fromERROR
toDEBUG
- Added Apricot Phase6 to Chain Config
String
function
Apricot Phase 6
This is a mandatory security upgrade. Please upgrade your node as soon as possible.
The changes in the upgrade go into effect at 4 PM EDT on September 6th, 2022 on both Fuji and Mainnet. You should upgrade your node before the changes go into effect, otherwise they may experience loss of uptime.
You may see some extraneous ERROR logs ("BAD BLOCK") on your node after upgrading. These may continue until the Apricot Phase 6 activation (at 4 PM EDT on September 6th).
The supported plugin version is 16
.
PlatformVM APIs
- Fixed
GetBlock
API when requesting the encoding asjson
- Changed the json key in
AddSubnetValidatorTx
s fromsubnet
tosubnetID
- Added multiple asset support to
getBalance
- Updated
PermissionlessValidator
s returned fromgetCurrentValidators
andgetPendingValidators
to includevalidationRewardOwner
anddelegationRewardOwner
- Deprecated
rewardOwner
inPermissionlessValidator
s returned fromgetCurrentValidators
andgetPendingValidators
- Added
subnetID
argument togetCurrentSupply
- Added multiple asset support to
getStake
- Added
subnetID
argument togetMinStake
PlatformVM Structures
- Renamed existing blocks
ProposalBlock
->ApricotProposalBlock
AbortBlock
->ApricotAbortBlock
CommitBlock
->ApricotCommitBlock
StandardBlock
->ApricotStandardBlock
AtomicBlock
->ApricotAtomicBlock
- Added new block types to be enabled in a future release
BlueberryProposalBlock
- Introduces a
Time
field and an unusedTxs
field before the remainingApricotProposalBlock
fields
- Introduces a
BlueberryAbortBlock
- Introduces a
Time
field before the remainingApricotAbortBlock
fields
- Introduces a
BlueberryCommitBlock
- Introduces a
Time
field before the remainingApricotCommitBlock
fields
- Introduces a
BlueberryStandardBlock
- Introduces a
Time
field before the remainingApricotStandardBlock
fields
- Introduces a
- Added new transaction types to be enabled in a future release
RemoveSubnetValidatorTx
- Can be included into
BlueberryStandardBlock
s - Allows a subnet owner to remove a validator from their subnet
- Can be included into
TransformSubnetTx
- Can be included into
BlueberryStandardBlock
s - Allows a subnet owner to convert their subnet into a permissionless subnet
- Can be included into
AddPermissionlessValidatorTx
- Can be included into
BlueberryStandardBlock
s - Adds a new validator to the requested permissionless subnet
- Can be included into
AddPermissionlessDelegatorTx
- Can be included into
BlueberryStandardBlock
s - Adds a new delegator to the requested permissionless validator on the requested subnet
- Can be included into
PlatformVM Block Building
- Fixed race in
AdvanceTimeTx
creation to avoid unnecessary block construction - Added
block_formation_logic.md
to describe how blocks are created - Refactored
BlockBuilder
intoApricotBlockBuilder
- Added
BlueberryBlockBuilder
- Added
OptionBlock
builder visitor - Refactored
Mempool
issuance and removal logic to use transaction visitors
PlatformVM Block Execution
- Added support for executing
AddValidatorTx
,AddDelegatorTx
, andAddSubnetValidatorTx
inside of aBlueberryStandardBlock
- Refactored time advancement into a standard state modification structure
- Refactored
ProposalTxExecutor
to abstract state diff creation - Standardized upgrade checking rules
- Refactored subnet authorization checking
Wallet
- Added support for new transaction types in the P-chain wallet
- Fixed fee amounts used in the Primary Network wallet to reduce unnecessary fee burning
Networking
- Defined
p2p.proto
to be used for future network messages - Added
--network-tls-key-log-file-unsafe
to support inspecting p2p messages - Added
avalanche_network_accept_failed
metrics to track networkingAccept
errors
Miscellaneous
- Removed reserved fields from proto files and renumbered the existing fields
- Added generic dynamically resized ring buffer
- Updated gRPC version to
v1.49.0
to fix non-deterministic errors reported in therpcchainvm
- Removed
--signature-verification-enabled
flag - Removed dead code
ids.QueueSet
timer.Repeater
timer.NewStagedTimer
timer.TimedMeter
Coreth
- Incorrectly deprecated Native Asset Call
- Migrated to go-ethereum v1.10.23
- Added API to fetch Chain Config
v1.7.18 - Chapelco
This version is backwards compatible to v1.7.0. It is optional, but encouraged. The supported plugin version is 15
.
Fixes
- Fixed bug in
codeToFetch
database accessors that caused an error when starting/stopping state sync - Fixed rare BAD BLOCK errors during C-chain bootstrapping
- Fixed platformvm
couldn't get preferred block state
log due to attempted block building during bootstrapping - Fixed platformvm
failed to fetch next staker to reward
error log due to an incorrectlastAcceptedID
reference - Fixed AWS AMI creation
PlatformVM
- Refactored platformvm metrics handling
- Refactored platformvm block creation
- Introduced support to prevent empty nodeID use on the P-chain to be activated in a future upgrade
Coreth
- Updated gas price estimation to limit lookback window based on block timestamps
- Added metrics for processed/accepted gas
- Simplified syntactic block verification
- Ensured statedb errors during block processing are logged
- Removed deprecated gossiper/block building logic from pre-Apricot Phase 4
- Added marshal function for duration to improve config output
Miscellaneous
- Updated local network genesis to use a newer start time
- Updated minimum golang version to go1.18.1
- Removed support for RocksDB
- Bumped go-ethereum version to v1.10.21
- Added various additional tests
- Introduced additional database invariants for all database implementations
- Added retries to windows CI installations
- Removed useless ID aliasing during chain creation
v1.7.17 - Verbier
This version is backwards compatible to v1.7.0. It is optional, but encouraged. The supported plugin version is 15
.
VMs
- Refactored P-chain block state management
- Supporting easier parsing and usage of blocks
- Improving separation of block execution with block definition
- Unifying state definitions
- Introduced support to send custom X-chain assets to the P-chain to be activated in a future upgrade
- Introduced support to use custom assets on the P-chain to be activated in a future upgrade
- Added VMs README to begin fully documenting plugin invariants
- Added various comments around expected usages of VM tools
Coreth
- Added optional JSON logging
- Added interface for supporting stateful precompiles
- Removed legacy code format from the database
Fixes
- Fixed ungraceful gRPC connection closure during very long running requests
- Fixed LevelDB panic during shutdown
- Fixed verification of
--stake-max-consumption-rate
to include the upper-bound - Fixed various CI failures
- Fixed flaky unit tests
Miscellaneous
- Added bootstrapping ETA metrics
- Converted all logs to support structured fields
- Improved Snowman++ oracle block verification error messages
- Removed deprecated or unused scripts
Apricot Phase 5 - Patch 16
Apricot Phase 5 - Patch 15
v1.7.15
This version should not be used in a production environment. v1.7.16 resolves a database leak introduced in this release.
This version is backwards compatible to v1.7.0. It is optional, but encouraged. The supported plugin version is 15
.
PlatformVM
- Replaced copy-on-write validator set data-structure to use tree diffs to optimize validator set additions
- Replaced validation transactions with a standardized representation to remove transaction type handling
- Migrated transaction execution to its own package
- Removed child pointers from processing blocks
- Added P-chain wallet helper for providing initial transactions
Coreth
- Bumped go-ethereum dependency to v1.10.20
- Updated API names used to enable services in
eth-api
config flag. Prior names are supported but deprecated, please update configurations accordingly - Optimized state sync by parallelizing trie syncing
- Added
eth_syncing
API for compatibility. Note: This API is only accessible after bootstrapping and always returns"false"
, since the node will no longer be syncing at that point - Added metrics to the atomic transaction mempool
- Added metrics for incoming/outgoing mempool gossip
Fixes
- Updated Snowman and Avalanche consensus engines to report original container preferences before processing the provided container
- Fixed inbound message byte throttler context cancellation cleanup
- Removed case sensitivity of IP resolver services
- Added failing health check when a whitelisted subnet fails to initialize a chain
Miscellaneous
- Added gRPC client metrics for dynamically created connections
- Added uninitialized continuous time averager for when initial predictions are unreliable
- Updated linter version
- Documented various platform invariants
- Cleaned up various dead parameters
- Improved various tests
Apricot Phase 5 - Patch 14
v1.7.14
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
APIs
These API format changes are breaking changes. https://api.avax.network and https://api.avax-test.network have been updated with this format. If you are using AvalancheGo APIs in your code, please ensure you have updated to the latest versions. See https://docs.avax.network/apis/avalanchego/cb58-deprecation for details about the CB58 removal.
- Removed
CB58
as an encoding option from all APIs - Added
HexC
andHexNC
as encoding options for all APIs that accept an encoding format - Removed the
Success
response from all APIs - Replaced
containerID
withid
in the indexer API
PlatformVM
- Fixed incorrect
P-chain
height inSnowman++
when staking is disabled - Moved
platformvm
transactions to be defined in a sub-package - Moved
platformvm
genesis management to be defined in a sub-package - Moved
platformvm
state to be defined in a sub-package - Standardized
platformvm
transactions to always be referenced via pointer - Moved the
platformvm
transaction builder to be defined in a sub-package - Fixed uptime rounding during node shutdown
Coreth
- Bumped go-ethereum dependency to v1.10.18
- Parallelized state sync code fetching
Networking
- Updated
Connected
andDisconnected
messages to only be sent to chains if the peer is tracking the subnet - Updated the minimum TLS version on the p2p network to
v1.3
- Supported context cancellation in the networking rate limiters
- Added
ChitsV2
message format for the p2p network to be used in a future upgrade
Miscellaneous
- Fixed
--public-ip-resolution-frequency
invalid overwrite of the resolution service - Added additional metrics to distinguish between virtuous and rogue currently processing transactions
- Suppressed the super cool
avalanchego
banner whenstdout
is not directed to a terminal - Updated linter version
- Improved various comments and documentation
- Standardized primary network handling across subnet maps