> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Helius Solana SDK：Node.js 和 Rust 开发工具

> 官方 Helius SDK，支持在 Node.js 和 Rust 中进行 Solana 开发。通过全面的 API、增强的交易功能和 DAS 支持，简化区块链集成。

在 Helius，我们开发了一个 [Node.js](https://github.com/helius-labs/helius-sdk) 和一个 [Rust SDK](https://github.com/helius-labs/helius-rust-sdk)，以简化在 Solana 上的开发。以下页面包含有关安装和使用这些 SDK 的信息，还涵盖了常见错误处理、最新文档的查找方式以及如何为这些 SDK 做出贡献。

我们还列出了由我们优秀社区创建的非官方社区 SDK。请注意，这些 SDK 并非由我们团队正式维护——只有 Node.js 和 Rust SDK 是官方维护的。

<CardGroup cols={2}>
  <Card title="Node.js SDK" icon="js" href="https://github.com/helius-labs/helius-sdk">
    官方 Helius Node.js SDK，用于 Solana 开发
  </Card>

  <Card title="Rust SDK" icon="rust" href="https://github.com/helius-labs/helius-rust-sdk">
    官方 Helius Rust SDK，用于 Solana 开发
  </Card>
</CardGroup>

## Node.js SDK

请注意，Node.js SDK 从版本 2.0.0 开始已重写。这样做是为了使用 `@solana/kit` 并去除对 `@solana/web3.js` 超过 1.73.2 版本的依赖性。对于迁移到最新版本的用户，请参阅我们的[迁移指南](https://github.com/helius-labs/helius-sdk/blob/main/MIGRATION.md)。

### 安装

Helius Node.js SDK 可以通过以下任一包管理器安装：

<Tabs>
  <Tab title="npm">
    ```bash theme={"system"}
    npm install helius-sdk
    ```
  </Tab>

  <Tab title="pnpm">
    ```bash theme={"system"}
    pnpm install helius-sdk
    ```
  </Tab>

  <Tab title="Yarn">
    ```bash theme={"system"}
    yarn add helius-sdk
    ```
  </Tab>
</Tabs>

### 快速开始

下面是一个如何使用 Node.js SDK 获取给定地址拥有的资产列表的简单示例：

```typescript theme={"system"}
import { createHelius } from "helius-sdk";

(async () => {
  const apiKey = ""; // From Helius dashboard
  const helius = createHelius({ apiKey });

  try {
    const assets = await helius.getAssetsByOwner({
      ownerAddress: "owner_address_goes_here",
      page: 1,
      limit: 50,
      sortBy: { sortBy: "created", sortDirection: "asc" },
    });

    console.log("Fetched assets:", assets);
  } catch (error) {
    console.error("Error:", error);
  }
})();
```

### 文档

[示例目录](https://github.com/helius-labs/helius-sdk/tree/main/examples)中包含了详细的代码示例，涵盖每个方法和基本用法，按命名空间组织。有关 API 参考文档，请参阅我们的[文档](/zh/api-reference)和[Solana 官方文档](https://solana.com/docs/rpc)以获取一般的 Solana JSON RPC API 帮助。有关 Kit 的一般帮助，请参阅[Kit 的文档](https://www.solanakit.com/)。

## Rust SDK

### 安装

<Steps>
  <Step title="添加依赖到 Cargo.toml">
    要在您的项目中使用 Helius Rust SDK，请通过 [`cargo`](https://doc.rust-lang.org/cargo/) 将其添加为依赖项。打开您的项目 `Cargo.toml` 并在 `[dependencies]` 下添加以下行：

    ```toml theme={"system"}
    helius = "x.y.z"
    ```

    其中 `x.y.z` 是您所需的版本。
  </Step>

  <Step title="替代方案：使用 cargo add 命令">
    或者，使用 `cargo add helius` 通过命令行直接添加依赖。这将自动找到与您的项目兼容的最新版本，并将其添加到您的 `Cargo.toml`。
  </Step>

  <Step title="保持您的 SDK 更新">
    记得定期运行 `cargo update` 来获取 SDK 的最新版本。
  </Step>
</Steps>

### 快速开始

下面是一个使用[增强交易API](/zh/enhanced-transactions)来[解析给定交易](/zh/api-reference/enhanced-transactions/gettransactions)的简单示例：

```rust theme={"system"}
use helius::error::Result;
use helius::types::*;
use helius::Helius;

#[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: ParseTransactionsRequest = ParseTransactionsRequest {
        transactions: vec![
            "2sShYqqcWAcJiGc3oK74iFsYKgLCNiY2DsivMbaJGQT8pRzR8z5iBcdmTMXRobH8cZNZgeV9Ur9VjvLsykfFE2Li".to_string(),
        ],
    };

    let response: Result<Vec<EnhancedTransaction>, HeliusError> = helius.parse_transactions(request).await;
    println!("Assets: {:?}", response);

    Ok(())
}
```

### 文档

<CardGroup cols={3}>
  <Card title="Rust 文档" icon="book" href="https://docs.rs/helius/latest/helius/">
    docs.rs上的最新文档
  </Card>

  <Card title="API 参考" icon="code" href="/zh/api-reference">
    Helius API 文档
  </Card>

  <Card title="示例" icon="code-branch" href="https://github.com/helius-labs/helius-rust-sdk/tree/dev/examples">
    GitHub 仓库中的代码示例
  </Card>
</CardGroup>

## 错误处理

<Callout type="warning">
  当API返回非成功（即4xx或5xx状态码）时，将抛出错误消息。
</Callout>

例如，下面是使用Node.js SDK进行不正确的getAsset调用时抛出的401错误：

```typescript theme={"system"}
{
  "jsonrpc": "2.0",
  "error": {
    "code": -32001,
    "message": "Authentication failed. Missing or invalid API key."
  },
  "id": "1"
}
```

### 常见错误代码

在使用Helius SDK时，您可能会遇到几个错误代码。下面是一些常见错误代码的表格，以及帮助您排除故障的附加信息：

<AccordionGroup>
  <Accordion title="400: 错误请求">
    当请求参数无效时发生。
  </Accordion>

  <Accordion title="401: 未授权">
    当提供了无效的API密钥或由于RPC规则限制访问时发生。
  </Accordion>

  <Accordion title="429: 请求过多">
    表示用户在给定时间范围内超过了请求限制或超出了信用额度。
  </Accordion>

  <Accordion title="5XX: 内部服务器错误">
    这是服务器端问题的通用错误消息。请联系Helius支持以获得帮助。
  </Accordion>
</AccordionGroup>

如果您遇到这些错误：

<Steps>
  <Step title="检查错误文档">
    如果使用 Rust SDK，请参阅 [`errors.rs`](https://github.com/helius-labs/helius-rust-sdk/blob/dev/src/error.rs) 以查看 `Helius` 客户端可能返回的所有错误列表。对于 Node.js SDK，请参考 [Kit 的错误](https://www.solanakit.com/docs/concepts/errors)
  </Step>

  <Step title="查看文档">
    请参阅 [Helius 文档](/) 以获得进一步指导
  </Step>

  <Step title="联系支持">
    联系 Helius 支持团队以获得更详细的帮助
  </Step>
</Steps>

## 对我们的 SDK 贡献

我们欢迎所有对我们 SDK 的贡献！如果您有兴趣，这里是我们的 GitHub 仓库：

<CardGroup cols={2}>
  <Card title="Node.js SDK" icon="js" href="https://github.com/helius-labs/helius-sdk/blob/main/CONTRIBUTING.md">
    贡献我们的 Node.js SDK
  </Card>

  <Card title="Rust SDK" icon="rust" href="https://github.com/helius-labs/helius-rust-sdk/blob/dev/CONTRIBUTIONS.md">
    贡献我们的 Rust SDK
  </Card>
</CardGroup>

<Callout type="info">
  特别想为 Helius Rust SDK 做贡献吗？在提交 pull request 之前，请阅读以下[贡献指南](https://github.com/helius-labs/helius-rust-sdk/blob/dev/CONTRIBUTIONS.md)！
</Callout>

## 非官方社区 SDK

<Callout emoji="👏">
  我们出色的社区成员还创建了他们自己的 SDK 来与我们的 REST API 进行交互。请注意，我们的团队不正式维护这些 SDK。
</Callout>

<CardGroup cols={3}>
  <Card title="Kotlin SDK" href="https://github.com/dlgrech/khelius" />

  <Card title="PHP SDK" href="https://github.com/HowRareIs/helius-php-sdk" />

  <Card title="Python SDK" href="https://github.com/vmpyre/helius_sdk" />

  <Card title="Rust SDK (Synchronous)" href="https://github.com/bgreni/helius-rust-sdk" />

  <Card title="Rust SDK (Asynchronous)" href="https://github.com/dougEfresh/selene-helius-sdk" />
</CardGroup>
