@avalanche-sdk/client

中文文档
0.1.4发布于 2026/10/27BSD-3-ClauseTypeScriptESM + CJS构建来源已验证近 30 天下载 2234

一个TypeScript SDK用于通过JSON-RPC API与Avalanche网络互动. 这个SDK提供了一整套工具,可以与所有Avalanche链(P-Chain,X-Chain,C-Chain)和各种API交互,包括tranca的钱包功能

中文使用文档
文档目录43 节
  1. 安装
  2. 快速启动
  3. 使用雪崩客户端
  4. 钱包客户端使用
  5. 链状钱包操作
  6. 特征
  7. 可用的客户端
  8. 链式客户端
  9. API 客户端
  10. 钱包客户端
  11. 配置
  12. 运输配置
  13. 高级配置示例
  14. 运输选择准则
  15. 环境考虑因素
  16. 输出模块和公用事业
  17. 主要出口
  18. 账户管理
  19. 链式配置
  20. 方法
  21. 公用事业
  22. 额外模块
  23. 可用方法
  24. P-钱方法
  25. X-Chain 方法
  26. C-Chain 方法问题
  27. 钱包方法
  28. P-Chain钱包方法
  29. X-钱钱包方法
  30. C-钱钱包方法
  31. 公共方法
  32. 管理方法
  33. 信息方法
  34. 卫生方法
  35. 指数方法
  36. 建议的方法
  37. 实例
  38. 基本实例
  39. 主网络交易示例
  40. 捐款
  41. 许可证
  42. 支助
  43. 链接

雪崩 SDK 客户端

一个TypeScript SDK用于通过JSON-RPC API与Avalanche网络互动. 这个SDK提供了一套全面的工具,可以与所有Avalanche链(P-Chain,X-Chain,C-Chain)和各种API交互,包括交易签名和管理的钱包功能.

安装

npm install @avalanche-sdk/client
# or
yarn add @avalanche-sdk/client
# or
pnpm add @avalanche-sdk/client

快速启动

使用雪崩客户端

import { createAvalancheClient } from '@avalanche-sdk/client'
import { avalanche } from '@avalanche-sdk/client/chains'

// Create an Avalanche client
const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "http",
  },
})

// Access different chain clients
const pChainClient = client.pChain
const xChainClient = client.xChain
const cChainClient = client.cChain

// Access API clients
const adminClient = client.admin
const infoClient = client.info
const healthClient = client.health
const indexPChainBlockClient = client.indexBlock.pChain  
const proposervmCChainClient = client.proposervm

// Example: Get the latest block number
const blockNumber = await pChainClient.getBlockNumber()

// Example: Get base fee
const baseFee = await client.getBaseFee()

钱包客户端使用

import { createAvalancheWalletClient, privateKeyToAvalancheAccount } from '@avalanche-sdk/client'
import { avalanche } from '@avalanche-sdk/client/chains'
import { avaxToNanoAvax } from '@avalanche-sdk/client/utils'

// Create an account from private key
const account = privateKeyToAvalancheAccount("0x1234567890123456789012345678901234567890123456789012345678901234")

// Get P chain Address and Evm Address
const evmAddress = account.getEVMAddress()
const pchainAddress = account.getXPAddress("P", "fuji")

// Create a wallet client
const walletClient = createAvalancheWalletClient({
  account,
  chain: avalanche,
  transport: {
    type: "http",
  },
})

// Prepare a txn request
const xChainExportTxnRequest = await walletClient.xChain.prepareExportTxn({
  exportedOutputs: [
    {
      addresses: [account.getXPAddress("X", "fuji")], // X-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz
      amount: avaxToNanoAvax(0.001),
    },
  ],
  destinationChain: "P",
});

// Send an XP transaction
const result = await walletClient.sendXPTransaction(xChainExportTxnRequest)

// Sign a message
const signedMessage = await walletClient.signXPMessage({
  message: "Hello Avalanche",
})

// Get account public key
const pubKey = await walletClient.getAccountPubKey()

// Wait for transaction confirmation
await walletClient.waitForTxn({
  txID: "2QouvMUbQ6oy7yQ9tLvL3L8tGQG2QK1wJ1q1wJ1q1wJ1q1wJ1q1wJ1q1wJ1",
  chainAlias: "X"
})

