Releases: ava-labs/avalanchego
Apricot Phase 4 - Fuji Pre-release - eth_gasPrice Hotfix
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 patches the eth_gasPrice
call on the C-chain API to prevent a performance bug.
Apricot Phase 4 - 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 a contention limiter to the C-chain and P-chain, introduces a block based fee on the C-chain, and tunes some dynamic fee parameters on the C-chain.
The changes in the upgrade go into effect at 5 PM EDT, September 16th 2021 on the Fuji testnet. After Fuji is updated and verified, a mainnet compatible release will be published.
All Fuji nodes should upgrade before 5 PM EDT, September 16th 2021.
Upgrades
- Introduced Snowman++ on the P-chain and C-chain.
- Introduced mempool gossiping to the P-chain and C-chain using the VM<->VM communication layer.
- Added a block based fee to C-chain blocks.
- Set the minimum gas price to 25 nAVAX and the maximum gas price to 1000 nAVAX in the C-chain dynamic fee mechanism.
- Added metrics for the number of blocks built and the number of failed build block attempts.
Apricot Phase 3 - Patch 3
v1.5.3
This version is backwards compatible with prior v1.5.x
versions.
Uptime
- Changed minimum uptime requirement to receive a staking reward from 60% to 80%.
Networking
- Added 3 new network messages:
AppRequest
,AppResponse
andAppGossip
. These messages allow instances of a blockchain to send arbitrary data to each other as defined by their VM. Previously, instances of a blockchain could only communicate with one another by issuing blocks. - Upon receipt of a
Pong
message, disconnect from the sender if their version is incompatible. - Prepended method named in
common.Sender
withSend
for clarity (e.g.Put
-->SendPut
).
P-Chain
- Added functionality to track changes in validator weight by block.
- Added API method
GetValidatorsAt
which allows for retrieval of a subnet's (or the Primary Network's) validator set at a given P-Chain height.
C-Chain
- Incorporate changes from Geth v1.10.8
- Remove references to Ancients
Consensus
- Added method
Timestamp()
to thesnowman.Block
interface.
Local Networks
- Updated the start time of the validators in the local genesis. The end time for validators specified in the local config in versions before v1.5.3 is Sep. 10, 2021 00:00:00 UTC. Because of this, you must upgrade to AvalancheGo v1.5.3 in order to run a local network after this time.
Config Options
- Added AvalancheGo config option
consensus-app-gossip-size
, which defines the number of peers anAppGossip
message is gossiped to. - Added C-Chain config option
log-level
. Options are:"trace"
,"debug"
,"info"
,"warn"
,"error"
,"crit"
. Defaults to"debug"
(as before.)
Apricot Phase 3 - Patch 2
This update is backwards compatible with v1.5.0. Please see the expected update times in the v1.5.0 release.
Coreth
- Patched a Geth security vulnerability
- Patched a panic in the api backend.
AVM
- Introduced stateless codec generation for improved tooling.
Consensus
- Added additional logging around bubbling votes.
Apricot Phase 3 - Patch 1 - Hotfix eth_call API
This update is a hotfix for v1.5.1 that allows using the eth_call
API request without enforcing the externally owned account check.
Apricot Phase 3 - Patch 1
This update is backwards compatible with v1.5.0. Please see the expected update times in the v1.5.0 release.
Subnets
- Added
subnetID
s to the handshake message. This notifies peers about which subnet's a node is interesting in syncing. - Optimized subnet container gossiping.
AVM
- Fixed
avm.GetTx
's JSON endpoint to properly reportamount
s on UTXOs.
Bootstrapping
- Fixed busy loop that could occur if a node's internet dropped during bootstrapping, causing the node to report a fatal error.
RPCChainVM
- Improved caching of unverified blocks.
Coreth
- Updated to Geth v1.10.7.
Apricot Phase 3 - Dynamic Fees
This change is not backwards compatible with previous releases.
This upgrade adds dynamic fees to the C-chain, along with various other improvements.
The v1.5.x
changes go into effect at 10 AM EDT, August 24th 2021 on Mainnet.
Network Upgrades
- Added dynamic fee calculations to the C-chain.
- Increased
CreateSubnetTx
andCreateChainTx
fees. - Fixed heap corruption bug in delegator validation.
- Enforced
MaxStakeWeight
for delegation transactions.
Client Upgrades
- Added transaction indexing capabilities to the X-chain to enable historical lookups of transactions by address and asset.
- Added
./avalanchego
as the default command in the docker image. - Used static dependency versions in the docker image.
- Removed database migration support and deamon runner.
- Refactored node config parsing.
- Optimized container gossiping sampling.
- Added the ability to statically build the AvalancheGo and EVM binaries.
- Simplified the
Block
interface to only expose the parent block's ID rather than fetching the full parent block. - Added additional metrics for pending jobs in the consensus engines.
- Refactored P-chain statuses to handle blockchain validation statuses separately from transaction confirmation statuses.
Updated APIs
- Added
GetAddressTxs
to theavm
API. - Added
SetLoggerLevel
andGetLoggerLevel
to theAdmin
API to allow fine grained tuning of log levels while the node is still running. - Added
GetConfig
to theAdmin
API to allow fetching the node config that the node is currently using. - Updated
platformvm.Client
to allow specifyingnodeID
s inGetCurrentValidators
andGetPendingValidators
and generalized the response toGetStake
.
Updated CLI Arguments
- Removed
fetch-only
. - Added JSON config parsing to
avm
VM.- Added
indexTransactions
- Added
indexAllowIncomplete
- Added
Apricot Phase 3 - Fuji Pre-release
Please note that this release is unable to run mainnet - and will display "this node version doesn't support mainnet" if attempted to run with a mainnet configuration.
This change is not backwards compatible with previous releases.
This upgrade adds dynamic fees to the C-chain, along with various other improvements.
The changes in the upgrade go into effect at 3 PM EDT, August 16th 2021 on the Fuji testnet. After Fuji is updated and verified, a mainnet compatible release will be published.
Network Upgrades
- Added dynamic fee calculations to the C-chain.
- Increased
CreateSubnetTx
andCreateChainTx
fees. - Fixed heap corruption bug in delegator validation.
- Enforced
MaxStakeWeight
for delegation transactions.
Client Upgrades
- Added transaction indexing capabilities to the X-chain to enable historical lookups of transactions by address and asset.
- Added
./avalanchego
as the default command in the docker image. - Used static dependency versions in the docker image.
- Removed database migration support and deamon runner.
- Refactored node config parsing.
- Optimized container gossiping sampling.
- Added the ability to statically build the AvalancheGo and EVM binaries.
- Simplified the
Block
interface to only expose the parent block's ID rather than fetching the full parent block. - Added additional metrics for pending jobs in the consensus engines.
- Refactored P-chain statuses to handle blockchain validation statuses separately from transaction confirmation statuses.
Updated APIs
- Added
GetAddressTxs
to theavm
API. - Added
SetLoggerLevel
andGetLoggerLevel
to theAdmin
API to allow fine grained tuning of log levels while the node is still running. - Added
GetConfig
to theAdmin
API to allow fetching the node config that the node is currently using. - Updated
platformvm.Client
to allow specifyingnodeID
s inGetCurrentValidators
andGetPendingValidators
and generalized the response toGetStake
.
Updated CLI Arguments
- Removed
fetch-only
. - Added JSON config parsing to
avm
VM.- Added
indexTransactions
- Added
indexAllowIncomplete
- Added
Apricot Phase 2 - Patch 12
This update is backwards compatible. It is optional, but encouraged.
X-Chain
- Added formatting argument
"json"
to API methodGetTx
, which returns the JSON representation of the queried transaction - Added interface type assertions
API
- Added method
GetNodeVersion
to Info API client
Prometheus Metrics
- Fixed and renamed metrics for bytes not sent due to compression
- Added metrics for bytes not received due to compression
- Added helper struct
noAverager
tometrics
package
Database
- Updated/added benchmarks
Shared Memory
- Replaced
Put
andRemove
withApply
to allow for future atomic transaction optimization
Apricot Phase 2 - Patch 11
This update is backwards compatible. It is optional, but encouraged. The patch includes performance, metrics, and throttling improvements.
C-Chain
- This release enables snapshots by default. You should expect high CPU/disk usage for about an hour when you run v1.4.11 for the first time due to snapshot generation. (The actual amount of time depends on your computer.)
- This release fixes edge cases around reprocessing blocks after restarts.
Config Flags
Removed
conn-meter-reset-duration
conn-meter-max-conns
Added
inbound-connection-throtting-cooldown
inbound-connection-throttling-max-recent
network-compression-enabled
Prometheus Metrics
Many Prometheus metrics were renamed, and many histograms were replaced with a count and a gauge.
See here for updated Grafana Dashboards.
This release also adds helper methods to the utils/metric
package.
RocksDB
RocksDB is no longer built by default when running the build script, and it is not included in publicly released binaries. To build AvalancheGo with RocksDB, run export ROCKSDBALLOWED=1
in your terminal and then scripts/build.sh
. You must do this before you can use --db-type=rocksdb
.
The RocksDB database now places/looks for its files in a subdirectory rocksdb
.
Note that if you previously ran with RocksDB, you'll need to move the existing files.
Message Compression
Nodes now compress some P2P messages.
If a peer is version >= v1.4.11, Put
, Push Query
, Peer List
and Multiput
messages sent to the peer are compressed using gzip before being sent over the network.
This reduces AvalancheGo's bandwidth usage.
Inbound Connection Throttling
Refactored inbound connection rate-limiting and enable it by default.
General Improvements
- Refactor and improve performance of iteration over a database served by gRPC to a plugin.
- On Linux, clean up subprocesses if AvalancheGo dies ungracefully
- Refactor P2P message definitions and move them from the
network
package. - Add VM aliases to the HTTP API server
- Replace
1024
withunits.KiB
, etc. - Update protogen scripts to support running in docker.
- Improve partition tolerance by processing chits in order of the creation of the corresponding queries.
Fuji IPs
Update the bootstrap IPs for the Fuji Testnet. The previous IPs are deprecated and will be shut down after the next network upgrade.