# @boing-network/boing-sdk 中文文档

规范地址：https://npmcn.com/package/%40boing-network/boing-sdk/

版本：0\.5\.40
npm 元数据更新时间：2026-11-05T22:31:07.615Z
中文译文更新时间：2026-11-08T10:13:21.817Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40boing-network/boing-sdk
原文对照：https://npmcn.com/package/%40boing-network/boing-sdk/?lang=original

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

- 包体积（解压后）：1.9 MB，285 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：2 个
- 首次发布：2026-10-23T17:08:05.996Z
- 最新版本发布：2026-11-05T22:31:07.431Z
- 近 30 天下载量：3329（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：17（近 12 个月 17 个）

## 中文简介

无缝SDK 用于建于波音网络

## 安装

```sh
npm install @boing-network/boing-sdk
```

也可以使用：`pnpm add @boing-network/boing-sdk`、`yarn add @boing-network/boing-sdk`、`bun add @boing-network/boing-sdk`

## README

# 宾SDK

> 🛠️ **开发者 :** 这是用于 Boing JSON-RPC 的 TypeScript 客户端、 QA 错误、 本地的 DEX 调用数据以及钱包胶水 .  
> 👋 **每天用户 :** 您直接通过 [吹嘘](https://boing.express/), (中文(简体) ), [boing.观察者](https://boing.observer/),以及 [bo. 财务](https://boing.finance/)。 。 。 .  
> 🛰️ **运算符 :** 在 SDK 之后 **来源** 更改, 运行 `npm run build` 在这里,承诺 `dist/`教学 `file:` 消费者需要新鲜的 `dist/`。 。 。 .

类型脚本/ JavaScript 客户端 [宝英网](https://github.com/Boing-Network/boing.network):键入了RPC客户端,hex公用事业,以及结构错误(包括QA拒绝反馈).

```mermaid
flowchart LR
  App[dApp / finance / explorer] --> SDK["@boing-network/boing-sdk"]
  SDK --> RPC[boing_chainHeight / getAccount / qaCheck / listDex*]
  SDK --> Wallet[window.boing helpers]
```

## 安装

**消费者(npm):**

```bash
npm install @boing-network/boing-sdk
```

当前注册最近: 参见 npm 包页( 此 repo's) `package.json` 实值 **`0.5.39`**) (中文(简体) ). 软件包页面 : [npmjs.com/package/@boing-network/boing-sdk (英语)](https://www.npmjs.com/package/@boing-network/boing-sdk)执行 **没有** 安装未扫描 [`boing-sdk`](https://www.npmjs.com/package/boing-sdk) ——该名称被废弃/被锁入,并且不会被这个repo所更新.

**Monorepo/ 贡献者** (本目录):

```bash
npm install
npm run build
```

### 通过 `file:` (例如:. [bo. 财务](https://github.com/Boing-Network/boing.finance)(中文(简体) )

编译的产出存在于 **`dist/`**,这是 **承诺** 内 `Boing-Network/boing.network` (调用根) `.gitignore` 忽略通用 `dist/` 但没有 `boing-sdk/dist/`) (中文(简体) ). 因此,克隆和CI兄弟姐妹可以使用 `dist/index.js` 没有单独的SDK建设步骤.

当你改变 SDK **来源** (单位:千美元)`src/`),运行 `npm run build` 内 `boing-sdk` 并承诺更新 **`dist/`**编辑 **`boing-sdk`** 工作流程失败, 如果 `dist/` 从 TypeScript 构造输出出漂移 .

**bo. 财务** 检查 `boing.network` 只有这样 `file:` 路径解析; 它不首先构建 SDK . **bo. 财务**’: `frontend/scripts/postinstall-boing-sdk.mjs` 只运行 `npm run build` 在链接软件包中 `dist/index.js` 缺少(例如本地 SDK 开发或断出)和 **安装失败** 如果那个建筑不成功的话.

### 发布到 npm (CI)

登记册上的软件包名称 : **`@boing-network/boing-sdk`** (范围). 未瞄准 `boing-sdk` 被遗弃/被锁住 **没有** 从本工作流程中发布.

范围化出版为直播. 常规释放使用 **发布 bing- sdk** GitHub 动作( R)`.github/workflows/boing-sdk-publish.yml`标签 `boing-sdk/v*` 带有存储器秘密 **`NPM_TOKEN`**。 。 。 .

**需要的 GitHub 密钥( 如果缺少 ) :**

1.  打开 [npmjs.com (英语)](https://www.npmjs.com/) 作为可以出版的用户 **`@boing-network/boing-sdk`**,创建 **自动化** 指使符(或颗粒式指使符,并在该包上发布;自动化在CI中避免交互的OTP).
2.  在那个 **`Boing-Network/boing.network`** 重传 : **设置 – 秘密和变量 – 动作 – 新的仓库秘密**。 。 。 .
3.  名称 : **`NPM_TOKEN`**。数值: npm 符号(`npm_…`) (中文(简体) ).
4.  未经出版的烟检: **动作 – 发布 bing-sdk – 运行工作流程** 与 **auth only = 真实** (预期) `npm whoami` ))),以获得成功.

历史标签发布失败 **`ENEEDAUTH`** 当这个秘密不存在的时候 `NODE_AUTH_TOKEN` (见CI)。 如果缺少密钥, 工作流程现在以明显的错误快速失败 .

**每次发布** (之后) (中文(简体) ) `package.json` 版本 + `CHANGELOG` + 承诺 `dist/` 开始 `main`:

```bash
git checkout main && git pull origin main
node -p "require('./boing-sdk/package.json').version"   # e.g. 0.5.39
git tag -a "boing-sdk/v$(node -p "require('./boing-sdk/package.json').version")" -m "@boing-network/boing-sdk $(node -p "require('./boing-sdk/package.json').version")"
git push origin "boing-sdk/v$(node -p "require('./boing-sdk/package.json').version")"
```