链状钱包操作

// P-Chain wallet operations
const pChainWallet = walletClient.pChain

// Prepare add validator transaction
const validatorTx = await pChainWallet.prepareAddPermissionlessValidatorTxn({
  nodeId: "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg",
  stakeInAvax: avaxToNanoAvax(1),
  end: 1716441600,
  rewardAddresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"],
  threshold: 1,
  publicKey: "0x1234567890123456789012345678901234567890",
  signature: "0x1234567890123456789012345678901234567890",
  locktime: 1716441600,
  delegatorRewardPercentage: 2.5,
  delegatorRewardAddresses: ["P-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz"],
})

// X-Chain wallet operations
const xChainWallet = walletClient.xChain

// Prepare base transaction
const baseTx = await xChainWallet.prepareBaseTxn({
  outputs: [{
    addresses: ["X-avax18jma8ppw3nhx5r4ap8clazz0dps7rv5ukulre5"],
    amount: avaxToNanoAvax(1), // 1 AVAX
  }],
})

// C-Chain wallet operations
const cChainWallet = walletClient.cChain

// Prepare export transaction
const exportTx = await cChainWallet.prepareExportTxn({
  to: "P-fuji1j2zllfqv4mgg7ytn9m2u2x0q3h3jqkzq8q8q8q8",
  amount: avaxToNanoAvax(1), // 1 AVAX = 1_000_000_000 nAvax
  destinationChain: "X"
})

特征

  • 多钱支持: 与所有雪崩链相互作用:
    • P-Chain(平面链)
    • X-Chain(交换链)
    • C-Chain(合同链)
  • 钱包功能: 完成钱包操作,包括:
    • 交易签名和发送
    • 信件签名
    • 账户管理
    • 特定交易链的准备
  • API 客户端数字 :
    • 管理 API
    • 信息 API
    • 卫生协会
    • 索引 API
  • 类型脚本支持: 带有类型定义的完整类型脚本支持
  • 模块设计: 通过专用客户端访问特定功能

可用的客户端

链式客户端

  • P- Chain 客户端: 平台链操作
  • X-Chain 客户端: 交换链业务
  • C-Chain 客户端: 合同链业务

API 客户端

  • 管理客户端行政业务
  • 信息客户端: 网络信息
  • 保健客户: 健康检查终点
  • 索引客户端数字 :
    • 索引 P- Chain 块
    • 指数 C- Chain 块
    • 索引 X- Chain 块
    • 索引 X-Chain 交易
  • 提议客户端: 提案人 VM 信息

钱包客户端

  • 雪崩钱包客户端: 一般钱包操作
  • P- 钱钱包客户端: P-Chain 特定钱包操作
  • X-Chain 钱包客户端: X- Chain 特定钱包操作
  • C-Chain 钱包客户端: C-Chain 特定钱包操作

配置

SDK可以配置各种选项:

const client = createAvalancheClient({
  chain: avalanche, // Chain configuration
  transport: {
    type: "<transportType>", // Transport type
    url: "<url>",
    config: {
      // Transport-specific configuration
    }
  },
  apiKey: "", // Optional API key
  rlToken: "", // Optional rate limit token
})

运输配置

SDK支持多种运输类型连接到Avalanche节点. 每个传输类型都有特定的配置选项:

const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "http",
    url: "https://api.avax.network/ext/bc/C/rpc", // Optional custom RPC URL
    config: {
      // HTTP-specific configuration
      fetchOptions: {
        headers: {
          "Custom-Header": "value"
        },
      }
      retryCount: 3,
      retryDelay: 1000,
      timeout: 5000
    }
  }
})

HTTP 传输特性 :

  • 自动 URL 分辨率: 如果没有提供URL,请使用链条默认的 RPC 端点
  • 自定义信头: 支持自定义 HTTP 信头通过 fetchOptions.headers
  • API 密钥支持: 自动添加 x-glacier-api-key 当标题 apiKey 提供
  • 费率限制支持: 自动添加 rlToken 当标题 rlToken 提供

WebSocket 运输

