Solana Agave 2.0:如何准备

Solana计划在2024年9月底或10月初发布Agave版本2.0,该版本将引入多项RPC API和SDK的变更,文章详细介绍了如何准备这些变更并提供了替代方法的代码示例。

概述

Solana 计划在 2024 年 9 月底或 10 月初向主网测试版发布一个重大版本,称为 Agave 2.0 版本(来源:GitHub - Anza-xyz/agave/Wiki)。这些更改已经在 Devnet 和 Testnet 上线。此版本将引入 Solana 网络的许多更改,包括对 Solana RPC API 和 SDK 元素的修改。

在本指南中,我们将总结在最新版本发布后将不再支持的方法,以及如何为这些更改做好准备。

向后兼容性

所有更改都是向后兼容的,并且在 Solana 主网之前的版本中可用,允许你无缝升级你的应用程序。

为了避免应用程序出现问题,我们建议尽快更新你的代码库,使用下面列出的替代调用。

更喜欢视觉格式?跟随 Sahil 在 3 分钟内了解这些变化。

如何为 Solana Agave v2.0 升级做准备 - YouTube

QuickNode

131K 订阅者

如何为 Solana Agave v2.0 升级做准备

QuickNode

搜索

信息

购物

点击取消静音

如果播放没有立即开始,请尝试重新启动你的设备。

你已退出登录

你观看的视频可能会被添加到电视的观看历史记录中,并影响电视推荐。为了避免这种情况,请取消并在你的计算机上登录 YouTube。

取消确认

分享

包括播放列表

检索共享信息时出错。请稍后再试。

稍后观看

分享

复制链接

在 YouTube 上观看

0:00

/ •直播

在 YouTube 上观看

订阅我们的 YouTube 频道以获取更多视频!订阅

RPC 端点和 SDK 元素的更改

许多 RPC 端点将被弃用,并且在 Agave 2.0 版本中不再支持。请使用下面列出的替代调用。

弃用的 v1 API 调用 v2 替代调用 <br>(以及最新文档的链接)
confirmTransaction getSignatureStatuses
getSignatureStatus getSignatureStatuses
getSignatureConfirmation getSignatureStatuses
getConfirmedSignaturesForAddress getSignaturesForAddress
getConfirmedBlock getBlock
getConfirmedBlocks getBlocks
getConfirmedBlocksWithLimit getBlocksWithLimit
getConfirmedTransaction getTransaction
getConfirmedSignaturesForAddress2 getSignaturesForAddress
getRecentBlockhash getLatestBlockhash
getFees getFeeForMessage
getFeeCalculatorForBlockhash isBlockhashValidgetFeeForMessage
getFeeRateGovernor getFeeForMessage
getSnapshotSlot getHighestSnapshotSlot
getStakeActivation getAccountInfo

点击上面的链接或浏览我们的 Solana 文档 以了解更多关于弃用 RPC 端点的替代方案。

许多替代调用是一对一的替换,但有些可能需要对你的代码进行更多的修改。让我们来看几个例子。如果你有其他问题,告诉我们 或随时在 Discord 上联系我们。

confirmTransaction

鉴于新的升级,你需要创建自己的确认逻辑来验证交易是否已被网络接受。为此,我们可以创建一个类似的 confirmTransaction 函数,它将依赖 getSignatureStatuses 调用来检查交易的状态。以下是使用 @solana/web3.js 库的一个解决方案:

import { Connection, TransactionSignature, TransactionConfirmationStatus, SignatureStatus } from '@solana/web3.js';

async confirmTransaction(
    connection: Connection,
    signature: TransactionSignature,
    desiredConfirmationStatus: TransactionConfirmationStatus = 'confirmed',
    timeout: number = 30000,
    pollInterval: number = 1000
): Promise&lt;SignatureStatus> {
    const start = Date.now();

    while (Date.now() - start &lt; timeout) {
        const { value: statuses } = await connection.getSignatureStatuses([signature]);

        if (!statuses || statuses.length === 0) {
            throw new Error('Failed to get signature status');
        }

        const status = statuses[0];

        if (status === null) {
            // 如果状态为 null,交易尚未被知晓
            await new Promise(resolve => setTimeout(resolve, pollInterval));
            continue;
        }

        if (status.err) {
            throw new Error(`Transaction failed: ${JSON.stringify(status.err)}`);
        }

        if (status.confirmationStatus && status.confirmationStatus === desiredConfirmationStatus) {
            return status;
        }

        if (status.confirmationStatus === 'finalized') {
            return status;
        }

        await new Promise(resolve => setTimeout(resolve, pollInterval));
    }

    throw new Error(`Transaction confirmation timeout after ${timeout}ms`);
}

此脚本简单地轮询 getSignatureStatuses 方法,直到交易达到我们期望的状态或超时。然后返回交易的状态。

如需更多想法,请查看我们的 Solana 交易传播指南

如果你预计需要经常这样做,考虑构建你自己的 自定义函数 来处理此逻辑。

getStakeActivation

由于 getStakeActivation 方法将被弃用,你需要使用 getAccountInfo 方法并反序列化/解析返回的数据以获取质押激活状态。查看以下资源以了解更多信息:

使用 QuickNode 构建

在 Solana 上构建?Quicknode 的 RPC 端点与 Solana 网络的最新版本保持同步。QuickNode 通过其先进的 Solana 基础设施提供竞争优势:

🌎 高交易成功率:我们的全球网络和尖端硬件确保你的交易可靠地发送到 Solana 的主网、Devnet 或 Testnet。

🚀 专有的超扩展技术:我们的定制解决方案优于标准的 Solana 客户端,提供卓越的可扩展性、性能和延迟。

🛠️ 持续改进:我们不断改进我们的基础设施:

  • 扩展我们的全球节点网络以满足不断增长的需求
  • 在新地区部署多样化的基础设施提供商
  • 实施 优先级费用 API 以在网络拥塞时优化交易处理
  • 投资下一代硬件并安全优先访问额外服务器
  • 改进我们的超扩展技术,以改进交易路由并支持新兴方法

在此注册一个免费账户 这里 并创建一个 Solana 端点:

QuickNode 仪表板

我们 ❤️ 反馈!

告诉我们 如果你有任何反馈或对新主题的请求。我们很乐意听取你的意见。

Twitter 上关注我们并加入我们的 Discord 以了解最新动态。

资源

  • 原文链接: quicknode.com/guides/sol...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。