# @ar\.io/sdk 中文文档

规范地址：https://npmcn.com/package/%40ar.io/sdk/

版本：4\.5\.2
npm 元数据更新时间：2026-10-10T08:48:34.398Z
中文译文更新时间：2026-11-06T13:22:28.454Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ar.io/sdk
原文对照：https://npmcn.com/package/%40ar.io/sdk/?lang=original
项目主页：https://github.com/ar-io/ar-io-sdk#readme
源码仓库：https://github.com/ar-io/ar-io-sdk

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.6 MB，141 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：11 个
- 首次发布：2024-03-12T16:50:12.384Z
- 最新版本发布：2026-10-10T08:48:34.019Z
- 近 30 天下载量：9165（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：539（近 12 个月 129 个）

## 中文简介

[![codecov](https://codecov.io/gh/ar-io/ar-io-sdk/graph/badge.svg?token=7dXKcT7dJy)](https://codecov.io/gh/ar-io/ar-io-sdk)

## 安装

```sh
npm install @ar.io/sdk
```

也可以使用：`pnpm add @ar.io/sdk`、`yarn add @ar.io/sdk`、`bun add @ar.io/sdk`

## README

# @ar

[![codecov](https://codecov.io/gh/ar-io/ar-io-sdk/graph/badge.svg?token=7dXKcT7dJy)](https://codecov.io/gh/ar-io/ar-io-sdk)

为AR.IO网络的索拉纳-本土SDK. 提供类型 客户类别(`ARIO`, (中文(简体) ), `ANT`, (中文(简体) ), `ANTRegistry`),PDA助手, 以及索拉纳的AR.IO协议的代管原始人. 哥达马生成的指令构建器和账户解码器是 供应 [`@ar.io/solana-contracts`](https://www.npmjs.com/package/@ar.io/solana-contracts)。 。 。 .

## 目录

-   [目录](https://npmcn.com/package/%40ar.io/sdk/#readme-table-of-contents)
-   [安装](https://npmcn.com/package/%40ar.io/sdk/#readme-installation)
-   [快速启动](https://npmcn.com/package/%40ar.io/sdk/#readme-quick-start)
-   [使用量](https://npmcn.com/package/%40ar.io/sdk/#readme-usage)
-   [ARIO合同](https://npmcn.com/package/%40ar.io/sdk/#readme-ario-contract)
-   [ANT 合同](https://npmcn.com/package/%40ar.io/sdk/#readme-ant-contracts)
-   [代办](https://npmcn.com/package/%40ar.io/sdk/#readme-escrow)
-   [托肯转换](https://npmcn.com/package/%40ar.io/sdk/#readme-token-conversion)
-   [日志](https://npmcn.com/package/%40ar.io/sdk/#readme-logging)
-   [倾斜](https://npmcn.com/package/%40ar.io/sdk/#readme-pagination)
-   [高级](https://npmcn.com/package/%40ar.io/sdk/#readme-advanced)
-   [资源](https://npmcn.com/package/%40ar.io/sdk/#readme-resources)
-   [开发者](https://npmcn.com/package/%40ar.io/sdk/#readme-developers)

## 安装

要求数 `node>=v18.0.0`。 。 。 .

```shell
npm install @ar.io/sdk
```

或者说

```shell
yarn add @ar.io/sdk
```

## 快速启动

```typescript
import { ARIO } from '@ar.io/sdk';
import { createSolanaRpc } from '@solana/kit';

const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const ario = ARIO.init({ rpc });
const gateways = await ario.getGateways();
```

写操作需要一个 `@solana/kit` 签名加一个 `rpcSubscriptions` 客户端(由工具包使用) `sendAndConfirmTransaction`:

```typescript
import { ARIO } from '@ar.io/sdk';
import {
  createSolanaRpc,
  createSolanaRpcSubscriptions,
  createKeyPairSignerFromBytes,
} from '@solana/kit';
import { readFileSync } from 'node:fs';

const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const rpcSubscriptions = createSolanaRpcSubscriptions(
  'wss://api.mainnet-beta.solana.com',
);
const signer = await createKeyPairSignerFromBytes(
  new Uint8Array(JSON.parse(readFileSync('keypair.json', 'utf8'))),
);

const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
await ario.buyRecord({
  name: 'foo',
  type: 'lease',
  years: 1,
  processId: '<ANT mint pubkey>',
});
```

产出

```json
{
  "items": [
    {
      "gatewayAddress": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
      "observerAddress": "IPdwa3Mb_9pDD8c2IaJx6aad51Ss-_TfStVwBuhtXMs",
      "operatorStake": 250000000000,
      "totalDelegatedStake": 0,
      "settings": {
        "allowDelegatedStaking": true,
        "allowedDelegates": [],
        "autoStake": false,
        "delegateRewardShareRatio": 10,
        "minDelegatedStake": 100000000,
        "fqdn": "ar-io.dev",
        "label": "ar.io Test",
        "note": "Test Gateway operated by PDS for the ar.io ecosystem.",
        "port": 443,
        "properties": "raJgvbFU-YAnku-WsupIdbTsqqGLQiYpGzoqk9SCVgY",
        "protocol": "https"
      },
      "startTimestamp": 1720720621424,
      "endTimestamp": 0,
      "stats": {
        "passedConsecutiveEpochs": 30,
        "failedConsecutiveEpochs": 0,
        "totalEpochCount": 31,
        "passedEpochCount": 30,
        "failedEpochCount": 1,
        "observedEpochCount": 30,
        "prescribedEpochCount": 31
      },
      "status": "joined",
      "weights": {
        "stakeWeight": 5.02400000024,
        "tenureWeight": 0.19444444444444,
        "gatewayPerformanceRatio": 1,
        "observerPerformanceRatio": 1,
        "gatewayRewardRatioWeight": 1,
        "observerRewardRatioWeight": 1,
        "compositeWeight": 0.97688888893556,
        "normalizedCompositeWeight": 0.19247316211083
      }
    }
  ],
  "hasMore": true,
  "nextCursor": "-4xgjroXENKYhTWqrBo57HQwvDL51mMdfsdsxJy6Y2Z_sA",
  "totalItems": 316,
  "limit": 100,
  "sortBy": "startTimestamp",
  "sortOrder": "desc"
}
```

## 使用量

SDK作为ES模块发布(`"type": "module"`并且现在 与现代捆绑器相兼容,例如Webpack、Rollup、ESbuilding,以及 维特。 普通JS的消费者应迁移到无害环境管理(18+节点支持无害环境管理) 原生的). 参考 \[示例\] 目录查看如何使用 SDK 在各种环境中.

### 子路径导出

-   `@ar.io/sdk` ——主条目. `ARIO`, (中文(简体) ), `ANT`, (中文(简体) ), `ANTRegistry`索拉纳语 客户类 PDA 帮助者 解剖者 代管原始人.
-   `@ar.io/sdk/solana` - 主条目的别名(为一次发布而保留) 而消费者则从先前的子路径布局中迁移.

### 网页

> \[尖叫声\] 捆绑的网络项目默认不提供多填充(Vite, (英文)ESBuild, Webpack, Rollup等. 根据你的组合,你 将需要多填充器 `crypto`, (中文(简体) ), `process` 财务报告和审定财务报表 `buffer`。参见 \[示例/webpack\]和\[示例/vite\]的例子.

```javascript
import { ARIO } from '@ar.io/sdk';
import { createSolanaRpc } from '@solana/kit';

const ario = ARIO.init({
  rpc: createSolanaRpc('https://api.mainnet-beta.solana.com'),
});
const gateways = await ario.getGateways();
```

### 浏览器捆绑

```html
<script type="module">
  // replace <version> with a release version
  import { ARIO } from 'https://github.com/ar-io/ar-io-sdk/releases/download/v<version>/web.bundle.min.js';
  import { createSolanaRpc } from 'https://esm.sh/@solana/kit@6';

  const ario = ARIO.init({
    rpc: createSolanaRpc('https://api.mainnet-beta.solana.com'),
  });
  const gateways = await ario.getGateways();
</script>
```

### 类型脚本

SDK飞船TypeScript型号与JS出品相并列. 类型是 从 `./lib/types/solana/index.d.ts` 自动解析 为无害环境管理的消费者服务.

> \[注\] 建议使用脚本 5.3+ (SDK 用途) `nodenext` 模块 决 定 `.js` 相对进口的扩展).

## ARIO合同

### 常规

#### `init({ rpc, rpcSubscriptions?, signer? })`

创建只读或可写入的ARIO客户端的工厂功能. 提供 `signer` 加号 `rpcSubscriptions` 启用写法 (单位:千美元)`joinNetwork`, (中文(简体) ), `delegateStake`, (中文(简体) ), `buyRecord`(见A/C.5/49/70,附件)。 没有签名, 客户端只读.

```typescript
import { ARIO } from '@ar.io/sdk';
import {
  createSolanaRpc,
  createSolanaRpcSubscriptions,
  createKeyPairSignerFromBytes,
} from '@solana/kit';

const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');

// read-only client
const ario = ARIO.init({ rpc });

// read-write client (needs rpcSubscriptions for sendAndConfirm)
const rpcSubscriptions = createSolanaRpcSubscriptions(
  'wss://api.mainnet-beta.solana.com',
);
const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */);
const arioWrite = ARIO.init({ rpc, rpcSubscriptions, signer });
```

#### `getInfo()`

获取ARIO进程的信息.

```typescript
const ario = ARIO.init({ rpc });
const info = await ario.getInfo();
```

产出

```json
{
  "Name": "AR.IO",
  "Ticker": "ARIO",
  "Logo": "",
  "Denomination": 6,
  "Handlers": [],
  "LastCreatedEpochIndex": 0,
  "LastDistributedEpochIndex": 0,
  "totalSupply": 1000000000000000,
  "protocolBalance": 0,
  "epochSettings": {
    "durationMs": 86400000,
    "prescribedNameCount": 25,
    "maxObservers": 50
  }
}
```

> **说明**数字 : `Handlers`, (中文(简体) ), `LastCreatedEpochIndex`,以及 `LastDistributedEpochIndex` 是索拉纳上的占位符(返回后与相容的字段形状) 消费者代码. `totalSupply` 编号 : `protocolBalance` 被现场读取 页:1 `ArioConfig` PDA; 开发部; `epochSettings` 现场直播 `EpochSettings` PDA (英语). 见 `src/solana/io-readable.ts` 准确的投影.

#### `getTokenSupply()`

收回全部的代币供应,返回mARIO. 供应总量包括:

-   `total` - 提供所有物品的总数量
-   `circulating` - 供应总量减去锁住、取出、授权和计分
-   `locked` - 协议中锁入的标志(已金库)
-   `withdrawn` - 经营者和发包人从协议中取出的迹象
-   `delegated` - 授予网关的标志
-   `staked` - 网关操作员在协议中加注的标志
-   `protocolBalance` - 记在协议金库里 这已包括在流通供应中.

```typescript
const ario = ARIO.init({ rpc });
const supply = await ario.getTokenSupply();
```

产出

```json
{
  "total": 1000000000000000000,
  "circulating": 998094653842520,
  "locked": 0,
  "withdrawn": 560563387278,
  "delegated": 1750000000,
  "staked": 1343032770199,
  "protocolBalance": 46317263683761
}
```

#### `getBalance({ address })`

获取指定的钱包地址的余额.

```typescript
const ario = ARIO.init({ rpc });
// the balance will be returned in mARIO as a value
const balance = await ario
  .getBalance({
    address: "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
  })
  .then((balance: number) => new mARIOToken(balance).toARIO()); // convert it to ARIO for readability
```

产出

```json
100000
```

#### `getBalances({ cursor, limit, sortBy, sortOrder })`

收回ARIO进程的余额 `mARIO`,并按规定的标准进行分类。 这个 `cursor` 用于 pagination 是上次请求中最后一个钱包地址 .

```typescript
const ario = ARIO.init({ rpc });
const balances = await ario.getBalances({
  cursor: "-4xgjroXENKYhTWqrBo57HQwvDL51mMdfsdsxJy6Y2Z_sA",
  limit: 100,
  sortBy: "balance",
  sortOrder: "desc",
});
```

产出

```json
{
  "items": [
    {
      "address": "-4xgjroXENKYhTWqrBo57HQwvDL51mMvSxJy6Y2Z_sA",
      "balance": 1000000
    },
    {
      "address": "-7vXsQZQDk8TMDlpiSLy3CnLi5PDPlAaN2DaynORpck",
      "balance": 1000000
    }
    // ...98 other balances
  ],
  "hasMore": true,
  "nextCursor": "-7vXsQZQDk8TMDlpiSLy3CnLi5PDPlAaN2DaynORpck",
  "totalItems": 1789,
  "sortBy": "balance",
  "sortOrder": "desc"
}
```

#### `transfer({ target, qty })`

转账 `mARIO` 送交指定的 `target` 收件人地址 。 要求数 `signer` 将按 `ARIO.init` 签署交易.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.transfer({
  target: 'RecipientSolanaPubkeyBase58',
  qty: new ARIOToken(1000).toMARIO(),
});
```

### 网络

SDK和你的组合说话 `@solana/kit` RPC 客户点 默认为主网-β。 devnet 或本地验证符, 覆盖 rPC URL和(在任何非主网集群)每个方案地址:

```typescript
import { ARIO } from '@ar.io/sdk';
import { createSolanaRpc, address } from '@solana/kit';

const ario = ARIO.init({
  rpc: createSolanaRpc('https://api.devnet.solana.com'),
  coreProgramId: address('<ARIO_CORE_PROGRAM_ID>'),
  garProgramId: address('<ARIO_GAR_PROGRAM_ID>'),
  arnsProgramId: address('<ARIO_ARNS_PROGRAM_ID>'),
  antProgramId: address('<ARIO_ANT_PROGRAM_ID>'),
});
```

本地网( urfpool) 源程序ID from `migration/localnet/out/localnet.env` 输入 `solana-ar-io` 单相机.

### 断层

#### `getVault({ address, vaultId })`

通过指定的钱包地址和金库ID获取ARIO进程的锁定-平衡用户金库.

```typescript
const ario = ARIO.init({ rpc });
const vault = await ario.getVault({
  address: "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
  vaultId: "vaultIdOne",
});
```

产出

```json
{
  "balance": 1000000,
  "startTimestamp": 123,
  "endTimestamp": 4567
}
```

#### `getVaults({ cursor, limit, sortBy, sortOrder })`

检索ARIO进程的所有锁定-平衡用户金库,并按指定标准进行分解和排序. 这个 `cursor` 用于 pagination 是上次请求中最后一个钱包地址 .

```typescript
const ario = ARIO.init({ rpc });
const vaults = await ario.getVaults({
  cursor: "0",
  limit: 100,
  sortBy: "balance",
  sortOrder: "desc",
});
```

产出

```json
{
  "items": [
    {
      "address": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
      "vaultId": "vaultIdOne",
      "balance": 1000000,
      "startTimestamp": 123,
      "endTimestamp": 4567
    },
    {
      "address": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
      "vaultId": "vaultIdTwo",
      "balance": 1000000,
      "startTimestamp": 123,
      "endTimestamp": 4567
    }
    // ...98 other addresses with vaults
  ],
  "hasMore": true,
  "nextCursor": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
  "totalItems": 1789,
  "sortBy": "balance",
  "sortOrder": "desc"
}
```

#### `vaultedTransfer({ recipient, quantity, lockLengthMs, revokable })`

转账 `mARIO` 送交指定的 `recipient` 地址并锁定指定的余额 `lockLengthMs` 毫秒长. 这个 `revokable` 旗下决定发送者是否能够撤销已保存的传输.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.vaultedTransfer(
  {
    recipient: "-5dV7nk7waR8v4STuwPnTck1zFVkQqJh5K9q9Zik4Y5",
    quantity: new ARIOToken(1000).toMARIO(),
    lockLengthMs: 1000 * 60 * 60 * 24 * 365, // 1 year
    revokable: true,
  },
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
```

#### `revokeVault({ recipient, vaultId })`

撤销由收件人地址和金库身份的金库转移。 只有金库转移的发件人才能撤销.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.revokeVault({
  recipient: "-5dV7nk7waR8v4STuwPnTck1zFVkQqJh5K9q9Zik4Y5",
  vaultId: "IPdwa3Mb_9pDD8c2IaJx6aad51Ss-_TfStVwBuhtXMs",
});
```

#### `createVault({ lockLengthMs, quantity })`

创建指定的金库 `quantity` 从签名者的余额中锁定它 `lockLengthMs` 毫秒长.

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });

const { id: txId } = await ario.createVault({
  lockLengthMs: 1000 * 60 * 60 * 24 * 365, // 1 year
  quantity: new ARIOToken(1000).toMARIO(),
});
```

#### `extendVault({ vaultId, extendLengthMs })`

以指定方式将签名人金库的锁长度延长 `extendLengthMs` 毫秒长.

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });

const { id: txId } = await ario.extendVault({
  vaultId: "vaultIdOne",
  extendLengthMs: 1000 * 60 * 60 * 24 * 365, // 1 year
});
```

#### `increaseVault({ vaultId, quantity })`

通过指定方式增加签名人金库的余额 `quantity` 马里奥.

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.increaseVault({
  vaultId: "vaultIdOne",
  quantity: new ARIOToken(1000).toMARIO(),
});
```

### 网关

#### `getGateway({ address })`

取取网关信息 取取钱包地址.

```typescript
const ario = ARIO.init({ rpc });
const gateway = await ario.getGateway({
  address: "-7vXsQZQDk8TMDlpiSLy3CnLi5PDPlAaN2DaynORpck",
});
```

产出

```json
{
  "observerAddress": "IPdwa3Mb_9pDD8c2IaJx6aad51Ss-_TfStVwBuhtXMs",
  "operatorStake": 250000000000,
  "totalDelegatedStake": 0,
  "settings": {
    "allowDelegatedStaking": true,
    "allowedDelegates": [],
    "autoStake": false,
    "delegateRewardShareRatio": 10,
    "minDelegatedStake": 100000000,
    "fqdn": "ar-io.dev",
    "label": "ar.io Test",
    "note": "Test Gateway operated by PDS for the ar.io ecosystem.",
    "port": 443,
    "properties": "raJgvbFU-YAnku-WsupIdbTsqqGLQiYpGzoqk9SCVgY",
    "protocol": "https"
  },
  "startTimestamp": 1720720620813,
  "endTimestamp": 0,
  "stats": {
    "passedConsecutiveEpochs": 30,
    "failedConsecutiveEpochs": 0,
    "totalEpochCount": 31,
    "passedEpochCount": 30,
    "failedEpochCount": 1,
    "observedEpochCount": 30,
    "prescribedEpochCount": 31
  },
  "status": "joined",
  "weights": {
    "stakeWeight": 5.02400000024,
    "tenureWeight": 0.19444444444444,
    "gatewayPerformanceRatio": 1,
    "observerPerformanceRatio": 1,
    "gatewayRewardRatioWeight": 1,
    "observerRewardRatioWeight": 1,
    "compositeWeight": 0.97688888893556,
    "normalizedCompositeWeight": 0.19247316211083
  }
}
```

#### `getGateways({ cursor, limit, sortBy, sortOrder })`

检索ARIO进程的已注册网关,使用页码并按指定标准进行排序. 这个 `cursor` 用于 pagination 是上次请求中最后一个网关地址 .

```typescript
const ario = ARIO.init({ rpc });
const gateways = await ario.getGateways({
  limit: 100,
  sortOrder: "desc",
  sortBy: "operatorStake",
});
```

可用 `sortBy` 选项是网关对象上的任何密钥,例如. `operatorStake`, (中文(简体) ), `start`, (中文(简体) ), `status`, (中文(简体) ), `settings.fqdn`, (中文(简体) ), `settings.label`, (中文(简体) ), `settings.note`, (中文(简体) ), `settings.port`, (中文(简体) ), `settings.protocol`, (中文(简体) ), `stats.failedConsecutiveEpochs`, (中文(简体) ), `stats.passedConsecutiveEpochs`等 (中文(简体) ).

产出

```json
{
  "items": [
    {
      "gatewayAddress": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
      "observerAddress": "IPdwa3Mb_9pDD8c2IaJx6aad51Ss-_TfStVwBuhtXMs",
      "operatorStake": 250000000000,
      "totalDelegatedStake": 0,
      "settings": {
        "allowDelegatedStaking": true,
        "allowedDelegates": [],
        "autoStake": false,
        "delegateRewardShareRatio": 10,
        "minDelegatedStake": 100000000,
        "fqdn": "ar-io.dev",
        "label": "ar.io Test",
        "note": "Test Gateway operated by PDS for the ar.io ecosystem.",
        "port": 443,
        "properties": "raJgvbFU-YAnku-WsupIdbTsqqGLQiYpGzoqk9SCVgY",
        "protocol": "https"
      },
      "startTimestamp": 1720720620813,
      "endTimestamp": 0,
      "stats": {
        "passedConsecutiveEpochs": 30,
        "failedConsecutiveEpochs": 0,
        "totalEpochCount": 31,
        "passedEpochCount": 30,
        "failedEpochCount": 1,
        "observedEpochCount": 30,
        "prescribedEpochCount": 31
      },
      "status": "joined",
      "weights": {
        "stakeWeight": 5.02400000024,
        "tenureWeight": 0.19444444444444,
        "gatewayPerformanceRatio": 1,
        "observerPerformanceRatio": 1,
        "gatewayRewardRatioWeight": 1,
        "observerRewardRatioWeight": 1,
        "compositeWeight": 0.97688888893556,
        "normalizedCompositeWeight": 0.19247316211083
      }
    }
  ],
  "hasMore": true,
  "nextCursor": "-4xgjroXENKYhTWqrBo57HQwvDL51mMdfsdsxJy6Y2Z_sA",
  "totalItems": 316,
  "limit": 100,
  "sortBy": "operatorStake",
  "sortOrder": "desc"
}
```

#### `getGatewayDelegates({ address, cursor, limit, sortBy, sortOrder })`

征用所有代表的特定网关,按规定标准进行分层分拣. 这个 `cursor` 用于 pagination 是上次请求中最后一个代表地址.

```typescript
const ario = ARIO.init({ rpc });
const delegates = await ario.getGatewayDelegates({
  address: "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
  limit: 3,
  sortBy: "startTimestamp",
  sortOrder: "desc",
});
```

产出

```json
{
  "nextCursor": "ScEtph9-vfY7lgqlUWwUwOmm99ySeZGQhOX0MFAyFEs",
  "limit": 3,
  "sortBy": "startTimestamp",
  "totalItems": 32,
  "sortOrder": "desc",
  "hasMore": true,
  "items": [
    {
      "delegatedStake": 600000000,
      "address": "qD5VLaMYyIHlT6vH59TgYIs6g3EFlVjlPqljo6kqVxk",
      "startTimestamp": 1732716956301
    },
    {
      "delegatedStake": 508999038,
      "address": "KG8TlcWk-8pvroCjiLD2J5zkG9rqC6yYaBuZNqHEyY4",
      "startTimestamp": 1731828123742
    },
    {
      "delegatedStake": 510926479,
      "address": "ScEtph9-vfY7lgqlUWwUwOmm99ySeZGQhOX0MFAyFEs",
      "startTimestamp": 1731689356040
    }
  ]
}
```

#### `joinNetwork(params)`

通过其关联的钱包加入 ar.io 网络的网关 .

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.joinNetwork(
  {
    qty: new ARIOToken(10_000).toMARIO(), // minimum operator stake allowed
    allowDelegatedStaking: true, // allows delegated staking
    minDelegatedStake: new ARIOToken(100).toMARIO(), // minimum delegated stake allowed
    delegateRewardShareRatio: 10, // percentage of rewards to share with delegates (e.g. 10%)
    label: "john smith", // min 1, max 64 characters
    note: "The example gateway", // max 256 characters
    properties: "FH1aVetOoulPGqgYukj0VE0wIhDy90WiQoV3U2PeY44", // Arweave transaction ID containing additional properties of the Gateway
    observerWallet: "0VE0wIhDy90WiQoV3U2PeY44FH1aVetOoulPGqgYukj", // wallet address of the observer, must match OBSERVER_WALLET on the observer
    fqdn: "example.com", // fully qualified domain name - note: you must own the domain and set the OBSERVER_WALLET on your gateway to match `observerWallet`
    port: 443, // port number
    protocol: "https", // only 'https' is supported
  },
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
```

#### `leaveNetwork()`

将网关设置为 `leaving` 在ar.io网络。 要求数 `signer` 将按 `ARIO.init` 签署交易。 网关操作员和代表的利害关系已妥善保管,休假后将归还。 该网关将在休假后从网络中移除.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });

const { id: txId } = await ario.leaveNetwork(
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
```

#### `updateGatewaySettings({ ...settings })`

写入呼叫者网关配置的新网关设置 .

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.updateGatewaySettings(
  {
    // any other settings you want to update
    minDelegatedStake: new ARIOToken(100).toMARIO(),
  },
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
```

#### `updateOperationsAddress({ operationsAddress })`

授权第二个地址来更新呼叫者的网关元数据(参见 `updateGatewayMetadata`)和花出网关的ArNS折扣. 拍摄、授权设置和操作地址本身仅限操作员使用。 把接线员的地址传过去 撤销代表团.

尚未迁移到计划1.2.0的网关无法持有操作地址;在这种情况下 `migrate_gateway` 自动添加到同一交易中.

_注:只有索拉纳语,所以是开着的 `SolanaARIOWriteable` 而不是交叉后端 `ARIOWrite` 类型。 必须由网关操作员签名 ._

```typescript
import { SolanaARIOWriteable } from "@ar.io/sdk";

const ario = new SolanaARIOWriteable({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.updateOperationsAddress({
  operationsAddress: "DeLegateAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
});
```

#### `updateGatewayMetadata({ gatewayAddress?, ...metadata })`

更新网关 `label`, (中文(简体) ), `fqdn`, (中文(简体) ), `port`, (中文(简体) ), `protocol`, (中文(简体) ), `properties` 和(或) `note`。可以由网关操作员签名,也可以由其操作地址签名,在这种情况下,通过操作员为 `gatewayAddress`。操作地址只有在网关处于1.2.0计划时才能获得荣誉.

_注:仅索拉纳语(`SolanaARIOWriteable`) (中文(简体) )._

```typescript
// signed by the gateway's operations address
const ario = new SolanaARIOWriteable({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.updateGatewayMetadata({
  gatewayAddress: "GatewayAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
  fqdn: "gateway.example.com",
  port: 443,
});
```

当阅读网关时, `operationsAddress` 仅用于1.2.0或以后的网关;下面是程序忽略字段,只有操作员才能操作.

#### `migrateGateway({ gatewayAddress })` 编号 : `migrateGateways({ gatewayAddresses?, batchSize? })`

Migrates Gateway 账户为 1.2.0 计划(ADR-030)。 无授权——签字人支付少量租金上调(每个网关32字节). `migrateGateways` 没有 `gatewayAddresses` 迁移仍然低于1.2.0的每个网关(见 `getUnmigratedGatewayAddresses()`),每笔交易默认为8起,并止于第一批失败的批次.

_注:仅索拉纳语(`SolanaARIOWriteable`) (中文(简体) )._

```typescript
const ario = new SolanaARIOWriteable({ rpc, rpcSubscriptions, signer });
const pending = await ario.getUnmigratedGatewayAddresses();
const { migrated, signatures } = await ario.migrateGateways();
```

#### `transferEpochSettingsAuthority({ newAuthority })`

双手 `EpochSettings.authority` ——时代管理指令的关键——到新地址,如多西格(ADR-0031). 必须由现任当局签署.

_注:仅索拉纳语(`SolanaARIOWriteable`) (中文(简体) )._

```typescript
const ario = new SolanaARIOWriteable({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.transferEpochSettingsAuthority({
  newAuthority: "MuLtisigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
});
```

#### `increaseDelegateStake({ target, qty })`

增加目标网关上的呼叫者权益.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.increaseDelegateStake(
  {
    target: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
    qty: new ARIOToken(100).toMARIO(),
  },
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
```

#### `decreaseDelegateStake({ target, qty, instant })`

减少目标网关上的呼叫者赌注。 可以立即设定为 `true`。 。 。 .

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.decreaseDelegateStake(
  {
    target: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
    qty: new ARIOToken(100).toMARIO(),
  },
  {
    tags: [{ name: "App-Name", value: "My-Awesome-App" }],
  },
);
```

支付提前取出费,并立即取出.

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.decreaseDelegateStake({
  target: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
  qty: new ARIOToken(100).toMARIO(),
  instant: true, // Immediately withdraw this stake and pay the instant withdrawal fee
});
```

#### `getDelegations({ address, cursor, limit, sortBy, sortOrder })`

在所有网关取出所有活跃和被保险的花桩,用于特定地址,并按指定标准进行分类。 这个 `cursor` 用于 pagination 是上次请求的最后一个 missionId(简便的网关并开始解码的时间戳).

```typescript
const ario = ARIO.init({ rpc });
const vaults = await ario.getDelegations({
  address: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
  cursor: "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ_123456789",
  limit: 2,
  sortBy: "startTimestamp",
  sortOrder: "asc",
});
```

产出

```json
{
  "sortOrder": "asc",
  "hasMore": true,
  "totalItems": 95,
  "limit": 2,
  "sortBy": "startTimestamp",
  "items": [
    {
      "type": "stake",
      "startTimestamp": 1727815440632,
      "gatewayAddress": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
      "delegationId": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ_1727815440632",
      "balance": 1383212512
    },
    {
      "type": "vault",
      "startTimestamp": 1730996691117,
      "gatewayAddress": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
      "delegationId": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ_1730996691117",
      "vaultId": "_sGDS7X1hyLCVpfe40GWioH9BSOb7f0XWbhHBa1q4-g",
      "balance": 50000000,
      "endTimestamp": 1733588691117
    }
  ],
  "nextCursor": "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ_1730996691117"
}
```

#### `instantWithdrawal({ gatewayAddress, vaultId })`

立即取出网关上现有的金库. 如果没有 `gatewayAddress` 提供签名人地址.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
// removes a delegated vault from a gateway
const { id: txId } = await ario.instantWithdrawal(
  {
    // gateway address where delegate vault exists
    gatewayAddress: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
    // delegated vault id to cancel
    vaultId: "fDrr0_J4Iurt7caNST02cMotaz2FIbWQ4Kcj616RHl3",
  },
  // optional additional tags
  {
    tags: [{ name: "App-Name", value: "My-Awesome-App" }],
  },
);
// removes an operator vault from a gateway
const { id: txId } = await ario.instantWithdrawal({
  vaultId: "fDrr0_J4Iurt7caNST02cMotaz2FIbWQ4Kcj616RHl3",
});
```

#### `cancelWithdrawal({ gatewayAddress, vaultId })`

取消网关上已有的金库。 保险箱的木桩将归还给呼叫者。 若无 `gatewayAddress` 提供签名人地址.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
// cancels a delegated vault from a gateway
const { id: txId } = await ario.cancelWithdrawal(
  {
    // gateway address where vault exists
    gatewayAddress: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
    // vault id to cancel
    vaultId: "fDrr0_J4Iurt7caNST02cMotaz2FIbWQ4Kcj616RHl3",
  },
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
// cancels an operator vault from a gateway
const { id: txId } = await ario.cancelWithdrawal({
  // operator vault id to cancel
  vaultId: "fDrr0_J4Iurt7caNST02cMotaz2FIbWQ4Kcj616RHl3",
});
```

#### `getAllowedDelegates({ address, cursor, limit, sortBy, sortOrder })`

所有检索都允许代表获得具体地址。 这个 `cursor` 用于 pagination 是上次请求中最后一个地址.

```typescript
const ario = ARIO.init({ rpc });
const allowedDelegates = await ario.getAllowedDelegates({
  address: "QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ",
});
```

产出

```json
{
  "sortOrder": "desc",
  "hasMore": false,
  "totalItems": 4,
  "limit": 100,
  "items": [
    "PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM",
    "N4h8M9A9hasa3tF47qQyNvcKjm4APBKuFs7vqUVm-SI",
    "JcC4ZLUY76vmWha5y6RwKsFqYTrMZhbockl8iM9p5lQ",
    "31LPFYoow2G7j-eSSsrIh8OlNaARZ84-80J-8ba68d8"
  ]
}
```

#### `getGatewayVaults({ address, cursor, limit, sortBy, sortOrder })`

检索所有网关上的所有金库,以获取特定地址,并按指定标准进行分类。 这个 `cursor` 用于 pagination 是上一个请求中最后一个 kullsId .

```typescript
const ario = ARIO.init({ rpc });
const vaults = await ario.getGatewayVaults({
  address: '"PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM',
});
```

产出

```json
{
  "sortOrder": "desc",
  "hasMore": false,
  "totalItems": 1,
  "limit": 100,
  "sortBy": "endTimestamp",
  "items": [
    {
      "cursorId": "PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM_1728067635857",
      "startTimestamp": 1728067635857,
      "balance": 50000000000,
      "vaultId": "PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM",
      "endTimestamp": 1735843635857
    }
  ]
}
```

#### `getAllGatewayVaults({ cursor, limit, sortBy, sortOrder })`

在所有网关上收回所有金库,按规定标准进行分层和排序。 这个 `cursor` 用于 pagination 是上一个请求中最后一个 kullsId .

```typescript
const ario = ARIO.init({ rpc });
const vaults = await ario.getAllGatewayVaults({
  limit: 1,
  sortBy: "endTimestamp",
  sortOrder: "desc",
});
```

产出

```json
{
  "sortOrder": "desc",
  "hasMore": true,
  "totalItems": 95,
  "limit": 1,
  "sortBy": "endTimestamp",
  "items": [
    {
      "cursorId": "PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM_E-QVU3dta36Wia2uQw6tQLjQk7Qw5uN0Z6fUzsoqzUc",
      "gatewayAddress": "PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM",
      "startTimestamp": 1728067635857,
      "balance": 50000000000,
      "vaultId": "E-QVU3dta36Wia2uQw6tQLjQk7Qw5uN0Z6fUzsoqzUc",
      "endTimestamp": 1735843635857
    }
  ],
  "nextCursor": "PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM_E-QVU3dta36Wia2uQw6tQLjQk7Qw5uN0Z6fUzsoqzUc"
}
```

#### `getWithdrawals({ address, cursor, limit, sortBy, sortOrder })`

归还所有未了的退款 `address` - 包括两个操作员-摄取的减少(`isDelegate: false`(a) 减少(`isDelegate: true`) (中文(简体) ). 撤回在下列情况下可以主张: `Date.now() >= endTimestamp`; 调用 `claimWithdrawal({ withdrawalId: item.vaultId })` 以释出符相.

这是驱动“您有 X 的可要求提取” UIs 所读到的 , 而无需在钱包交互的每一个网关上扇出扇子 .

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });

const withdrawals = await ario.getWithdrawals({
  address: "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
});

const claimable = withdrawals.items.filter(
  (w) => Date.now() >= w.endTimestamp,
);
```

产出

```json
{
  "hasMore": false,
  "totalItems": 2,
  "limit": 100,
  "items": [
    {
      "cursorId": "8CSdSjf7gXqQ5p1U2qfdwHzVw9sZRYHJpDpV87dnvb4d",
      "vaultId": "0",
      "gatewayAddress": "Bxz7Q2tWfqr9Q5T6cZjUnVxRk9CnHwShfgUaW5fY1Mvr",
      "balance": 50000000000,
      "startTimestamp": 1735843635857,
      "endTimestamp": 1738435635857,
      "isDelegate": true
    },
    {
      "cursorId": "FmWUz4w7vSdLcz1nN8H1n2KkjJgrQQXR1n4kV3WqJ7Hf",
      "vaultId": "1",
      "gatewayAddress": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
      "balance": 10000000000,
      "startTimestamp": 1735843835857,
      "endTimestamp": 1738435835857,
      "isDelegate": false
    }
  ]
}
```

#### `increaseOperatorStake({ qty })`

增加呼叫者操作员的利害关系。 必须使用注册为网关操作员的钱包执行 .

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.increaseOperatorStake(
  {
    qty: new ARIOToken(100).toMARIO(),
  },
  {
    tags: [{ name: "App-Name", value: "My-Awesome-App" }],
  },
);
```

#### `decreaseOperatorStake({ qty })`

减少呼叫者操作员的赌注。 必须使用注册为网关操作员的钱包执行 。 要求数 `signer` 将按 `ARIO.init` 签署交易.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.decreaseOperatorStake(
  {
    qty: new ARIOToken(100).toMARIO(),
  },
  {
    tags: [{ name: "App-Name", value: "My-Awesome-App" }],
  },
);
```

#### `redelegateStake({ target, source, stakeQty, vaultId })`

将特定地址的利害关系重排到一个新的网关。 为了从现有的提款金库中重新除去,可以选择包含空格ID. 重新委托费根据收费标准及利害关系金额计算. 允许用户每7个纪元自由重排一次. 除了免费重新授权之外,每次额外的重新授权将增加10%的收费,上限为60%的重新授权费.

例如:如果1000马里奥重新授权,收费率为10%,那么收费为100马里奥。 导致900 mARIO被重新下放到新的网关,100 mARIO被扣除回协议余额.

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });

const { id: txId } = await ario.redelegateStake({
  target: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
  source: "HwFceQaMQnOBgKDpnFqCqgwKwEU5LBme1oXRuQOWSRA",
  stakeQty: new ARIOToken(1000).toMARIO(),
  vaultId: "fDrr0_J4Iurt7caNST02cMotaz2FIbWQ4Kcj616RHl3",
});
```

#### `getRedelegationFee({ address })`

收回收费标准作为重新删除特定地址的利害关系所需的百分比。 收费率从0%到60%不等,根据自上次重新收费以来重新授权的次数计算.

```typescript
const ario = ARIO.init({ rpc });

const fee = await ario.getRedelegationFee({
  address: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
});
```

产出

```json
{
  "redelegationFeeRate": 10,
  "feeResetTimestamp": 1730996691117
}
```

#### `getAllDelegates({ cursor, limit, sortBy, sortOrder })`

在所有网关上收回所有代表,按规定标准进行分层和分类。 这个 `cursor` 用于平面图是 `cursorId` 来源于代表地址和先前请求的网关地址。 (例如 `address_gatewayAddress`。 。 。 .

```typescript
const ario = ARIO.init({ rpc });
const delegates = await ario.getAllDelegates({
  limit: 2,
  sortBy: "startTimestamp",
  sortOrder: "desc",
});
```

产出

```json
{
  "sortOrder": "desc",
  "hasMore": true,
  "totalItems": 95,
  "limit": 2,
  "sortBy": "startTimestamp",
  "items": [
    {
      "startTimestamp": 1734709397622,
      "cursorId": "9jfM0uzGNc9Mkhjo1ixGoqM7ygSem9wx_EokiVgi0Bs_E-QVU3dta36Wia2uQw6tQLjQk7Qw5uN0Z6fUzsoqzUc",
      "gatewayAddress": "E-QVU3dta36Wia2uQw6tQLjQk7Qw5uN0Z6fUzsoqzUc",
      "address": "9jfM0uzGNc9Mkhjo1ixGoqM7ygSem9wx_EokiVgi0Bs",
      "delegatedStake": 2521349108,
      "vaultedStake": 0
    },
    {
      "startTimestamp": 1734593229454,
      "cursorId": "LtV0aSqgK3YI7c5FmfvZd-wG95TJ9sezj_a4syaLMS8_M0WP8KSzCvKpzC-HPF1WcddLgGaL9J4DGi76iMnhrN4",
      "gatewayAddress": "M0WP8KSzCvKpzC-HPF1WcddLgGaL9J4DGi76iMnhrN4",
      "address": "LtV0aSqgK3YI7c5FmfvZd-wG95TJ9sezj_a4syaLMS8",
      "delegatedStake": 1685148110,
      "vaultedStake": 10000000
    }
  ],
  "nextCursor": "PZ5vIhHf8VY969TxBPQN-rYY9CNFP9ggNsMBqlWUzWM_QGWqtJdLLgm2ehFWiiPzMaoFLD50CnGuzZIPEdoDRGQ"
}
```

### ar.io 名称系统

#### `resolveArNSName({ name })`

将一个 ARNS 名称确定为存储在相应 ANT id 名称上的基础数据 ID .

##### 解析基名

```typescript
const ario = ARIO.init({ rpc });
const record = await ario.resolveArNSName({ name: "ardrive" });
```

产出

```json
{
  "name": "ardrive",
  "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
  "txId": "kvhEUsIY5bXe0Wu2-YUFz20O078uYFzmQIO-7brv8qw",
  "type": "lease",
  "ttlSeconds": 3600,
  "undernameLimit": 100
}
```

##### 解析下名

```typescript
const ario = ARIO.init({ rpc });
const record = await ario.resolveArNSName({ name: "logo_ardrive" });
```

产出

```json
{
  "name": "ardrive",
  "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
  "txId": "kvhEUsIY5bXe0Wu2-YUFz20O078uYFzmQIO-7brv8qw",
  "type": "lease",
  "ttlSeconds": 3600,
  "undernameLimit": 100
}
```

#### `buyRecord({ name, type, years, processId, antState })`

购买新的有指定名称、类型、处理Id和持续时间的ArNS记录.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

**参数 :**

-   `name` - 说吧 _所需经费_: 要购买的 ANS 记录的名称
-   `type` - 说吧 _所需经费_: 要购买的 ANS 记录类型
-   `processId` - 说吧 _选项_: 现有ANT进程的过程 ID. 如果未提供,则使用所提供的新的ANT程序 `signer` 将产生, 并且将分配ArNS记录 用于这一过程.
-   `years` - 说吧 _选项_: ArNS记录的年限. 未提供且 `type` 实值 `lease`记录会租一年 未提供且 `type` 实值 `permabuy`,记录将永久注册.
-   `referrer` - 说吧 _选项_: 跟踪采购转介分析(例如:. `my-app.com`(中文(简体) )
-   `antState` - 说吧 _选项_ (单位:千美元)**只买索拉纳原子**: ANT初始元数据+基础 `@` 目标在同一个交易中烤入新铸造的ANT,所以名称会立即解决您的内容而不是默认的AR. IO标志. 字段 : `transactionId` (单位:千美元) `@` 目标——当 `targetProtocol` 实值 `1`, (中文(简体) ), `targetProtocol` (单位:千美元)`0` = 默认, `1` = 森林小组/, `ticker`, (中文(简体) ), `logo` (43-Char Arweave TX id), (中文(简体) ), `description` (≤512个字符), `keywords` 页:1. **当被忽略时 `processId` 提供** ——通过ANT可写入来设定现有ANT的元数据. 注意: TTL 无法被设定为 mint (`initialize` 没有 TTL 字段),所以非默认 TTL 仍然需要后购 `setBaseNameRecord`和非常长的 `description`编号 :`keywords` 设定可能超过交易大小限制——使交易保持在采购后路径上.

```typescript
// Atomic buy that also points the name at your content in one transaction:
const record = await ario.buyRecord({
  name: "ardrive",
  type: "lease",
  years: 1,
  antState: {
    transactionId: "432l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM", // base @ target
    ticker: "ARDRIVE",
    description: "Permanent, decentralized data storage.",
    keywords: ["storage", "permaweb"],
  },
});
```

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const record = await ario.buyRecord(
  {
    name: "ardrive",
    type: "lease",
    years: 1,
    processId: "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM", // optional: assign to existing ANT process
    referrer: "my-app.com", // optional: track purchase referrals for analytics
  },
  {
    // optional tags
    tags: [{ name: "App-Name", value: "ArNS-App" }],
    onSigningProgress: (step, event) => {
      console.log(`Signing progress: ${step}`);
      if (step === "spawning-ant") {
        console.log("Spawning ant:", event);
      }
      if (step === "registering-ant") {
        console.log("Registering ant:", event);
      }
      if (step === "verifying-state") {
        console.log("Verifying state:", event);
      }
      if (step === "buying-name") {
        console.log("Buying name:", event);
      }
    },
  },
);
```

#### `upgradeRecord({ name })`

将现有租赁的ArNS记录升级为永久所有权。 记录必须目前为呼叫者所拥有并属于"租赁"类型.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const record = await ario.upgradeRecord(
  {
    name: "ardrive",
    referrer: "my-app.com", // optional: track purchase referrals for analytics
  },
  {
    // optional tags
    tags: [{ name: "App-Name", value: "ArNS-App" }],
  },
);
```

#### `getArNSRecord({ name })`

获取指定的 ARNS 名称的记录信息 .

```typescript
const ario = ARIO.init({ rpc });
const record = await ario.getArNSRecord({ name: "ardrive" });
```

产出

```json
{
  "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
  "startTimestamp": 1720720819969,
  "endTimestamp": 1752256702026,
  "type": "lease",
  "undernameLimit": 100,
  "purchasePrice": 75541282285
}
```

#### `getArNSRecords({ cursor, limit, sortBy, sortOrder })`

检索ARIO进程的所有已登记的ArNS记录,并按规定的标准进行分解和排序。 这个 `cursor` 用于 pagination 是上个请求中最后一个 ARNS 名称 .

```typescript
const ario = ARIO.init({ rpc });
// get the newest 100 names
const records = await ario.getArNSRecords({
  limit: 100,
  sortBy: "startTimestamp",
  sortOrder: "desc",
});
```

可用 `sortBy` 选项是记录对象上的任何密钥,例如. `name`, (中文(简体) ), `processId`, (中文(简体) ), `endTimestamp`, (中文(简体) ), `startTimestamp`, (中文(简体) ), `type`, (中文(简体) ), `undernames`。 。 。 .

产出

```json
{
  "items": [
    {
      "name": "ao",
      "processId": "eNey-H9RB9uCdoJUvPULb35qhZVXZcEXv8xds4aHhkQ",
      "purchasePrice": 75541282285,
      "startTimestamp": 1720720621424,
      "endTimestamp": 1752256702026,
      "type": "permabuy",
      "undernameLimit": 10
    },
    {
      "name": "ardrive",
      "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
      "endTimestamp": 1720720819969,
      "startTimestamp": 1720720620813,
      "purchasePrice": 75541282285,
      "type": "lease",
      "undernameLimit": 100
    },
    {
      "name": "arweave",
      "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
      "endTimestamp": 1720720819969,
      "startTimestamp": 1720720620800,
      "purchasePrice": 75541282285,
      "type": "lease",
      "undernameLimit": 100
    },
    {
      "name": "ar-io",
      "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
      "endTimestamp": 1720720819969,
      "startTimestamp": 1720720619000,
      "purchasePrice": 75541282285,
      "type": "lease",
      "undernameLimit": 100
    },
    {
      "name": "fwd",
      "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
      "endTimestamp": 1720720819969,
      "startTimestamp": 1720720220811,
      "purchasePrice": 75541282285,
      "type": "lease",
      "undernameLimit": 100
    }
    // ...95 other records
  ],
  "hasMore": true,
  "nextCursor": "fwdresearch",
  "totalItems": 21740,
  "sortBy": "startTimestamp",
  "sortOrder": "desc"
}
```

#### `getArNSRecordsForAddress({ address, cursor, limit, sortBy, sortOrder })`

根据 `ANTRegistry` 访问控制列表,按指定标准分解和排序。 这个 `cursor` 用于 pagination 是上个请求中最后一个 ARNS 名称 .

```typescript
const ario = ARIO.init({ rpc });
const records = await ario.getArNSRecordsForAddress({
  address: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
  limit: 100,
  sortBy: "startTimestamp",
  sortOrder: "desc",
});
```

可用 `sortBy` 选项是记录对象上的任何密钥,例如. `name`, (中文(简体) ), `processId`, (中文(简体) ), `endTimestamp`, (中文(简体) ), `startTimestamp`, (中文(简体) ), `type`, (中文(简体) ), `undernames`。 。 。 .

产出

```json
{
  "limit": 1,
  "totalItems": 31,
  "hasMore": true,
  "nextCursor": "ardrive",
  "items": [
    {
      "startTimestamp": 1740009600000,
      "name": "ardrive",
      "endTimestamp": 1777328018367,
      "type": "permabuy",
      "purchasePrice": 0,
      "undernameLimit": 100,
      "processId": "hpF0HdijWlBLFePjWX6u_-Lg3Z2E_PrP_AoaXDVs0bA"
    }
  ],
  "sortOrder": "desc",
  "sortBy": "startTimestamp"
}
```

#### `increaseUndernameLimit({ name, qty })`

将域的下名支持最多增加至10k. 域名默认最多支持10个下名.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.increaseUndernameLimit(
  {
    name: "ar-io",
    qty: 420,
    referrer: "my-app.com", // optional: track purchase referrals for analytics
  },
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
```

#### `extendLease({ name, years })`

延长已注册的ArNS域名的租约,视宽限期状况,延长1-5年. 永久注册域无法扩展 .

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.extendLease(
  {
    name: "ar-io",
    years: 1,
    referrer: "my-app.com", // optional: track purchase referrals for analytics
  },
  // optional additional tags
  { tags: [{ name: "App-Name", value: "My-Awesome-App" }] },
);
```

#### `getTokenCost({ intent, ...args })`

计算 mARIO 中的价来进行相关的交互, 例如“ Buy- Name” 交互, 其中的参数是该交互的特定参数 .

```typescript
const price = await ario
  .getTokenCost({
    intent: "Buy-Name",
    name: "ar-io",
    type: "permabuy",
  })
  .then((p) => new mARIOToken(p).toARIO()); // convert to ARIO for readability
```

产出

```json
1642.34
```

#### `getCostDetails({ intent, fromAddress, fundFrom, ...args})`

计算相关交互的扩展成本细节, 例如“ Buy- Name” 交互, 其中参数是该交互的特定参数 。 来自Address的地址 将收取互动, 和FundFrom是 资金从何处取出 `balance`, (中文(简体) ), `stakes`,或 `any`。 。 。 .

关于索拉纳,结果还包括: `gasEstimate` ——钱包总SOL(以灯塔为单位)需要执行意图:交易费(从最近的链上优先排序费中引用)外加流出产生的账户的免租金存款. 对于 `Buy-Name` 既包括交易(ANT 产卵+购买),也包括产卵资产/配给物和ANS记录的租金;首次没有ACL账户的买家也被引用ACL靴子租金(通过) `fromAddress` 因此,可以进行检查。 收费方面是一个保守的上行约束:写道从预发模拟中收紧了计算单元限制,因此登陆费通常较低.

**网关运营商折扣(索拉纳).** 采购`Buy-Name`, (中文(简体) ), `Extend-Lease`, (中文(简体) ), `Increase-Undername-Limit`, (中文(简体) ), `Upgrade-Name`当支付者是网关的运营商时, 或当网关迁移后, 网关的操作地址就会降低20%, 网关被连接, 运行至少180天, 并经过至少90%的时代。 初名费从不折价. 引文和购买方法`buyRecord`, (中文(简体) ), `buyReturnedName`, (中文(简体) ), `extendLease`, (中文(简体) ), `increaseUndernameLimit`, (中文(简体) ), `upgradeRecord`)适用同一条规则:默认情况下,他们使用付款人自己的网关,只有在它符合条件时才会增加折扣(程序拒绝其折扣网关不合格的购买). 网关上的操作地址名称 `discountGatewayAddress` (其运营商地址); 命名一个不符合条件的网关是错误 。 CLI: 爱丽丝 `--discount-gateway-address`。 。 。 .

```typescript
const costDetails = await ario.getCostDetails({
  intent: "Buy-Name",
  fromAddress: "t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3",
  fundFrom: "stakes",
  name: "ar-io",
  type: "permabuy",
});
```

产出

```json
{
  "tokenCost": 1907401818,
  "discounts": [
    {
      "name": "Gateway Operator",
      "discountTotal": 476850455,
      "multiplier": 0.8
    }
  ],
  "gasEstimate": {
    "totalLamports": 14679680,
    "feeLamports": 23000,
    "baseFeeLamports": 15000,
    "priorityFeeLamports": 8000,
    "rentLamports": 14656680,
    "rentReclaimedLamports": 0,
    "priorityFeeMicroLamports": 10000,
    "computeUnitLimit": 400000,
    "signatureCount": 3,
    "transactionCount": 2
  }
}
```

#### `getDemandFactor()`

检索网络目前的需要系数。 需求因子是根据目前的网络需要,对ANS交互成本采用的乘数.

```typescript
const ario = ARIO.init({ rpc });
const demandFactor = await ario.getDemandFactor();
```

产出

```json
1.05256
```

#### `getArNSReturnedNames({ cursor, limit, sortBy, sortOrder })`

获取 ARIO 进程的所有活动返回名称,按照指定标准进行分解和排序。 这个 `cursor` 用于 pagination 是上次请求中最后返回的名称.

```typescript
const ario = ARIO.init({ rpc });
const returnedNames = await ario.getArNSReturnedNames({
  limit: 100,
  sortBy: "endTimestamp",
  sortOrder: "asc", // return the returned names ending soonest first
});
```

产出

```json
{
  "items": [
    {
      "name": "permalink",
      "startTimestamp": 1729775641349,
      "endTimestamp": 1730985241349,
      "initiator": "GaQrvEMKBpkjofgnBi_B3IgIDmY_XYelVLB6GcRGrHc",
      "premiumMultiplier": 50
    }
  ],
  "hasMore": false,
  "totalItems": 1,
  "limit": 100,
  "sortBy": "endTimestamp",
  "sortOrder": "asc"
}
```

#### `getArNSReturnedName({ name })`

为指定的返回名称获取返回的名称数据.

```typescript
const ario = ARIO.init({ rpc });
const returnedName = await ario.getArNSReturnedName({ name: "permalink" });
```

产出

```json
{
  "name": "permalink",
  "startTimestamp": 1729775641349,
  "endTimestamp": 1730985241349,
  "initiator": "GaQrvEMKBpkjofgnBi_B3IgIDmY_XYelVLB6GcRGrHc",
  "premiumMultiplier": 50
}
```

### 埃波希斯语Name

#### `getCurrentEpoch()`

返回当前时代数据.

```typescript
const ario = ARIO.init({ rpc });
const epoch = await ario.getCurrentEpoch();
```

产出

```json
{
  "epochIndex": 0,
  "startHeight": 0,
  "startTimestamp": 1720720621424,
  "endTimestamp": 1752256702026,
  "distributionTimestamp": 1752256702026,
  "observations": {
    "failureSummaries": {
      "-Tk2DDk8k4zkwtppp_XFKKI5oUgh6IEHygAoN7mD-w8": [
        "Ie2wEEUDKoU26c7IuckHNn3vMFdNQnMvfPBrFzAb3NA"
      ]
    },
    "reports": {
      "IPdwa3Mb_9pDD8c2IaJx6aad51Ss-_TfStVwBuhtXMs": "B6UUjKWjjEWDBvDSMXWNmymfwvgR9EN27z5FTkEVlX4"
    }
  },
  "prescribedNames": ["ardrive", "ar-io", "arweave", "fwd", "ao"],
  "prescribedObservers": [
    {
      "gatewayAddress": "2Fk8lCmDegPg6jjprl57-UCpKmNgYiKwyhkU4vMNDnE",
      "observerAddress": "2Fk8lCmDegPg6jjprl57-UCpKmNgYiKwyhkU4vMNDnE",
      "stake": 10000000000,
      "startTimestamp": 1720720621424,
      "stakeWeight": 1,
      "tenureWeight": 0.4494598765432099,
      "gatewayPerformanceRatio": 1,
      "observerPerformanceRatio": 1,
      "gatewayRewardRatioWeight": 1,
      "observerRewardRatioWeight": 1,
      "compositeWeight": 0.4494598765432099,
      "normalizedCompositeWeight": 0.002057032496835938
    }
  ],
  "distributions": {
    "totalEligibleGateways": 1,
    "totalEligibleRewards": 100000000,
    "totalEligibleObserverReward": 100000000,
    "totalEligibleGatewayReward": 100000000
  },
  "arnsStats": {
    "totalReturnedNames": 0,
    "totalActiveNames": 0,
    "totalGracePeriodNames": 0,
    "totalReservedNames": 0
  }
}
```

#### `getEpoch({ epochIndex })`

返回指定块高度的时代数据。 如果没有提供时代索引,则使用当前时代.

```typescript
const ario = ARIO.init({ rpc });
const epoch = await ario.getEpoch({ epochIndex: 0 });
```

产出

```json
{
  "epochIndex": 0,
  "startHeight": 0,
  "startTimestamp": 1720720620813,
  "endTimestamp": 1752256702026,
  "distributionTimestamp": 1752256702026,
  "observations": {
    "failureSummaries": {
      "-Tk2DDk8k4zkwtppp_XFKKI5oUgh6IEHygAoN7mD-w8": [
        "Ie2wEEUDKoU26c7IuckHNn3vMFdNQnMvfPBrFzAb3NA"
      ]
    },
    "reports": {
      "IPdwa3Mb_9pDD8c2IaJx6aad51Ss-_TfStVwBuhtXMs": "B6UUjKWjjEWDBvDSMXWNmymfwvgR9EN27z5FTkEVlX4"
    }
  },
  "prescribedNames": ["ardrive", "ar-io", "arweave", "fwd", "ao"],
  "prescribedObservers": [
    {
      "gatewayAddress": "2Fk8lCmDegPg6jjprl57-UCpKmNgYiKwyhkU4vMNDnE",
      "observerAddress": "2Fk8lCmDegPg6jjprl57-UCpKmNgYiKwyhkU4vMNDnE",
      "stake": 10000000000,
      "startTimestamp": 1720720620813,
      "stakeWeight": 1,
      "tenureWeight": 0.4494598765432099,
      "gatewayPerformanceRatio": 1,
      "observerPerformanceRatio": 1,
      "gatewayRewardRatioWeight": 1,
      "observerRewardRatioWeight": 1,
      "compositeWeight": 0.4494598765432099,
      "normalizedCompositeWeight": 0.002057032496835938
    }
  ],
  "distributions": {
    "totalEligibleGateways": 1,
    "totalEligibleRewards": 100000000,
    "totalEligibleObserverReward": 100000000,
    "totalEligibleGatewayReward": 100000000
  },
  "arnsStats": {
    "totalReturnedNames": 0,
    "totalActiveNames": 0,
    "totalGracePeriodNames": 0,
    "totalReservedNames": 0
  }
}
```

#### \`获得资格奖({ opochIndex }),{光标、限制、排序By、排序命令})

返回指定块高的合格时代奖。 如果没有提供时代索引,则使用当前时代.

```typescript
const ario = ARIO.init({ rpc });
const rewards = await ario.getEligibleEpochRewards({ epochIndex: 0 });
```

产出

```json
{
  "sortOrder": "desc",
  "hasMore": true,
  "totalItems": 37,
  "limit": 1,
  "sortBy": "cursorId",
  "items": [
    {
      "cursorId": "xN_aVln30LmoCffwmk5_kRkcyQZyZWy1o_TNtM_CTm0_xN_aVln30LmoCffwmk5_kRkcyQZyZWy1o_TNtM_CTm0",
      "recipient": "xN_aVln30LmoCffwmk5_kRkcyQZyZWy1o_TNtM_CTm0",
      "gatewayAddress": "xN_aVln30LmoCffwmk5_kRkcyQZyZWy1o_TNtM_CTm0",
      "eligibleReward": 2627618704,
      "type": "operatorReward"
    }
  ],
  "nextCursor": "xN_aVln30LmoCffwmk5_kRkcyQZyZWy1o_TNtM_CTm0_xN_aVln30LmoCffwmk5_kRkcyQZyZWy1o_TNtM_CTm0"
}
```

#### `getObservations({ epochIndex })`

返回有时代索引的观测列表。 如果没有提供时代索引,则使用当前时代.

```typescript
const ario = ARIO.init({ rpc });
const observations = await ario.getObservations();
```

产出

```json
{
  "failureSummaries": {
    "-Tk2DDk8k4zkwtppp_XFKKI5oUgh6IEHygAoN7mD-w8": [
      "Ie2wEEUDKoU26c7IuckHNn3vMFdNQnMvfPBrFzAb3NA"
    ]
  },
  "reports": {
    "IPdwa3Mb_9pDD8c2IaJx6aad51Ss-_TfStVwBuhtXMs": "B6UUjKWjjEWDBvDSMXWNmymfwvgR9EN27z5FTkEVlX4",
    "Ie2wEEUDKoU26c7IuckHNn3vMFdNQnMvfPBrFzAb3NA": "7tKsiQ2fxv0D8ZVN_QEv29fZ8hwFIgHoEDrpeEG0DIs",
    "osZP4D9cqeDvbVFBaEfjIxwc1QLIvRxUBRAxDIX9je8": "aatgznEvC_UPcxp1v0uw_RqydhIfKm4wtt1KCpONBB0",
    "qZ90I67XG68BYIAFVNfm9PUdM7v1XtFTn7u-EOZFAtk": "Bd8SmFK9-ktJRmwIungS8ur6JM-JtpxrvMtjt5JkB1M"
  }
}
```

#### `getDistributions({ epochIndex })`

返回当前奖励分发信息。 如果没有提供时代索引,则使用当前时代.

```typescript
const ario = ARIO.init({ rpc });
const distributions = await ario.getDistributions({ epochIndex: 0 });
```

产出

```json
{
  "totalEligibleGateways": 1,
  "totalEligibleRewards": 100000000,
  "totalEligibleObserverReward": 100000000,
  "totalEligibleGatewayReward": 100000000
}
```

#### `saveObservations({ reportTxId, failedGateways })`

保存当前时代的观测结果。 要求数 `signer` 将按 `ARIO.init` 签署交易.

_注:要求 `signer` 将按 `ARIO.init` 签署交易._

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });
const { id: txId } = await ario.saveObservations(
  {
    reportTxId: "fDrr0_J4Iurt7caNST02cMotaz2FIbWQ4Kcj616RHl3",
    failedGateways: ["t4Xr0_J4Iurt7caNST02cMotaz2FIbWQ4Kbj616RHl3"],
  },
  {
    tags: [{ name: "App-Name", value: "My-Awesome-App" }],
  },
);
```

#### `getPrescribedObservers({ epochIndex })`

获取ARIO进程的指定观察员. 要获取上一个时代设置的指定观察员 `epochIndex` 以至理想的时代索引.

```typescript
const ario = ARIO.init({ rpc });
const observers = await ario.getPrescribedObservers({ epochIndex: 0 });
```

产出

```json
[
  {
    "gatewayAddress": "BpQlyhREz4lNGS-y3rSS1WxADfxPpAuing9Lgfdrj2U",
    "observerAddress": "2Fk8lCmDegPg6jjprl57-UCpKmNgYiKwyhkU4vMNDnE",
    "stake": 10000000000,
    "startTimestamp": 1720720620813,
    "stakeWeight": 1,
    "tenureWeight": 0.41453703703703704,
    "gatewayPerformanceRatio": 1,
    "observerPerformanceRatio": 1,
    "gatewayRewardRatioWeight": 1,
    "observerRewardRatioWeight": 1,
    "compositeWeight": 0.41453703703703704,
    "normalizedCompositeWeight": 0.0018972019546783507
  }
]
```

#### `crankEpochStep(options?)`

高级的,无授权的时代曲柄。 通过 **一个 每个呼叫的步数** 并返回它所采取的动作 —— 运行在循环上( 这就是 独立起跑器和观察式起跑器 它拥有整个 顺序,所以你不会 协调个人指示自己:

`create` → `tally` → `prescribe` → `distribute` → `close` - 关闭一个时代的 先观察PDA`close_observation`这样 `close_epoch` 不回头.. 加上无权限维护的闲置尾巴 : `compound` 代表奖励, `update_demand_factor`,以及 `prune_returned_names`。近路径是 非婚生: 清理失败永远不会阻碍下一个时代的创建.

```typescript
const ario = ARIO.init({ rpc, rpcSubscriptions, signer });

// one step
const result = await ario.crankEpochStep();
// → { action, epochIndex?, txId?, progress? }
//   action ∈ create | tally | prescribe | distribute | close
//          | close_observation | compound | update_demand_factor
//          | prune_returned_names | idle

// or drive it on an interval
setInterval(async () => {
  const r = await ario.crankEpochStep();
  if (r.action !== 'idle') console.log(r.action, r.epochIndex, r.txId);
}, 60_000);
```

所有选项都是可选的 : `batchSize`, (中文(简体) ), `enableClose`, (中文(简体) ), `epochRetention`, (中文(简体) ), `enableCompound`, (中文(简体) ), `compoundMinPendingRewards`, (中文(简体) ), `enableDemandFactorRoll`, (中文(简体) ), `enablePrune`, (中文(简体) ), `pruneBatchSize`, (中文(简体) ), `nameRegistryAccount`。 。 。 .

### 主要名称

#### `getPrimaryNames({ cursor, limit, sortBy, sortOrder })`

检索所有主要名称并按指定标准进行排序。 这个 `cursor` 用于 pagination 是上一个请求的姓氏 .

```typescript
const ario = ARIO.init({ rpc });
const names = await ario.getPrimaryNames({
  cursor: "ao", // this is the last name from the previous request
  limit: 1,
  sortBy: "startTimestamp",
  sortOrder: "desc",
});
```

产出

```json
{
  "sortOrder": "desc",
  "hasMore": true,
  "totalItems": 100,
  "limit": 1,
  "sortBy": "startTimestamp",
  "nextCursor": "arns",
  "items": [
    {
      "name": "arns",
      "owner": "HwFceQaMQnOBgKDpnFqCqgwKwEU5LBme1oXRuQOWSRA",
      "processId": "bh9l1cy0aksiL_x9M359faGzM_yjralacHIUo8_nQXM",
      "startTimestamp": 1719356032297
    }
  ]
}
```

#### `getPrimaryName({ name, address })`

获取给定名称或地址的主名.

```typescript
const ario = ARIO.init({ rpc });
const name = await ario.g
```

## 常见问题

### 如何安装 @ar\.io/sdk？

在项目目录运行 npm install @ar\.io/sdk，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 ar\.io，可以用 npx ar\.io 直接运行。

### @ar\.io/sdk 支持 TypeScript 吗？

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

### @ar\.io/sdk 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @ar\.io/sdk 需要什么版本的 Node\.js？

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

### @ar\.io/sdk 可以商用吗？

@ar\.io/sdk 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @ar\.io/sdk 的下载量有多少？

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

### @ar\.io/sdk 还在维护吗？

最新版本 4\.5\.2 发布于 2026/10/10（28 天前）；至今共发布 539 个版本，其中过去 12 个月发布了 129 个；首次发布于 2024/03/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