const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "ws",
    url: "wss://api.avax.network/ext/bc/C/ws", // Optional custom WebSocket URL
    config: {
      // WebSocket-specific configuration
      retryCount: 3,
      retryDelay: 1000
    }
  }
})

WebSocket 运输特性 :

  • 实时更新: 支持用于实时数据的 WebSocket 连接
  • 自动重接: 内置重试逻辑, 并带有可配置重试计数和延迟
  • 事件驱动: 签署屏蔽链事件和实时更新的理想

自定义运输

const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "custom",
    provider: window.avalanche, // Custom provider implementation
    config: {
      // Custom transport configuration
    }
  }
})

自定义运输特性 :

  • 供应商一体化: 与自定义 RPC 供应商或中间软件整合
  • 弹性配置:全面控制运输行为
  • 钱包支持: 钱包客户端的特殊处理

后退运输

const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "fallback",
    transports: [
      { type: "http", url: "https://primary-rpc.com" },
      { type: "http", url: "https://backup-rpc.com" }
    ],
    config: {
      // Fallback configuration
      retryCount: 3,
      retryDelay: 1000
    }
  }
})

退后运输特性 :

  • 高可用性: 多个 RPC 端点之间自动失效

高级配置示例

自定义 HTTP 信头和超时

const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "http",
    config: {
      fetchOptions: {
        headers: {
          "X-Custom-Header": "custom-value"
        },
      }
    }
  }
})

多个倒计时终点

const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "fallback",
    transports: [
      { type: "http", url: "https://api.avax.network/ext/bc/C/rpc" },
      { type: "http", url: "https://rpc.ankr.com/avalanche" },
      { type: "http", url: "https://avalanche.public-rpc.com" }
    ],
    config: {
      retryCount: 5,
      retryDelay: 2000
    }
  }
})

带有自定义配置的 WebSocket

const client = createAvalancheClient({
  chain: avalanche,
  transport: {
    type: "ws",
    config: {
      retryCount: 5,
      retryDelay: 2000,
      maxRetryDelay: 30000
    }
  }
})

运输选择准则

  • HTTP 运输: 最适合大多数使用的大小写, 简单配置, 宽相容性
  • WebSocket 运输: 实时应用程序的理想,事件订阅,实时更新
  • 自定义运输: 与特定提供者或中间软件集成时使用
  • 后退运输: 建议用于需要大量供应的生产应用

环境考虑因素

  • 浏览器: HTTP 和 WebSocket 传输已完全支持
  • 节点.js: 所有运输类型都得到支持
  • 移动: 建议移动应用的HTTP运输
  • 生产: 考虑使用具有多个RPC端点的倒置运输实现可靠性

输出模块和公用事业

主要出口

SDK输出出所有viem的公用设施和类型,加上Avalanche特有的功能:

import { 
  createAvalancheClient,
  createAvalancheWalletClient,
  // All viem exports
  createClient,
  createPublicClient,
  createWalletClient,
  // ... and many more
} from '@avalanche-sdk/client'

账户管理

import { 
  privateKeyToAvalancheAccount,
  mnemonicsToAvalancheAccount,
  hdKeyToAvalancheAccount,
  privateKeyToXPAddress,
  publicKeyToXPAddress,
  // ... and more
} from '@avalanche-sdk/client/accounts'

链式配置

import { 
  avalanche,
  avalancheFuji,
  // ... and more
} from '@avalanche-sdk/client/chains'

方法

访问特定方法类别:

// P-Chain methods
import { /* P-Chain methods */ } from '@avalanche-sdk/client/methods/pChain'

// X-Chain methods  
import { /* X-Chain methods */ } from '@avalanche-sdk/client/methods/xChain'

// C-Chain methods
import { /* C-Chain methods */ } from '@avalanche-sdk/client/methods/cChain'

// Wallet methods
import { /* Wallet methods */ } from '@avalanche-sdk/client/methods/wallet'

// Public methods
import { /* Public methods */ } from '@avalanche-sdk/client/methods/public'

// Admin methods
import { /* Admin methods */ } from '@avalanche-sdk/client/methods/admin'

// Info methods
import { /* Info methods */ } from '@avalanche-sdk/client/methods/info'

