This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Added peer bandwidth tracking to optimize
coreth
state sync message routing - Fixed
coreth
leaf request handler bug to ensure the handler delivers a valid range proof - Removed redundant proof keys from
coreth
leafs response message format - Improved
coreth
state sync request retry logic - Improved
coreth
state sync handler metrics - Improved
coreth
state sync ETA - Added
avalanche_{chainID}_handler_async_expired
metric
- Fixed
platform.getCurrentValidators
API to correctly mark a node as connected to itself on subnets. - Fixed
platform.getBlockchainStatus
to correctly reportUnknown
for blockchains that are not managed by theP-Chain
- Added process metrics by default in the
rpcchainvm#Server
- Added
Database
health checks - Removed the deprecated
Database.Stat
call from therpcdb#Server
- Added fail fast logic to duplicated Snowman additions to avoid undefined behavior
- Added additional testing around Snowman diverged voting tests
- Deprecated
--dynamic-update-duration
and--dynamic-public-ip
CLI flags - Added
--public-ip-resolution-frequency
and--public-ip-resolution-service
to replace--dynamic-update-duration
and--dynamic-public-ip
, respectively
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Fixed proposervm state summary acceptance to only accept state summaries with heights higher than the locally last accepted block
- Fixed proposervm state summary serving to only respond to requests after height indexing has finished
- Improved C-chain state sync leaf request serving by optimistically reading leaves from snapshot
- Refactored C-chain state sync block fetching
- Reduced default peerlist and accepted frontier gossipping
- Increased the default at-large outbound buffer size to 32 MiB
- Added leveldb metrics
- Added process and golang metrics for the avalanchego binary
- Added available disk space health check
- Ensured that the disk space will not be fully utilized by shutting down the node if there is a critically low amount of free space remaining
- Improved C-chain state sync metrics
- Added C-chain acceptor queue within
core/blockchain.go
- Removed rpcdb locking when committing batches and using iterators
- Capped C-chain TrieDB dirties cache size during block acceptance to reduce commit size at 4096 block interval
- Refactored the avm to utilize the external txs package
- Unified platformvm dropped tx handling
- Clarified snowman child block acceptance calls
- Fixed small consensus typos
- Reduced minor duplicated code in consensus
- Moved the platformvm key factory out of the VM into the test file
- Removed unused return values from the timeout manager
- Removed weird json rpc private interface
- Standardized json imports
- Added vm factory interface checks
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
The first startup of the C-Chain will cause an increase in CPU and IO usage due to an index update. This index update runs in the background and does not impact restart time.
- Added state syncer engine to facilitate VM state syncing, rather than full historical syncing
- Added
GetStateSummaryFrontier
,StateSummaryFrontier
,GetAcceptedStateSummary
,AcceptedStateSummary
as P2P messages - Updated
Ancestors
message specification to expect an empty response if the container is unknown - Added
--state-sync-ips
and--state-sync-ids
flags to allow manual overrides of which nodes to query for accepted state summaries - Updated networking library to permanently track all manually tracked peers, rather than just beacons
- Added state sync support to the
metervm
- Added state sync support to the
proposervm
- Added state sync support to the
rpcchainvm
- Added beta state sync support to
coreth
- Prevented rejected blocks from overwriting the
proposervm
height index - Optimized
proposervm
block rewind to utilize the height index if available - Ensured
proposervm
height index is marked as repaired inInitialize
if it is fully repaired on startup - Removed
--reset-proposervm-height-index
. The height index will be reset upon first restart - Optimized
proposervm
height index resetting to periodically flush deletions
- Fixed IPC message issuance and restructured consensus event callbacks to be checked at compile time
- Fixed
coreth
metrics initialization - Fixed bootstrapping startup logic to correctly startup if initially connected to enough stake
- Fixed
coreth
panic during metrics collection - Fixed panic on concurrent map read/write in P-chain wallet SDK
- Fixed
rpcchainvm
panic by sanitizing http response codes - Fixed incorrect JSON tag on
platformvm.BaseTx
- Fixed
AppRequest
,AppResponse
, andAppGossip
stringers used in logging
- Supported client implementations pointing to non-standard URIs
- Introduced
ids.NodeID
type to standardize logging and simplify API service and client implementations - Changed client implementations to use standard types rather than
string
s wherever possible - Added
subnetID
as an argument toplatform.getTotalStake
- Added
connected
to the subnet validators in responses toplatform.getCurrentValidators
andplatform.getPendingValidators
- Add missing
admin
API client methods - Improved
indexer
API client implementation to avoid encoding edge cases
- Added
--snow-mixed-query-num-push-vdr
and--snow-mixed-query-num-push-non-vdr
to allow parameterization of sending push queries- By default, non-validators now send only pull queries, not push queries.
- By default, validators now send both pull queries and push queries upon inserting a container into consensus. Previously, nodes sent only push queries.
- Added metrics to track the amount of over gossipping of
peerlist
messages - Added custom message queueing support to outbound
Peer
messages - Reused
Ping
messages to avoid needless memory allocations
- Replaced AvalancheGo's internal logger with uber-go/zap.
- Replaced AvalancheGo's log rotation with lumberjack.
- Renamed
log-display-highlight
tolog-format
and addedjson
option. - Added
log-rotater-max-size
,log-rotater-max-files
,log-rotater-max-age
,log-rotater-compress-enabled
options for log rotation.
- Added
--data-dir
flag to easily move all default file locations to a custom location - Standardized RPC specification of timestamp fields
- Logged health checks whenever a failing health check is queried
- Added callback support for the validator set manager
- Increased
coreth
trie tip buffer size to 32 - Added CPU usage metrics for AvalancheGo and all sub-processes
- Added Disk IO usage metrics for AvalancheGo and all sub-processes
- Refactored easily separable
platformvm
files into separate smaller packages - Simplified default version parsing
- Fixed various typos
- Converted some structs to interfaces to better support mocked testing
- Refactored IP utils
- Increased recommended disk size to 1 TB
- Updated issue template
- Documented additional
snowman.Block
invariants
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Improved vertex and block gossiping for validators with low stake weight.
- Added peers metric by subnet.
- Added percentage of stake connected metric by subnet.
- Added support for specifying additional headers and query params in the RPC client implementations.
- Added static API clients for the
platformvm
and theavm
.
- Introduced time based windowing of accepted P-chain block heights to ensure that local networks update the proposer list timely in the
proposervm
. - Improved selection of decision transactions from the mempool.
- Increased
buf
version tov1.3.1
. - Migrated all proto definitions to a dedicated
/proto
folder. - Removed the dependency on the non-standard grpc broker to better support other language implementations.
- Added grpc metrics.
- Added grpc server health checks.
- Fixed a bug where a deadlock on shutdown caused historical re-generation on restart.
- Added an API endpoint to fetch the current VM Config.
- Added AvalancheGo custom log formatting to the logs.
- Removed support for the JS Tracer.
- Added piping of subnet logs to stdout.
- Lazily initialized logs to avoid opening files that are never written to.
- Added support for arbitrarily deleted log files while avalanchego is running.
- Removed redundant logging configs.
- Updated minimum go version to
v1.17.9
. - Added subnet bootstrapping health checks.
- Supported multiple tags per codec instantiation.
- Added minor fail-fast optimization to string packing.
- Removed dead code.
- Fixed typos.
- Simplified consensus engine
Shutdown
notification dispatching. - Removed
Sleep
call in the inbound connection throttler.
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Improved subnet gossip to only send messages to nodes participating in that subnet.
- Fixed inlined VM initialization to correctly register static APIs.
- Added logging for file descriptor limit errors.
- Removed dead code from network packer.
- Improved logging of invalid hash length errors.
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Fixed duplicate reference decrease when closing a peer.
- Freed allocated message buffers immediately after sending.
- Added
--network-peer-read-buffer-size
and--network-peer-write-buffer-size
config options. - Moved peer IP signature verification to enable concurrent verifications.
- Reduced the number of connection flushes when sending messages.
- Canceled outbound connection requests on shutdown.
- Reused dialer across multiple outbound connections.
- Exported
NewTestNetwork
for easier external testing.
- Reduced log level of snapshot regeneration logs.
- Enabled atomic tx replacement with higher gas fees.
- Parallelized trie index re-generation.
- Fixed incorrect
BlockchainID
usage in the X-chainImportTx
builder. - Fixed incorrect
OutputOwners
in the P-chainImportTx
builder. - Improved FD limit error logging and warnings.
- Rounded bootstrapping ETAs to the nearest second.
- Added gossip config support to the subnet configs.
- Optimized various queue removals for improved memory freeing.
- Added a basic X-chain E2E usage test to the new testing framework.
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Refactored the networking library to track potential peers by nodeID rather than IP.
- Separated peer connections from the mesh network implementation to simplify testing.
- Fixed duplicate
Connected
messages bug. - Supported establishing outbound connections with peers reporting different inbound and outbound IPs.
- Disabled seek compaction in leveldb by default.
- Increased protocol version, this requires all plugin definitions to update their communication dependencies.
- Merged services to be served using the same server when possible.
- Implemented a fast path for simple HTTP requests.
- Removed duplicated message definitions.
- Improved error reporting around invalid plugins.
- Optimized FeeHistory API.
- Added protection to prevent accidental corruption of archival node trie index.
- Added capability to restore complete trie index on best effort basis.
- Rounded up fastcache sizes to utilize all mmap'd memory in chunks of 64MB.
- Removed
--inbound-connection-throttling-max-recent
- Renamed
--network-peer-list-size
to--network-peer-list-num-validator-ips
- Removed
--network-peer-list-gossip-size
- Removed
--network-peer-list-staker-gossip-fraction
- Added
--network-peer-list-validator-gossip-size
- Added
--network-peer-list-non-validator-gossip-size
- Removed
--network-get-version-timeout
- Removed
--benchlist-peer-summary-enabled
- Removed
--peer-alias-timeout
- Fixed error reporting when making Avalanche chains that did not manually specify a primary alias.
- Added beacon utils for easier programmatic handling of beacon nodes.
- Resolved the default log directory on initialization to avoid additional error handling.
- Added support to the chain state module to specify an arbitrary new accepted block.
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Introduced a new vertex type to support future
Avalanche
based network upgrades. - Added pending message metrics to the chain message queues.
- Refactored event dispatchers to simplify dependencies and remove dead code.
- Added
json
encoding option to theplatform.getTx
call. - Added
platform.getBlock
API. - Cleaned up block building logic to be more modular and testable.
- Increased
FeeHistory
maximum historical limit to improve MetaMask UI on the C-Chain. - Enabled chain state metrics.
- Migrated go-ethereum v1.10.16 changes.
- Added the ability to load new VM plugins dynamically.
- Implemented X-chain + P-chain wallet that can be used to build and sign transactions. Without providing a full node private keys.
- Integrated e2e testing to the repo to avoid maintaining multiple synced repos.
- Fixed
proposervm
height indexing check to correctly mark the indexer as repaired. - Introduced message throttling overrides to be used in future improvements to reliably send messages.
- Introduced a cap on the client specified request deadline.
- Increased the default
leveldb
open files limit to1024
. - Documented the
leveldb
configurations. - Extended chain shutdown timeout.
- Performed various cleanup passes.
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Added asynchronous processing of
App.*
messages. - Added height indexing support to the
proposervm
andrpcchainvm
. If a node is updated to>=v1.7.5
and then downgraded to<v1.7.5
, the user must enable the--reset-proposervm-height-index=true
flag to ensure theproposervm
height index is correctly updated going forward. - Fixed bootstrapping job counter initialization that could cause negative ETAs to be reported.
- Fixed incorrect processing check that could log incorrect information.
- Removed incorrect warning logs.
- Added tracked subnets to be reported in calls to the
info.peers
API. - Updated gRPC implementations to use
buf
tooling and standardized naming and locations. - Added a consistent hashing implementation to be used in future improvements.
- Fixed database iteration invariants to report
ErrClosed
rather than silently exiting. - Added additional sanity checks to prevent users from incorrectly configuring their node.
- Updated log timestamps to include milliseconds.
- Added beta support for offline pruning.
- Refactored peer networking layer.
- Enabled cheap metrics by default.
- Marked RPC call metrics as expensive.
- Added Abigen support for native asset call precompile.
- Fixed bug in BLOCKHASH opcode during traceBlock.
- Fixed bug in handling updated chain config on startup.
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
The first startup of the C-Chain will take a few minutes longer due to an index update.
- Removed deprecated Snowstorm consensus implementation that no longer aligned with the updated specification.
- Updated bootstrapping logs to no longer reset counters after a node restart.
- Added bootstrapping ETAs for fetching Snowman blocks and executing operations.
- Renamed the
MultiPut
message to theAncestors
message to match other message naming conventions. - Introduced Whitelist conflicts into the Snowstorm specification that will be used in future X-chain improvements.
- Refactored the separation between the Bootstrapping engine and the Consensus engine to support Fast-Sync.
- Added an index mapping height to the list of accepted atomic operations at that height in a trie. Generating this index will cause the node to take a few minutes longer to startup the C-Chain for the first restart.
- Updated Geth dependency to
v1.10.15
. - Updated
networkID
to matchchainID
.
- Refactored
platformvm
rewards calculations to enable usage from an external library. - Fixed
platformvm
andavm
UTXO fetching to not re-iterate the UTXO set if no UTXOs are fetched. - Refactored
platformvm
status definitions. - Added support for multiple address balance lookups in the
platformvm
. - Refactored
platformvm
andavm
keystore users to reuse similar code.
- Returned a
500 InternalServerError
if an unexpected gRPC error occurs during the handling of an HTTP request to a plugin. - Updated gRPC server's max message size to enable responses larger than 4MiB from the plugin's handling of an HTTP request.
- Added
--stake-max-consumption-rate
which defaults to120,000
. - Added
--stake-min-consumption-rate
which defaults to100,000
. - Added
--stake-supply-cap
which defaults to720,000,000,000,000,000
nAVAX. - Renamed
--bootstrap-multiput-max-containers-sent
to--bootstrap-ancestors-max-containers-sent
. - Renamed
--bootstrap-multiput-max-containers-received
to--bootstrap-ancestors-max-containers-received
. - Enforced that
--staking-enabled=false
can not be specified on public networks (Fuji
andMainnet
).
- All
multi_put
metrics were converted toancestors
metrics.
- Improved
corruptabledb
error reporting by tracking the first reported error. - Updated CPU tracking to use the proper EWMA tracker rather than a linear approximation.
- Separated health checks into
readiness
,healthiness
, andliveness
checks to support more fine-grained monitoring. - Refactored API client utilities to use a
Context
rather than an explicit timeout.
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Introduced a notion of vertex conflicts that will be used in future X-chain improvements.
- Added an index mapping height to the list of accepted atomic transactions at that height. Generating this index will cause the node to take approximately 2 minutes longer to startup the C-Chain for the first restart.
- Fixed bug in base fee estimation API that impacted custom defined networks.
- Decreased minimum transaction re-gossiping interval from 1s to 500ms.
- Removed websocket handler from the static vm APIs.
- Reduced lock contention in
prefixDB
s.
- Increase the gossip size from
6
to10
validators. - Prioritized
Connected
andDisconnected
messages in the message handler.
- Notified VMs of peer versions on
Connected
. - Fixed acceptance broadcasting over IPC.
- Fixed 32-bit architecture builds for AvalancheGo (not Coreth).
This version is backwards compatible to v1.7.0. It is optional, but encouraged.
- Fixed memory leak in the estimate gas API.
- Reduced the default RPC gas limit to 50,000,000 gas.
- Improved RPC logging.
- Removed pre-AP5 legacy code.
- Optimized validator set change calculations.
- Removed storage of non-decided blocks.
- Simplified error handling.
- Removed pre-AP5 legacy code.
- Explicitly fail requests with responses that failed to be parsed.
- Removed pre-AP5 legacy code.
- Introduced the ability for a delayed graceful node shutdown.
- Added the ability to take all configs as environment variables for containerized deployments.
- Fixed panic bug in logging library when importing from external projects.
This update is backwards compatible with v1.7.0. Please see the expected update times in the v1.7.0 release.
- Reduced fee estimate volatility.
- Fixed vote bubbling for unverified block chits.
This upgrade adds support for issuing multiple atomic transactions into a single block and directly transferring assets between the P-chain and the C-chain.
The changes in the upgrade go into effect at 1 PM EST, December 2nd 2021 on Mainnet. One should upgrade their node before the changes go into effect, otherwise they may experience loss of uptime.
All nodes should upgrade before 1 PM EST, December 2nd 2021.
- Added peer uptime reports as metrics.
- Removed IP rate limiting over local networks.
- Enabled
AtomicTx
s to be issued intoStandardBlock
s and deprecatedAtomicBlock
s. - Added the ability to export/import AVAX to/from the C-chain.
- Enabled multiple
AtomicTx
s to be issued per block. - Added the ability to export/import AVAX to/from the P-chain.
- Updated dynamic fee calculations.
- Removed storage of undecided blocks.
- Added support for metrics to be reported by plugin VMs.
- Removed
--snow-epoch-first-transition
andsnow-epoch-duration
as command line arguments.
This version is backwards compatible to v1.6.0. It is optional, but encouraged.
- Drop inbound messages to a chain if that chain is in the execution phase of bootstrapping.
- Print beacon nodeIDs upon failure to connect to them.
- Added
avalanche_{ChainID}_bootstrap_finished
, which is 1 if the chain is done bootstrapping, 0 otherwise.
- Added
info.uptime
API call that attempts to report the network's view of the local node. - Added
observedUptime
to each peer's result ininfo.peers
.
- Added reported uptime to pong messages to be able to better track a local node's uptime as viewed by the network.
- Refactored request timeout registry to avoid a potential race condition.
This version is backwards compatible to v1.6.0. It is optional, but encouraged.
- Added flag
throttler-inbound-bandwidth-refill-rate
, which specifies the max average inbound bandwidth usage of a peer. - Added flag
throttler-inbound-bandwidth-max-burst-size
, which specifies the max inbound bandwidth usage of a peer.
- Updated peerlist gossiping to use the same mechanism as other gossip calls.
- Added inbound message throttling based on recent bandwidth usage.
- Updated
avalanche_{ChainID}_handler_gossip_{count,sum}
toavalanche_{ChainID}_handler_gossip_request_{count,sum}
. - Updated
avalanche_{ChainID}_lat_get_accepted_{count,sum}
toavalanche_{ChainID}_lat_accepted_{count,sum}
. - Updated
avalanche_{ChainID}_lat_get_accepted_frontier_{count,sum}
toavalanche_{ChainID}_lat_accepted_frontier_{count,sum}
. - Updated
avalanche_{ChainID}_lat_get_ancestors_{count,sum}
toavalanche_{ChainID}_lat_multi_put_{count,sum}
. - Combined
avalanche_{ChainID}_lat_pull_query_{count,sum}
andavalanche_{ChainID}_lat_push_query_{count,sum}
toavalanche_{ChainID}_lat_chits_{count,sum}
. - Added
avalanche_{ChainID}_app_response_{count,sum}
. - Added
avalanche_network_bandwidth_throttler_inbound_acquire_latency_{count,sum}
- Added
avalanche_network_bandwidth_throttler_inbound_awaiting_acquire
- Added
avalanche_P_vm_votes_won
- Added
avalanche_P_vm_votes_lost
- Added method
GetContainerByID
to client implementation. - Client methods now return
[]byte
rather thanstring
representations of a container.
- Updated Geth dependency to 1.10.11.
- Added a new admin API for updating the log level and measuring performance.
- Added a new
--allow-unprotected-txs
flag to allow issuance of transactions without EIP-155 replay protection.
- Ensured that all possible chains are run in
--staking-enabled=false
networks.
This version is backwards compatible to v1.6.0. It is optional, but encouraged.
- Updated the default value of
--inbound-connection-throttling-max-conns-per-sec
to256
. - Updated the default value of
--meter-vms-enabled
totrue
. - Updated the default value of
--staking-disabled-weight
to100
.
- Changed the behavior of
avalanche_network_buffer_throttler_inbound_awaiting_acquire
to only increment if the message is actually blocking. - Changed the behavior of
avalanche_network_byte_throttler_inbound_awaiting_acquire
to only increment if the message is actually blocking. - Added
Block/Tx
metrics onmeterVM
s.- Added
avalanche_{ChainID}_vm_metervm_build_block_err_{count,sum}
. - Added
avalanche_{ChainID}_vm_metervm_parse_block_err_{count,sum}
. - Added
avalanche_{ChainID}_vm_metervm_get_block_err_{count,sum}
. - Added
avalanche_{ChainID}_vm_metervm_verify_{count,sum}
. - Added
avalanche_{ChainID}_vm_metervm_verify_err_{count,sum}
. - Added
avalanche_{ChainID}_vm_metervm_accept_{count,sum}
. - Added
avalanche_{ChainID}_vm_metervm_reject_{count,sum}
. - Added
avalanche_{DAGID}_vm_metervm_parse_tx_err_{count,sum}
. - Added
avalanche_{DAGID}_vm_metervm_get_tx_err_{count,sum}
. - Added
avalanche_{DAGID}_vm_metervm_verify_tx_{count,sum}
. - Added
avalanche_{DAGID}_vm_metervm_verify_tx_err_{count,sum}
. - Added
avalanche_{DAGID}_vm_metervm_accept_{count,sum}
. - Added
avalanche_{DAGID}_vm_metervm_reject_{count,sum}
.
- Added
- Applied callTracer fault handling fix.
- Initialized multicoin functions in the runtime environment.
- Updated block
Delay
in--staking-enabled=false
networks to be0
.