看着 **行动-公布bing-sdk**。然后: `npm view @boing-network/boing-sdk version`. 为FreshMint和其他应用软件安装优先登记册(`npm install @boing-network/boing-sdk`); GitHub (中文(简体) ) `path:/boing-sdk` 针头不是首选的消费路径.

## 测试

-   **单位/ 离线 :** `npm test` – Vitest;不需要运行中的波音节点.
-   **可选的RPC融合:** `tests/rpcIntegration.test.ts` 仅在 **`BOING_INTEGRATION_RPC_URL`** 设置( 例如) . `http://127.0.0.1:8545`) (中文(简体) ). 如果它是未设置,维特 **跳过** 整个套房的默认都离线了 核心案件:同步状态(或 **`getBlockByHeight`** 倒置),块+收据, **`getLogsChunked`**, (中文(简体) ), **`fetchBlocksWithReceiptsForHeightRange`**, (中文(简体) ), **`getTransactionReceipt`** (不详 tx ) **`null`**) (中文(简体) ). 返回的终点 **\-32601号** 页:1 **`boing_getSyncState`** 或者说 **`boing_getLogs`** 仍然经过有记录的地方。 与 **`BOING_EXPECT_FULL_RPC=1`** (见 **`.github/workflows/boing-sdk-rpc-integration.yml`**),额外测试称 **`boing_clientVersion`**, (中文(简体) ), **`boing_rpcSupportedMethods`**,以及 **`probeBoingRpcCapabilities`** (6/6) 核心方法,包括 **`boing_getNetworkInfo`** 编号 : **`boing_getBlockByHeight`** 编号 : **`boing_getTransactionReceipt`**) (中文(简体) ).
-   **运算符/ 教程烟雾( 从 Vitest 分离) :** 内 **`examples/native-boing-tutorial`**, (中文(简体) ), **`npm run preflight-rpc`** (或 **`check-testnet-rpc`** 仅限) **`BOING_RPC_URL`** —— CI 启动本地节点后运行相同的脚本;见 [业务负责人-指挥官](https://npmcn.com/package/%40boing-network/docs/NODE-OPERATOR-COMMANDS.md)。从 **单列波根**,同样的 **`npm run <script>`** 教程包中的名称代表( 参见 root) **`package.json`**) (中文(简体) ).
-   **`npm run verify`** - 与 `npm test`,然后打印一个简短的注释,解释env var缺失时的跳跃.

## 快开始

```ts
import { createClient, BoingRpcError, explainBoingRpcError } from '@boing-network/boing-sdk';

// Local node (no retries needed):
const local = createClient('http://localhost:8545');

// Public testnet RPC — recommend maxRetries (default is 0):
const client = createClient({
  baseUrl: 'https://testnet-rpc.boing.network/',
  maxRetries: 3,
});

// Read chain and account state
const height = await client.chainHeight();
const account = await client.getAccount('0x' + '00'.repeat(32)); // 32-byte hex
console.log(account.balance, account.nonce, account.stake);

// Pre-flight QA check before deploying a contract
const qa = await client.qaCheck('0x600160005260206000f3'); // hex bytecode
if (qa.result === 'reject') {
  console.error('QA rejected:', qa.rule_id, qa.message);
} else if (qa.result === 'allow') {
  // Submit signed tx (hex from Rust CLI or future signer)
  await client.submitTransaction(hexSignedTx);
}

// Handle structured QA / rate-limit errors on submit
try {
  await client.submitTransaction(hexSignedTx);
} catch (e) {
  if (e instanceof BoingRpcError && e.isQaRejected) {
    const { rule_id, message } = e.qaData ?? {};
    console.error('Deployment rejected:', rule_id, message);
  }
  if (e instanceof BoingRpcError) {
    console.error(explainBoingRpcError(e)); // HTTP 429 / -32016 / gateway limits
  }
  throw e;
}
```

**公开RPC / 429:** 云花在前头 `testnet-rpc.boing.network` 可能返回 **HTTP 429 (韩语)**默认 **`maxRetries` 实值 `0`**; 公共RPC通行证 **`maxRetries: 2–3`** 如此短暂的极限和水龙头 **\- 32016年),中国大陆名将** 可退后( 荣誉) `Retry-After`) (中文(简体) ). 见 [BOING-RPC-ERROR-CODES-FOR-DAPPS.md 页面存档备份,存于互联网档案馆](https://npmcn.com/package/%40boing-network/docs/BOING-RPC-ERROR-CODES-FOR-DAPPS.md)。 。 。 .

## API 密码

-   **创建 Client( 配置)** —— 说 `config` 可以是 URL 字符串或 `{ baseUrl, fetch?, timeoutMs?, maxRetries?, retryBaseDelayMs? }`。默认超时30s;设置 `timeoutMs: 0` 以禁用。 默认 **`maxRetries: 0`** (无复试); 使用 **`2–3`** 对公众测试网RPC.
-   **宾客** ——所有RPC的打入方法(32字节账户/hash参数在发送前在当地验证) :
    -   **RPC探测器** —— 说 **`probeBoingRpcCapabilities`** 返回时 **`{ clientVersion, supportedMethods, methods }`** 加号 **`countAvailableBoingRpcMethods`**, (中文(简体) ), **`explainBoingRpcProbeGaps`** (单位:千美元)`rpcCapabilities.ts`: 探测器 **\-32601号** 缺少方法; CLI : **`npm run build`** 接下来 **`npm run probe-rpc`** (或 **`npm run probe-rpc`** 从 repo 根; **`diagnosis`** jSON 中解释 stale 节点对当前 repo;节点发现: **`boing_clientVersion`**, (中文(简体) ), **`boing_rpcSupportedMethods`**
    -   `chainHeight()`, (中文(简体) ), `getBalance(hexAccountId)`, (中文(简体) ), `getAccount(hexAccountId)`
    -   `getBlockByHeight(height, includeReceipts?)`, (中文(简体) ), `getBlockByHash(hexHash, includeReceipts?)`
    -   `getTransactionReceipt(hexTxId)`, (中文(简体) ), `getLogs(filter)` ——有界限的日志查询([RPC-API-SPEC.md (中文(简体) )](https://npmcn.com/package/%40boing-network/docs/RPC-API-SPEC.md)(中文(简体) )
    -   接收/记录助手: `normalizeTopicWord`, (中文(简体) ), `iterBlockReceiptLogs`, (中文(简体) ), `filterReceiptLogsByTopic0`, (.....`receiptLogs.ts`; 见 [(原始内容存档于2019-06-26) (中文(简体) )](https://npmcn.com/package/%40boing-network/docs/INDEXER-RECEIPT-AND-LOG-INGESTION.md)(中文(简体) )
    -   `getAccountProof(hexAccountId)`, (中文(简体) ), `verifyAccountProof(hexProof, hexStateRoot)`
    -   `simulateTransaction(hexSignedTx)`, (中文(简体) ), `submitTransaction(hexSignedTx)`
    -   高级别资金流动: `submitTransferWithSimulationRetry`, (中文(简体) ), `submitContractCallWithSimulationRetry`, (中文(简体) ), `submitDeployWithPurposeFlow` (见 **模拟 访问列表 提交** (见下文)
    -   **链接的 NFT 符号 (链上注册)** 公共测试网登记实况 **`CANONICAL_BOING_TESTNET_LINKED_NFT_TOKEN_REGISTRY_HEX`** (单位:千美元)`0xf704485a…655dd` 打开 `https://testnet-rpc.boing.network/`盐 `BOING_NFT_TOKEN_LINK_REG_V2`,选择者 `0xE0`– 说吧 –`0xE8`页:1 `0xebf9f019…3dd8` 仅作为历史 **`CANONICAL_BOING_TESTNET_LINKED_NFT_TOKEN_REGISTRY_V1_HEX`**页:1 **`buildLinkedNftTokenProjectPack`** (联合部署+索赔x2+登记册), **`buildLinkedNftTokenPairDeploys`**, (中文(简体) ), **`buildLinkedNftTokenRegisterFlowTxs`**,登记册部署/编码器;可选缓存计划 **`boing.linked_nft_token.v1`** (单位:千美元)`linkedNftTokenProjectPack.ts`, (中文(简体) ), `linkedNftTokenRegistry.ts`, (中文(简体) ), `linkedNftToken.ts`· ; [(原始内容存档于2019-10-21) (英语). Bing-LINKED-NFT-Token.md](https://npmcn.com/package/%40boing-network/docs/BOING-LINKED-NFT-TOKEN.md)(中文(简体) )
    -   **构建者证明(链上登记册)** 公共测试网登记实况 **`CANONICAL_BOING_TESTNET_BUILDER_ATTESTATION_REGISTRY_HEX`** (单位:千美元)`0x734077a9…1816` 打开 `https://testnet-rpc.boing.network/`盐 `BOING_BUILDER_ATTEST_REG_V1`,选择者 `0xE0`– 说吧 –`0xE6`;双重资产求偿人 **单独** 那是从伙伴那里发出的; **`buildBuilderAttestationAttestFlowTxs`**,部署/编码器`builderAttestationRegistry.ts`· ; [迎战 - 迎击 - 迎击. md](https://npmcn.com/package/%40boing-network/docs/BOING-BUILDER-ATTESTATION.md)) (中文(简体) ). 软钱包证明不是权威 .
    -   **固定本地部署( Boing Express tx 对象)** —— 说 `buildContractDeployMetaTx` (可选) **`create2SaltHex`** 编号 : **`create2_salt`**, (中文(简体) ), **`buildReferenceFungibleDeployMetaTx`** 编号 : **`buildReferenceFungibleSecuredDeployMetaTx`** 编号 : **`buildReferenceNftCollectionDeployMetaTx`** (wizard友好的一通电话建筑商), `resolveReferenceFungibleTemplateBytecodeHex`, (中文(简体) ), **`resolveReferenceFungibleSecuredTemplateBytecodeHex`**, (中文(简体) ), `resolveReferenceNftCollectionTemplateBytecodeHex`, (中文(简体) ), `ensure0xHex`, (中文(简体) ), `DEFAULT_REFERENCE_FUNGIBLE_SECURED_TEMPLATE_BYTECODE_HEX`, (中文(简体) ), `REFERENCE_FUNGIBLE_TEMPLATE_VERSION`, (中文(简体) ), **`REFERENCE_FUNGIBLE_SECURED_TEMPLATE_VERSION`**, (中文(简体) ), `REFERENCE_NFT_COLLECTION_TEMPLATE_VERSION` (单位:千美元)`canonicalDeployArtifacts.ts`· ; [(原始内容存档于2019-09-26) (英语). BOING-CANONICAL-DEDIY-ATIFACTS.md](https://npmcn.com/package/%40boing-network/docs/BOING-CANONICAL-DEPLOY-ARTIFACTS.md)); 多网络向导 : **`isBoingTestnetChainId`**, (中文(简体) ), **`normalizeBoingChainIdHex`**, (中文(简体) ), **`BOING_TESTNET_CHAIN_ID_*`** (单位:千美元)`chainIds.ts`);审查步骤质量保证(`dappDeploy.ts`· ; [(原始内容存档于2018-09-26) (英语). Boing-Dapp-Integration.md](https://npmcn.com/package/%40boing-network/docs/BOING-DAPP-INTEGRATION.md) § 翻译: **一个向导,两个后端**: **`buildAndPreflightReferenceFungibleDeploy`**, (中文(简体) ), **`buildAndPreflightReferenceNftCollectionDeployMeta`**, (中文(简体) ), **`preflightContractDeployMetaWithUi`**, (中文(简体) ), **`describeContractDeployMetaQaResponse`**, (中文(简体) ), **`preflightContractDeployMetaQa`**, (中文(简体) ), **`BOING_QA_PLACEHOLDER_DESCRIPTION_HASH_HEX`**
    -   **通用调用数据单词** —— 说 `calldataSelectorLastByte`, (中文(简体) ), `calldataU128BeWord`, (中文(简体) ), `calldataAccountIdWord`, (中文(简体) ), `calldataFixedWord32`, (中文(简体) ), `concatCalldata` (布局与参考符号/NFT编码器相同;用于定制合同)
    -   **输入的呼叫构建器** —— 说 `BoingCalldataWord`, (中文(简体) ), `assertBoingCalldataWord`, (中文(简体) ), `boingWordU128` 编号 : `boingWordAccount` 编号 : `boingWordFixed` 编号 : `boingWordSelector` (32字节的参数词), **`encodeBoingCall(selectorLowByte, args)`** (参考-风格第一单词+参数词)
    -   **最小调用 ABI (Boing- native)** —— 说 `encodeBoingCallTyped(selector, ['u128','account',…], values)`, (中文(简体) ), `encodeBoingCallFromAbiArgs`, (中文(简体) ), **`BoingReferenceCallDescriptors`** (固定宽度参考符 / NFT / 原生AMM 版式) + **`encodeBoingCallFromDescriptor`** – 不是固态 ABI / keccak4; 匹配 `docs/BOING-REFERENCE-TOKEN.md`, (中文(简体) ), `BOING-REFERENCE-NFT.md`, (中文(简体) ), `NATIVE-AMM-CALLDATA.md`
    -   **参考 NFT** —— 说 `SELECTOR_MINT_BATCH` (单位:千美元)`0x06`, (中文(简体) ), **`MAX_REFERENCE_NFT_MINT_BATCH`** (500个), **`encodeReferenceMintBatchCalldata`** 编号 : **`encodeReferenceMintBatchCalldataHex`** (排出数) `96+64n`; 零散列跳过元数据 `SSTORE`),加上96字节 `encodeReferenceOwnerOf*` 编号 : `TransferNft*` 编号 : `SetMetadataHash*`; 存储密钥助手( e)`referenceNft.ts`) (中文(简体) ). **别** 编码 `mint_batch` 通过 `BoingReferenceCallDescriptors`模板版本 **`"3"`**,文物编号 **`boing.reference_nft_collection.v0`**; 倾卸线 3 / `embed-reference-nft-collection-template-hex.mjs`需求 `GAS_PER_CONTRACT_CALL = 40_000_000` 在全n=500的节点上(合并后Fly public testnet重新部署)。 10克薄荷:块 **20×500 (中文(简体) )** – OpenSea规模媒体上传QQ一波能共识tx.
    -   **原生CP池(MVP)** —— 说 `buildNativeConstantProductPoolAccessList`, (中文(简体) ), `buildNativeConstantProductContractCallTx`, (中文(简体) ), `mergeNativePoolAccessListWithSimulation`· ; **`fetchNativeConstantProductReserves`**, (中文(简体) ), **`fetchNativeConstantProductPoolSnapshot`** (有争议的储备+总LP ± 签名人LP), **`fetchNativeConstantProductTotalLpSupply`**, (中文(简体) ), **`fetchNativeConstantProductSwapFeeBps`** (v3/v4) (中文(简体) ), **`fetchNativeAmmSignerLpBalance`**, (中文(简体) ), **`decodeBoingStorageWordU128`**, (中文(简体) ), **`decodeNativeAmmAddLiquidityReturnLpMinted`**, (中文(简体) ), **`decodeNativeAmmLogDataU128Triple`**,保留 / 总计- LP / 符号 / **互换收费bps** 关键助手( e)`nativeAmmPool.ts`(三); **`tryParseNativeAmmLog2`**, (中文(简体) ), **`filterMapNativeAmmRpcLogs`** (单位:千美元)`nativeAmmLogs.ts`(三); **`constantProductAmountOut`** 编号 : **`constantProductAmountOutWithFeeBps`** 编号 : **`constantProductAmountOutNoFee`** 编号 : **`encodeNativeAmmSetTokensCalldata`** 编号 : **`encodeNativeAmmSetSwapFeeBpsCalldata`** 编号 : **`NATIVE_CP_SWAP_FEE_BPS`** 编号 : **`NATIVE_AMM_TOPIC_*_HEX`** 编号 : **`nativeAmmLogTopic0Utf8`** (单位:千美元)`nativeAmm.ts`· ; [天然-阿姆-卡尔达塔(Md)](https://npmcn.com/package/%40boing-network/docs/NATIVE-AMM-CALLDATA.md)(三); **LP 保险库** —— 说 `encodeNativeAmmLpVaultConfigureCalldata`, (中文(简体) ), `buildNativeAmmLpVaultDepositAddAccessList`, (中文(简体) ), `buildNativeAmmLpVaultDepositAddContractCallTx`,合并帮助(`nativeAmmLpVault.ts`· ; [天然-AMM-LP-VAULT.md](https://npmcn.com/package/%40boing-network/docs/NATIVE-AMM-LP-VAULT.md)(三); **LP 共享令牌** —编码器+ `buildLpShareTokenAccessList`, (中文(简体) ), `buildLpShareTokenContractCallTx`, (中文(简体) ), `mergeLpShareTokenAccessListWithSimulation` (单位:千美元)`nativeLpShareToken.ts`· ; [天然-液压-托能](https://npmcn.com/package/%40boing-network/docs/NATIVE-LP-SHARE-TOKEN.md)(三); **`CANONICAL_BOING_TESTNET_NATIVE_CP_POOL_HEX`** (单位:千美元)`canonicalTestnet.ts`——便利镜 [RPC-API-SPEC.md (中文(简体) )](https://npmcn.com/package/%40boing-network/docs/RPC-API-SPEC.md) § 原生常量产品AMM( 当链上犬花池改变时跳出)
    -   **原生DEX( 页目录+路由器)** —— 说 [投影-自动-DEX-Capibility.md](https://npmcn.com/package/%40boing-network/docs/BOING-NATIVE-DEX-CAPABILITY.md):工厂呼叫数据+访问列表(`nativeDexFactory.ts`, (中文(简体) ), **`fetchNativeDexFactoryPairsCount`**, (中文(简体) ), **`findNativeDexFactoryPoolByTokens`**, (中文(简体) ), **`Log3`** 解析器( a)`nativeDexFactoryPool.ts`, (中文(简体) ), `nativeDexFactoryLogs.ts`· ; [自然-事实](https://npmcn.com/package/%40boing-network/docs/NATIVE-DEX-FACTORY.md)); 分类账-路由器前向调用数据 + tx 构建器 **v1–v3 (英语)** (单位:千美元)`nativeDexLedgerRouter.ts`· ; [天然-DEX-LEGER-ROUTER.md](https://npmcn.com/package/%40boing-network/docs/NATIVE-DEX-LEDGER-ROUTER.md)(三); **互换2** + 键 **多跳键** 编码器( e)`nativeDexSwap2Router.ts`· ; [天然-DEX-SWAP2-ROUTER.md](https://npmcn.com/package/%40boing-network/docs/NATIVE-DEX-SWAP2-ROUTER.md), (中文(简体) ), [天然-DEX-Multihop-SWAP-ROUTER.md](https://npmcn.com/package/%40boing-network/docs/NATIVE-DEX-MULTIHOP-SWAP-ROUTER.md)); CREATE2预测器+盐类(`create2.ts`; 辅导 **`deploy-native-dex-directory`** (单位:千美元)[实例/内在-协助-辅导](https://npmcn.com/package/%40boing-network/examples/native-boing-tutorial/) 读取第7c2节
    -   **无缝默认 + 钱包胶水** —— 说 **`fetchNativeDexIntegrationDefaults`** 编号 : **`mergeNativeDexIntegrationDefaults`** (单位:千美元)`dexIntegration.ts`: 合并 **`boing_getNetworkInfo`**。 。 。 .**`end_user`** (单位:千美元)**`BOING_CANONICAL_NATIVE_CP_POOL`** 编号 : **`BOING_CANONICAL_NATIVE_DEX_FACTORY`**) 带有超载并 **6913 (英语)** 嵌入式池回落; **`fetchNativeDexFactoryRegisterLogs`** 用于块 **`register_pair`** 扫描; **`getInjectedEip1193Provider`**, (中文(简体) ), **`boingSendTransaction`**, (中文(简体) ), **`requestAccounts`**, (中文(简体) ), **`readChainIdHex`**, (中文(简体) ), **`providerSupportsBoingNativeRpc`** (单位:千美元)`walletProvider.ts`· ; [(原始内容存档于2018-09-26) (英语). Boing-Dapp-Integration.md](https://npmcn.com/package/%40boing-network/docs/BOING-DAPP-INTEGRATION.md)(中文(简体) )
    -   **目录快照( 只有Boing)** —— 说 **`fetchNativeDexDirectorySnapshot`** (默认 + **`pairs_count`** + 可选日志回填, **`pickNativeDexPoolFromRegisterLogs`**, (中文(简体) ), **`resolveNativeDexPoolForTokens`** (单位:千美元)`logs` | `simulate` | `auto`, (中文(简体) ), **`nativeDexPairKey`**, (中文(简体) ), **`suggestNativeDexRegisterLogCatchUpRange`** (单位:千美元)`nativeDexDirectory.ts`; 无外部链 RPC)
    -   **DEX 上飞机+飞行前** —— 说 **`formatBoingNativeDexNotEvmDisclaimer`**, (中文(简体) ), **`describeNativeDexDefaultGaps`**, (中文(简体) ), **`assertBoingNativeDexToolkitRpc`**, (中文(简体) ), **`formatNativeDexToolkitPreflightForUi`**, (中文(简体) ), **`buildNativeCpPoolSwapExpressTx`**, (中文(简体) ), **`buildNativeDexMultihopSwapExpressTxFromRoute128`** 编号 : **`160`**, (中文(简体) ), **`applyNativeDexMultihopSimulationToContractCallTx`** (单位:千美元)`nativeDexSeamless.ts`; 钱包副本 **`BOING_WALLET_RPC_METHODS_NATIVE_DAPP`**, (中文(简体) ), **`explainEthSendTransactionInsufficientForBoingNativeCall`**, (中文(简体) ), **`connectInjectedBoingWallet`**, (中文(简体) ), **`mapInjectedProviderErrorToUiMessage`** (单位:千美元)`walletProvider.ts`(中文(简体) )
    -   **CP通路+聚合(脱链)** —— 说 **`quoteCpPoolSwap`**, (中文(简体) ), **`rankDirectCpPools`**, (中文(简体) ), **`findBestCpRoutes`**, (中文(简体) ), **`pickFirstMultihopCpRoute`**, (中文(简体) ), **`uniqueSortedTokenHex32FromCpRoute`**, (中文(简体) ), **`minOutFloorAfterSlippageBps`**, (中文(简体) ), **`encodeNativeDexMultihopRouterCalldata*FromRoute`**, (中文(简体) ), **`quoteCpEvenSplitAcrossDirectPools`**, (中文(简体) ), **`hydrateCpPoolVenuesFromRpc`**, (中文(简体) ), **`fetchCpRoutingFromDirectoryLogs`** (单位:千美元)`nativeDexRouting.ts`(三); **`buildNativeDexMultihopRouterAccessList`**, (中文(简体) ), **`mergeNativeDexMultihopRouterAccessListWithSimulation`** (单位:千美元)`nativeAmmPool.ts`(中文(简体) )
    -   **CREATE2 地址预测** —— 说 **`predictCreate2ContractAddress`**, (中文(简体) ), **`predictNativeCpPoolCreate2Address`** . **`predictNativeCpPoolV5Create2Address`**, (中文(简体) ), **`nativeCpPoolCreate2SaltV1Hex`** . **`nativeCpPoolCreate2SaltV5Hex`**, (中文(简体) ), **`NATIVE_CP_POOL_CREATE2_SALT_V1`** . **`V5`** (单位:千美元)`create2.ts`; 匹配 `boing_primitives::create2_contract_address` 编号 : `native_amm.rs`; 见 [天然-阿姆-卡尔达塔(Md)](https://npmcn.com/package/%40boing-network/docs/NATIVE-AMM-CALLDATA.md) § CREATE2) 维基语录链接:名人名言
    -   **指数级读取** —— 说 **`getIndexerChainTips`** 编号 : **`clampIndexerHeightRange`** 编号 : **`planIndexerChainTipsWithFallback`** 编号 : **`planIndexerCatchUp`** (单位:千美元)`indexerSync.ts`; 后退时 **`boing_getSyncState`** 实值 **\-32601号**(三); **`fetchBlocksWithReceiptsForHeightRange`** (回放路径:完整块+收;演示: [获取块距. mjs](https://npmcn.com/package/%40boing-network/examples/native-boing-tutorial/scripts/fetch-blocks-range.mjs), (中文(简体) ), [(原始内容存档于2013-10-12). indexer-ingest-tick.mjs](https://npmcn.com/package/%40boing-network/examples/native-boing-tutorial/scripts/indexer-ingest-tick.mjs)(三); **`summarizeIndexerFetchGaps`**, (中文(简体) ), **`mergeInclusiveHeightRanges`**, (中文(简体) ), **`unionInclusiveHeightRanges`**, (中文(简体) ), **`subtractInclusiveRangeFromRanges`**, (中文(简体) ), **`blockHeightGapRowsForInsert`**, (中文(简体) ), **`nextContiguousIndexedHeightAfterOmittedFetch`** (单位:千美元)`indexerBatch.ts`, (中文(简体) ), `indexerGaps.ts`; 已刷出空白, D1 行形状, 存档回填减; `getLogsChunked` 编号 : `planLogBlockChunks` (单位:128个区间) [RPC-API-SPEC.md (中文(简体) )](https://npmcn.com/package/%40boing-network/docs/RPC-API-SPEC.md); 可选 **`maxConcurrent`** 以圆木和取高程; **`mapWithConcurrencyLimit`**· ; **`flattenReceiptsFromBundles`**· ; `fetchReceiptsForBlockHeight`· ; **`fetchReceiptsForHeightRange`** (可选) `onMissingBlock: 'omit'`——摄入伪流: [(原始内容存档于2019-06-26) (中文(简体) )](https://npmcn.com/package/%40boing-network/docs/INDEXER-RECEIPT-AND-LOG-INGESTION.md); 示例 DDL : [工具/观测器-索引-schema.sql](https://npmcn.com/package/%40boing-network/tools/observer-indexer-schema.sql)JSON + SQL入声: [实例/观测者-最参考](https://npmcn.com/package/%40boing-network/examples/observer-ingest-reference/) (单位:千美元)`ingest-tick`, (中文(简体) ), **`ingest-sqlite-tick`** + 键 **`BOING_SQLITE_PATH`**); D1克龙样本: [实例/观察员-d1-工人](https://npmcn.com/package/%40boing-network/examples/observer-d1-worker/); 积压 : [下一个步骤-未来-工作.md](https://npmcn.com/package/%40boing-network/docs/NEXT-STEPS-FUTURE-WORK.md)
    -   **通用合同部署指数** —— 说 **`rpcTransactionJsonToTransactionInput`**, (中文(简体) ), **`transactionIdFromUnsignedRpcTransaction`**, (中文(简体) ), **`extractUniversalContractDeploymentsFromBlock`** 编号 : **`extractUniversalContractDeploymentsFromBlockJson`**, (中文(简体) ), **`CONTRACT_DEPLOY_INIT_CODE_MARKER`**,行类型(`universalContractDeployIndex.ts`; 已运出 **0.3.1+ (单位:千美元)**) (中文(简体) ). 可选主机实现 + REST/SSE : [HANDOFF Universal Contact 部署 Indexer.md](https://npmcn.com/package/%40boing-network/docs/HANDOFF_Universal_Contract_Deploy_Indexer.md), (中文(简体) ), **`workers/deploy-registry-indexer`**。 。 。 .
    -   **固定合同提交人** —— 说 `createNativeContractSubmitter({ client, secretKey32, senderHex, contractHex, accessList? })` → `.submitCalldata(bytes)`
    -   `registerDappMetrics(hexContract, hexOwner)`, (中文(简体) ), `submitIntent(hexSignedIntent)`
    -   `qaCheck(hexBytecode, purposeCategory?, descriptionHash?, assetName?, assetSymbol?)` - 未提交飞行前QA(与节点相同的参数命令) `boing_qaCheck`(中文(简体) )
    -   `qaPoolList()`, (中文(简体) ), `qaPoolConfig()`, (中文(简体) ), `qaPoolVote(txHashHex, voterHex, vote, signedVoteTxHex?)` - 用于未确定部署的质量保证库`public_membership` 需要签名 `QaPoolVote` tx) (韩语)
    -   `getNetworkFeePolicy()`, (中文(简体) ), `operatorApplyFeePolicy(json)` - 本土收费/国库税
    -   `faucetRequest(hexAccountId)` ——仅测试网
-   **波音Rpc错误** —— 说 `code`, (中文(简体) ), `message`, (中文(简体) ), `data`, (中文(简体) ), `method`· ; `isQaRejected`, (中文(简体) ), `isQaPendingPool`, (中文(简体) ), `pendingPoolTxHash`, (中文(简体) ), `isQaPoolDisabled`, (中文(简体) ), `isQaPoolFull`, (中文(简体) ), `isQaPoolDeployerCap`, (中文(简体) ), `qaData`· ; `toString()` 用于伐木.
-   **十六进制助手** —— 说 `ensureHex`, (中文(简体) ), `bytesToHex`, (中文(简体) ), `hexToBytes`, (中文(简体) ), `accountIdToHex`, (中文(简体) ), `hexToAccountId`, (中文(简体) ), `validateHex32`, (中文(简体) ), **`isBoingNativeAccountIdHex`** (32字节账户id检查多wallet向导).

所有32字节的ID( 账号、 散列) 是十六进制字符串, 无论是否 `0x` 前缀。 请求前丢出无效的十六进制或错误的长度 .

## Tokens (镜像) `boing token`(中文(简体) )

部署,薄荷,转移和读取 犬类参考可替换代币。 输出与 Rust CLI 字节相同(见 [投射-射入.md](https://npmcn.com/package/%40boing-network/docs/BOING-REFERENCE-TOKEN.md#sdk-token-helpers-boing-sdk-mirrors-boing-token)) (中文(简体) ).

```ts
import { createClient, deployBoingToken, transferBoingToken, getBoingTokenBalance, hexToBytes } from '@boing-network/boing-sdk';

const client = createClient('https://testnet-rpc.boing.network');
const seed = hexToBytes(process.env.BOING_SECRET_HEX!); // 32-byte Ed25519 seed; never hard-code or commit it

const { tokenHex, deployerHex } = await deployBoingToken(client, seed, {
  symbol: 'TKN',
  name: 'My Token',
  initialSupply: 1_000_000n, // one-time mint_first at nonce + 1 (fixed supply)
});
await transferBoingToken(client, seed, { tokenHex, toHex: '0x…', amount: 250_000n });
console.log(await getBoingTokenBalance(client, tokenHex, deployerHex));
```

过 `dryRun: true` (和 `nonce`获取 `{ txId, signedHex }` 不提交。 未签名的构建者( U)`buildBoingTokenDeployTransaction`, (中文(简体) ), `buildBoingTokenMintTransaction`, (中文(简体) ), `buildBoingTokenTransferTransaction`与 `signTransactionInputWithSigner` 或者钱包.

## 原生AMM池 (镜像) `boing pool`(中文(简体) )

创建、资助、交换并保护滑行,并读取本地常量产品池(templates v1.v7)。 与 Rust CLI 字节相同;见 [天然-阿姆-CLI.m.d](https://npmcn.com/package/%40boing-network/docs/NATIVE-AMM-CLI.md),包括 **拘留说明** (存款和互换输入在v1.v7中是只分类账).

```ts
import { createClient, createBoingPool, addBoingPoolLiquidity, swapBoingPool, getBoingPoolState, hexToBytes } from '@boing-network/boing-sdk';

const client = createClient('http://127.0.0.1:8545');
const seed = hexToBytes(process.env.BOING_SECRET_HEX!);
const { poolHex } = await createBoingPool(client, seed, { version: 7, feeBps: 30n });
await addBoingPoolLiquidity(client, seed, { poolHex, amountA: 10_000n, amountB: 40_000n });
await swapBoingPool(client, seed, { poolHex, direction: 'a-to-b', amountIn: 1_000n, slippageBps: 50n });
console.log(await getBoingPoolState(client, poolHex));
```

## 提交交易

节点预期 **六进制编码的bincode 序列化 `SignedTransaction`**。编码匹配 Rust `boing-primitives` (宾码1.3);见 [(原始内容存档于2017-10-26) (英语). BOING-SING-TRANSACTION-ENCDING.md](https://npmcn.com/package/%40boing-network/docs/BOING-SIGNED-TRANSACTION-ENCODING.md)。 。 。 .

**选项 :**

1.  **类型脚本( 节点或捆绑器)** ——用32字节的Ed25519密钥构建+标志:

```ts
import {
  createClient,
  fetchNextNonce,
  buildTransferTransaction,
  signTransactionInput,
} from '@boing-network/boing-sdk';

const client = createClient('http://localhost:8545');
const senderHex = '0x' + '<64-hex of public key>';
const secret32 = new Uint8Array(32); // your signing seed / secret key bytes
const nonce = await fetchNextNonce(client, senderHex);
const tx = buildTransferTransaction({
  nonce,
  senderHex,
  toHex: '0x' + '<64-hex recipient>',
  amount: 1n,
});
const signedHex = await signTransactionInput(tx, secret32);
await client.simulateTransaction(signedHex);
await client.submitTransaction(signedHex);
```

2.  **插入钱包** —— 说 `boing_sendTransaction` 编号 : `boing_signTransaction` 内 **波音快车** (单位:千美元)[弹出-弹出-弹出. md](https://npmcn.com/package/%40boing-network/docs/BOING-EXPRESS-WALLET.md)) (中文(简体) ).
    
3.  **粗口线** —— 说 `cargo run -p boing-cli -- …` 为本地 dev.
    
4.  **自定义签名符** —— 说 `signTransactionInputWithSigner(tx, async (hash) => …)` (必须返回64字节 Ed25519 签名于 `hash`) (中文(简体) ).
    

**议定书质量保证:** 合同部署情况在混合体检查(`boing_qa`) (中文(简体) ). 使用 `qaCheck` 在从钱包中提交和有目的部署类型之前。 见 [质量-保险-网络.md](https://npmcn.com/package/%40boing-network/docs/QUALITY-ASSURANCE-NETWORK.md)。 。 。 .

**dApp 核对表 :** [(原始内容存档于2018-09-26) (英语). Boing-Dapp-Integration.md](https://npmcn.com/package/%40boing-network/docs/BOING-DAPP-INTEGRATION.md)。 。 。 .

见 [RPC-API-SPEC.md (中文(简体) )](https://npmcn.com/package/%40boing-network/docs/RPC-API-SPEC.md), (中文(简体) ), [贝鲁特-罗马地图](https://npmcn.com/package/%40boing-network/docs/BUILD-ROADMAP.md),以及 [(原始内容存档于2013-10-12) (中文(简体) ). Browing-VM-Capability-Pality-ROADMAP.md](https://npmcn.com/package/%40boing-network/docs/BOING-VM-CAPABILITY-PARITY-ROADMAP.md)。 。 。 .

## 模拟 + 访问列表 → 提交(P4)

使用 **`submitTransferWithSimulationRetry`**, (中文(简体) ), **`submitContractCallWithSimulationRetry`**,或 **`submitDeployWithPurposeFlow`** 因此,节点可以扩大 `access_list` 何时 `boing_simulateTransaction` 返回时 `access_list_covers_suggestion: false` (出现数) `suggested_access_list` 通过 `mergeAccessListWithSimulation`) (中文(简体) ).

```ts
import {
  createClient,
  submitTransferWithSimulationRetry,
  explainBoingRpcError,
  senderHexFromSecretKey,
  hexToBytes,
} from '@boing-network/boing-sdk';

const client = createClient(process.env.BOING_RPC_URL ?? 'http://127.0.0.1:8545');
const secret = hexToBytes(process.env.BOING_SECRET_HEX!); // 0x + 64 hex
const senderHex = await senderHexFromSecretKey(secret);

try {
  const { tx_hash, lastSimulation, attempts } = await submitTransferWithSimulationRetry({
    client,
    secretKey32: secret,
    senderHex,
    toHex: process.env.BOING_TO_HEX!,
    amount: 10n,
  });
  console.log({ tx_hash, gas: lastSimulation.gas_used, attempts });
} catch (e) {
  console.error(explainBoingRpcError(e));
}
```

部署路径运行 **`boing_qaCheck`** 首先是:; **`reject`** 掷出 `BoingRpcError` 与 `isQaRejected`打开 **`submitTransaction`**捕获 **`BoingRpcError`** mempool QA (中文(简体) )**\- 32050号**),游泳池(**\-32051号**)和池盖(**\-32054..-32056 (英语)**) (中文(简体) ). 代码参考 : [BOING-RPC-ERROR-CODES-FOR-DAPPS.md 页面存档备份,存于互联网档案馆](https://npmcn.com/package/%40boing-network/docs/BOING-RPC-ERROR-CODES-FOR-DAPPS.md)。 。 。 .

**教义脚本 :** [实例/内在-协助-辅导](https://npmcn.com/package/%40boing-network/examples/native-boing-tutorial/) (单位:千美元)`transfer`, (中文(简体) ), `contract-call`, (中文(简体) ), `deploy-minimal`) (中文(简体) ).

## API 添加( 交易流量)

-   `senderHexFromSecretKey(secret32)` - 从 `AccountId` 签种子的六分.
-   `submitTransferWithSimulationRetry`, (中文(简体) ), `submitContractCallWithSimulationRetry`, (中文(简体) ), `submitDeployWithPurposeFlow` 看到了吗 `submitFlow.ts`。 。 。 .
-   `SimulationFailedError` ——没有访问列表重试路径的模拟失败.
-   `explainBoingRpcError(e)` ——人可读取的字符串 `BoingRpcError` 和QA池码.

## 测试

```bash
cd boing-sdk && npm install && npm test
```

黄金向量被绑住 `cargo run -p boing-primitives --example dump_bincode`。 。 。 .

## 计划

-   CLI自动完成,合同模板. 见 [发展与加强](https://npmcn.com/package/%40boing-network/docs/DEVELOPMENT-AND-ENHANCEMENTS.md)。 。 。 .

## 常见问题

### @boing-network/boing-sdk 是什么？

无缝SDK 用于建于波音网络

### 如何安装 @boing-network/boing-sdk？

在项目目录运行 npm install @boing-network/boing-sdk，或使用 pnpm add / yarn add / bun add。

### @boing-network/boing-sdk 支持 TypeScript 吗？

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

### @boing-network/boing-sdk 支持 ESM 还是 CommonJS？

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

### @boing-network/boing-sdk 需要什么版本的 Node\.js？

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

### @boing-network/boing-sdk 可以商用吗？

@boing-network/boing-sdk 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @boing-network/boing-sdk 的下载量有多少？

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

### @boing-network/boing-sdk 还在维护吗？

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