// Health methods
import { /* Health methods */ } from '@avalanche-sdk/client/methods/health'

// Index methods
import { /* Index methods */ } from '@avalanche-sdk/client/methods/index'

// proposervm methods
import { /* proposervm methods */ } from '@avalanche-sdk/client/methods/proposervm'

公用事业

import { 
  CB58ToHex,
  hexToCB58,
  getTxFromBytes,
  getUnsignedTxFromBytes,
  getUtxoFromBytes,
  getUtxosForAddress,
  // All viem utilities
  formatEther,
  parseEther,
  keccak256,
  // ... and many more
} from '@avalanche-sdk/client/utils'

额外模块

// Node utilities
import { /* Node utilities */ } from '@avalanche-sdk/client/node'

// Nonce management
import { /* Nonce utilities */ } from '@avalanche-sdk/client/nonce'

// Serializable utilities
import { /* Serializable utilities */ } from '@avalanche-sdk/client/serializable'

// SIWE (Sign-In with Ethereum)
import { /* SIWE utilities */ } from '@avalanche-sdk/client/siwe'

// Window utilities
import { /* Window utilities */ } from '@avalanche-sdk/client/window'

可用方法

P-钱方法

X-Chain 方法

C-Chain 方法问题

钱包方法

P-Chain钱包方法

X-钱钱包方法

C-钱钱包方法

公共方法

管理方法

信息方法

卫生方法

指数方法

建议的方法

实例

说明: 确保创建自己的 .env 通过复制 .env.example 文档并更新值。 你还需要修改 config.ts 要指向您的文件 .env 文件路径。 默认情况下,示例使用来自 .env.example,以及示例中提及的作为注释的测试地址(如 0x76Dd3d7b2f635c2547B861e55aE8A374E587742D 财务报告和审定财务报表 X-fuji19fc97zn3mzmwr827j4d3n45refkksgms4y2yzz)来自该文件中的私钥值.

看看这个 实例 用于综合使用的文件夹示例 :

基本实例

主网络交易示例

这个 prepare-primary-network-txns 文件夹中包含准备各类交易的示例 :

跨海峡传输示例

X-Chain 交易实例

P-Chain 交易实例

C-Chain 交易实例

有关每个实例的更详细资料,请参见: 实例。 。 。 .

捐款

欢迎捐款! 请随意提交拉力请求 对于重大变动,请先开出一个问题来讨论你想要改变什么.

许可证

这个项目根据BSD 3-Clause许可证获得许可——详情见[LICENSE]./(LICENSE)文件.

支助

如果遇到问题或有问题,请:

  1. 检查 文档
  2. 打开一个 问题
  3. 加入我们的社区求助渠道

版本与发布记录

@avalanche-sdk/client 共发布 27 个版本,首次发布于 2025/08/13;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.4latest2026/10/2711 天前
0.1.32026/09/251 个月前
0.1.22026/07/183 个月前
0.0.4-alpha.17alpha2026/05/215 个月前
0.1.12025/12/1010 个月前
0.1.02025/12/0910 个月前

关于 @avalanche-sdk/client 的常见问题

@avalanche-sdk/client 是什么?

一个TypeScript SDK用于通过JSON-RPC API与Avalanche网络互动. 这个SDK提供了一整套工具,可以与所有Avalanche链(P-Chain,X-Chain,C-Chain)和各种API交互,包括tranca的钱包功能

如何安装 @avalanche-sdk/client?

在项目目录运行 npm install @avalanche-sdk/client,或使用 pnpm add / yarn add / bun add。

@avalanche-sdk/client 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@avalanche-sdk/client 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@avalanche-sdk/client 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@avalanche-sdk/client 可以商用吗?

@avalanche-sdk/client 使用 BSD-3-Clause 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括,不构成法律意见,请以许可原文为准。

@avalanche-sdk/client 的下载量有多少?

根据 npm 官方下载统计,@avalanche-sdk/client 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,234 次,日均约 74 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@avalanche-sdk/client 还在维护吗?

最新版本 0.1.4 发布于 2026/10/27(11 天前);至今共发布 27 个版本,其中过去 12 个月发布了 9 个;首次发布于 2025/08/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。