#solana #cryptocurrency #das #asynchronous-sdk

helius

一个异步的 Helius Rust SDK,用于构建 Solana 的未来

8 个版本

0.2.1 2024年6月21日
0.2.0 2024年6月4日
0.1.5 2024年5月29日

#52 in #cryptocurrency

Download history 324/week @ 2024-05-06 18/week @ 2024-05-13 293/week @ 2024-05-20 167/week @ 2024-05-27 170/week @ 2024-06-03 63/week @ 2024-06-10 248/week @ 2024-06-17 35/week @ 2024-06-24 30/week @ 2024-07-01 9/week @ 2024-07-08 9/week @ 2024-07-15 22/week @ 2024-07-22 9/week @ 2024-07-29 35/week @ 2024-08-05 19/week @ 2024-08-12

86 个月下载量

MIT 许可证

170KB
3K SLoC

Helius SDK

一个异步的 Helius Rust SDK,用于构建 Solana 的未来

文档

最新文档可以在 docs.rs 这里 找到

贡献

想要为 Helius Rust SDK 做贡献?在提交 pull request 之前,请阅读以下 贡献指南

安装

要在项目中使用 Helius Rust SDK,请通过 cargo 将其添加为依赖项。打开您的项目 Cargo.toml 并在以下位置添加以下行:

helius = "x.y.z"

其中 x.y.z 是您希望使用的版本。或者,使用 cargo add helius 直接通过命令行添加依赖项。这将自动查找与您的项目兼容的最新版本并将其添加到您的 Cargo.toml

请记住定期运行 cargo update 以获取 SDK 的最新版本。

用法

Helius

SDK 提供了一个可配置 API 密钥和给定 Solana 集群的 Helius 实例。开发人员可以在 Helius 开发者仪表板 上生成新的 API 密钥。此实例充当 SDK 交互的主入口点,通过提供访问不同 Solana 和 RPC 客户端功能的方法。以下代码是使用 SDK 获取 Mad Lad #8420 信息的示例

use helius::error::Result;
use helius::types::{Cluster, DisplayOptions, GetAssetRequest, GetAssetResponseForAsset};

#[tokio::main]
async fn main() -> Result<()> {
    let api_key: &str = "YOUR_API_KEY";
    let cluster: Cluster = Cluster::MainnetBeta;

    let helius: Helius = Helius::new(api_key, cluster).unwrap();

    let request: GetAssetRequest = GetAssetRequest {
        id: "F9Lw3ki3hJ7PF9HQXsBzoY8GyE6sPoEZZdXJBsTTD2rk".to_string(),
        display_options: None,
    };

    let response: Result<Option<GetAssetResponseForAsset>> = helius.rpc().get_asset(request).await;

    match response {
        Ok(Some(asset)) => {
            println!("Asset: {:?}", asset);
        },
        Ok(None) => println!("No asset found."),
        Err(e) => println!("Error retrieving asset: {:?}", e),
    }

    Ok(())
}

HeliusFactory

此SDK还配备了用于创建Helius实例的工厂HeliusFactory。这个工厂允许集中配置和创建Helius客户端,以便同时跨多个集群工作。使用工厂简化了客户端代码,并通过确保所有Helius客户端配置一致来提高可维护性。它具有以下功能:

  • 用于创建一个能够生成Helius客户端的新HeliusFactorynew方法。请注意,此方法不会创建reqwest客户端
  • 用于为使用new方法创建的给定HeliusFactory提供其自己的reqwest客户端的with_client方法
  • 用于以线程安全的方式创建多个Helius客户端的create方法

嵌入式Solana客户端

Helius客户端有一个嵌入的Solana客户端,可以通过helius.connection().request_name()访问,其中request_name()是一个给定的RPC方法。所有Solana RPC HTTP方法的完整列表可以在这里找到。

请注意,此Solana客户端默认为同步。可以使用new_with_async_solana方法代替new方法来创建异步客户端。异步客户端可以通过helius.async_connection().some_async_method().await?访问,其中some_async_method()是给定的异步RPC方法。

增强型WebSockets

还可以使用new_with_ws()方法代替new方法来创建Helius客户端。这将创建一个WebSocket客户端,并增加对Geyser增强WebSocket方法 transactionSubscribeaccountSubscribe的支持

示例

有关如何使用SDK的更多示例可以在examples目录中找到。

错误处理

常见错误代码

在使用Helius Rust SDK时,您可能会遇到几个错误代码。下面是一个表格,详细介绍了其中一些常见错误代码以及一些额外的信息,以帮助您进行故障排除。

错误代码 错误信息 更多信息
401 未授权 当提供无效的API密钥或访问受限时发生此情况
429 请求过多 这表明用户在给定时间框架内超过了请求限制或信用不足
5XX 内部服务器错误 这是服务器端问题的通用错误消息。请联系Helius支持以获得帮助

如果您遇到这些错误中的任何一种

  • 请参考 errors.rs 以获取由 Helius 客户端返回的所有可能错误的列表
  • 请参阅 Helius 文档 以获取更多指导
  • 联系 Helius 支持团队以获得更详细的帮助

结果类型别名

SDK 还有一个方便的类型别名,用于 Result,其中 Result<(某种类型), HeliusError> 并简化为 Result<(某种类型)>

方法

我们的 SDK 设计用于在 Solana 上构建时提供无缝的开发者体验。我们将核心功能分为多个部分

DAS API

铸币API

增强事务API

Webhooks

智能交易

Jito智能交易和辅助方法

辅助方法

依赖项

~76MB
~1.5M SLoC