Written by
Lostin
Published on
October 4, 2024
Copy link

Agave 2.0 Transition: A Developer Guide

Introduction

Agave v2.0 is scheduled to debut on Solana Mainnet-Beta in the weeks following Solana Breakpoint 2024 Singapore. This major update contains multiple breaking changes, API endpoint removals, and crate renamings that all Solana’s developers should be aware of. In addition to this article, we recommend developers review Anza’s recently released transition guide on GitHub.

Agave v2.0 is currently live on Solana’s Testnet and Devnet clusters. The release marks an important milestone in the evolution of Solana’s ecosystem and the transition into a multi-client network. The Anza team is expected to release comprehensive, in-depth breakdowns of Agave 2.0 before launch. This article will be limited in scope to the practical aspects of transition preparations.

Removed RPC Endpoints and SDK calls

Multiple obsolete and deprecated v1 Agave RPC endpoints are set to be removed. Namely: 

getRecentBlockhash, getConfirmedSignatureForAddresses2, getConfirmedTransaction, getConfirmedBlock, getStakeActivation, getFees, confirmTransaction, getSignatureStatus, getSignatureConfirmation, getTotalSupply, getConfirmedSignaturesForAddress, getConfirmedBlocks, getConfirmedBlocksWithLimit, getFeeCalculatorForBlockhash, getFeeRateGovernor, getSnapshotSlot

Based on an internal Helius analysis, we believe most of our customers will not be affected by these changes. However, a small cohort is still actively using the following endpoints:

getRecentBlockhash, getConfirmedSignatureForAddresses2, getConfirmedTransaction, getConfirmedBlock, getStakeActivation, getFees

We strongly recommend all developers check for references to these calls and update them appropriately with the suggested replacements before the 2.0 Mainnet-Beta client release.

The alternative approach for getAccountInfo shown in the image can be found here.

SDK breaking changes include:

A complete list of breaking changes can be found on the Agave changelog.

Renamed Crates

Several crates are being renamed to accommodate the introduction of multiple Solana validator clients, such as Firedancer, which different teams will manage. By appending "Agave" to these crate names, the crates are identified as dependencies specifically maintained by Anza for the Agave validator client. This change ensures greater clarity in distinguishing Agave-related dependencies from those managed by other teams. Affected crates are: 

solana-validator, solana-ledger-tool, solana-watchtower, solana-install, solana-geyser-plugin-interface, solana-cargo-registry

Developers should check any automations or scripts for references to these crates and update them appropriately.

Removed Validator Arguments

For validator operators, the following deprecated validator arguments will be removed upon the release of Agave v2.0:

--enable-rpc-obsolete_v1_7 (#1886)

--accounts-db-caching-enabled (#2063)

--accounts-db-index-hashing (#2063)

--no-accounts-db-index-hashing (#2063)

--incremental-snapshots (#2148)

--halt-on-known-validators-accounts-hash-mismatch (#2157)

Again, we recommend validator operators carefully ensure these are no longer used.

Last but not least, the original Solana Labs GitHub will be archived upon the release of Agave v2.0. Developers should migrate all activities to the Anza Agave GitHub repository.

In conclusion, we’ll leave you with the words of Solana DevRel team’s Nick Frostbutter on a recent changelog video, “If you're using anything that has a depreciation warning, you need to make sure you are upgrading your code.”

That’s it for this short public service announcement. Hope to see many of you at Breakpoint!