# @carbonx3/cx3-iife 中文文档

规范地址：https://npmcn.com/package/%40carbonx3/cx3-iife/

版本：0\.2\.9
npm 元数据更新时间：2026-11-01T15:21:50.762Z
中文译文更新时间：2026-11-09T21:22:34.173Z
软件包许可：UNLICENSED

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

原始 npm 页面：https://www.npmjs.com/package/%40carbonx3/cx3-iife
原文对照：https://npmcn.com/package/%40carbonx3/cx3-iife/?lang=original
项目主页：https://cx3script.com/docs?doc=cx3iife

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

- 包体积（解压后）：59.7 kB，3 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2026-10-17T10:05:14.103Z
- 最新版本发布：2026-11-01T15:21:50.569Z
- 近 30 天下载量：1721（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 11 个）

## 中文简介

CarbonX3绿色链的官方浏览器脚本(window.cx3): CX3 钱包连接和签名(浏览器扩展名,或电话应用由 QR 编码),通过您自己的同源代理读取

## 安装

```sh
npm install @carbonx3/cx3-iife
```

也可以使用：`pnpm add @carbonx3/cx3-iife`、`yarn add @carbonx3/cx3-iife`、`bun add @carbonx3/cx3-iife`

## README

# @ carbox3/cx3- ife (中文(简体) )

[![npm version](https://img.shields.io/npm/v/@carbonx3/cx3-iife.svg)](https://www.npmjs.com/package/@carbonx3/cx3-iife) [![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@carbonx3/cx3-iife/badge)](https://www.jsdelivr.com/package/npm/@carbonx3/cx3-iife)

官方浏览器脚本( O)**CX3 IIFE 数据**用于 [碳X3 绿色链](https://carbonx3.com/)。 。 。 .

一个 `<script>` 文件添加 **`window.cx3`** (别名) `window.CX3`)到网页。 该页面连接了访客的 CX3 钱包(浏览器扩展名,或用QR代码的手机应用),拥有钱包标志并发送交易,并通过您自己的服务器上的一个小代理读取链条数据. 没有建设步骤和依赖性.

> **网络状态 :** CarbonX3绿色链目前作为一个开发网络(devnet)运行. Devnet CX3,令牌和合约是没有货币价值的测试数据,在devnet被重置后可能会被清除.

对于Node.js服务器则使用SDK: [`@carbonx3/cx3.js`](https://www.npmjs.com/package/@carbonx3/cx3.js)。 。 。 .

## 特征

-   **钱包连接和签名** 通过 CX3Wallet 扩展:私人密钥从未到达页面.
-   **电话钱包通过 QR 代码**数字 : `cx3.connectPhone()` 显示一个 QR 代码; 访客用 CX3 钱包应用程序扫描并批准 。 从那时起,每封寄件都得到批准,并在电话上签名,钥匙从不离开. 包含一个内置对话框,或者用 `cx3.qrSvg()`。 。 。 .
-   **通过您的同源代理读取**:余额,符号目录,转账,钱包的符号和活性,CarbonFi池,ABI和WIT.
-   **合同助手**数字 : `cx3.contract(address).balanceOf(owner)`, (中文(简体) ), `.transfer(to, amount)`, (中文(简体) ), `.call(...)`, (中文(简体) ), `.send(...)`。 。 。 .
-   **私人纪念品**: 发件人和收件人在钱包请求批准前接受检查.
-   **交易跟踪**数字 : `tx.wait()` 民意调查直到交易得到确认或永远失败. 一个待发(从块排出或从块中掉出)的发件被跟踪到最后,因此页面从不要求第二次签名.
-   **钱包活动**数字 : `cx3.on("accountsChanged", fn)` 当用户删除钱包中的您网站时, 告诉页面, 因此它会再次显示“ 连接钱包 ” , 而无需重新加载 .
-   **浏览器中没有证书**数字 : `setRpc` 滴数 `Authorization` 财务报告和审定财务报表 `X-Api-Key` 信头且没有登录选项 .

## 安装

### 从 CDN (推荐)

每个版本都有自己的固定地址. 装入您页面测试的确切版本 :

```html
<script src="https://cdn.jsdelivr.net/npm/@carbonx3/cx3-iife@0.2.9/min/cx3-0.2.9.min.js"
        integrity="sha384-erEAYMO5XonBabdhCYNtLWkrGwnht9Me0rKYwq0GlF31pNaOabEzWp645FAkQHtE"
        crossorigin="anonymous"></script>
```

这个 `integrity` 值使浏览器拒绝文件,如果一个字节不同。 相同文件在 unpkg 上 : `https://unpkg.com/@carbonx3/cx3-iife@0.2.9/min/cx3-0.2.9.min.js`。 。 。 .

### 自办

下载 [`cx3-0.2.9.min.js`](https://cx3script.com/download/cx3-0.2.9.min.js),放在页面旁边并装入:

```html
<script src="cx3-0.2.9.min.js"></script>
```

### 带着捆绑机

```bash
npm install @carbonx3/cx3-iife
```

```javascript
import "@carbonx3/cx3-iife"; // sets window.cx3
```

文件是纯浏览器脚本:它指定 `window.cx3` 并且不出口任何东西.

## 所需资源

-   现代浏览器( A)`fetch`, (中文(简体) ), `Promise`) (中文(简体) ).
-   **CX3 钱包** 0.1.74 或以后用于连接、签署和 `accountsChanged`。扩展在开发期间连接到每个https网站和您自己的机器;用户批准每个网站一次,每次发送或签名再次询问。 Iframes 没有钱包(`cx3.wait()` 决定 `false`) (中文(简体) ).
-   **CX3 钱包应用程序** (Android) 0.2.91 或以后的电话钱包(`connectPhone`) (中文(简体) ).
-   **开发者符号** (您的申请是OAuth2的证明,由您的代理持有). 虽然它有效,但每个钱包都可以连接到您的页面; 由 : `setRpc` 钱包询问 `GET <proxy>/api/v1/whoami?address=…` 当您源代码连接时,一个缺失、无效或被撤销的令牌会停止连接.
-   更多信息:您服务器上持有您申请证书的同源代理(见下文).

## 快开始

```html
<button type="button" id="connect">Connect wallet</button>
<p id="address"></p>

<script src="https://cdn.jsdelivr.net/npm/@carbonx3/cx3-iife@0.2.9/min/cx3-0.2.9.min.js"
        integrity="sha384-erEAYMO5XonBabdhCYNtLWkrGwnht9Me0rKYwq0GlF31pNaOabEzWp645FAkQHtE"
        crossorigin="anonymous"></script>
<script>
  const cx3 = window.cx3;
  cx3.setRpc(location.origin + "/my-dapp", { apiPrefix: "/api/v1" }); // your proxy

  document.getElementById("connect").onclick = async () => {
    if (!(await cx3.wait(2500))) {
      document.getElementById("address").textContent = "CX3Wallet not found";
      return;
    }
    const me = await cx3.connect();
    document.getElementById("address").textContent = me;

    const balance = await cx3.getBalance(me);
    const page = await cx3.listContracts({ limit: 50 });
    console.log(balance, page.contracts);
  };

  // The user removed this site in CX3Wallet (Settings → Connected Sites → Remove)
  cx3.on("accountsChanged", (accounts) => {
    if (accounts.length === 0) document.getElementById("address").textContent = "";
  });
</script>
```

## 您的代理( 申请资格 )

一页从不持有证书。 在 **CX3WebUI 设置 API 应用程序** 并保留客户端身份和客户端在您的服务器上的秘密。 代理交易他们到 `POST https://cx3api.carbonx3.com/oauth/token` (单位:千美元)`grant_type=client_credentials`) 对于一个一小时的访问符,缓存它,并用 `Authorization: Bearer <token>`。页面既不看到秘密,也不看到标志.

代理回复在 `apiPrefix` (默认) `/api/v1`)并仅转发您页面使用的路径 :

| `window.cx3` 调用 | 代理路径 | 网关路径 |
| --- | --- | --- |
| `getBalance` | `GET getBalanceAndNonce?address=` | `GET /wallet/getBalanceAndNonce?address=` |
| `listContracts` | `GET contracts?limit=&offset=` | `GET /contracts/list` |
| `listTransfers` | `GET contracts/{address}/transfers` | `GET /contracts/:address/transfers` |
| `getAbi` • 妇女 `getContractInfo` | `GET contracts/{address}/abi` • 妇女 `GET contract/{address}` | `GET /contracts/:address/abi` • 妇女 `GET /contracts/:address` |
| `call`, (中文(简体) ), `balanceOf` | `POST contract/call` | `POST /contracts/:address/call` |
| `bindApiKey` | `GET whoami?address=` | `GET /wallet/api-key/bind?address=` |
| `waitForTransaction` • 妇女 `getStatus` | `GET tx/{hash}/status` • 妇女 `GET getLastBlock` | `GET /tx/:hash/status` • 妇女 `GET /getLastBlock` |
| `getWit` | `GET contracts/{address}/wit` | `GET /dapp/v1/contracts/:address/wit` |
| `getTokens` • 妇女 `getActivity` | `GET accounts/{address}/tokens` • 妇女 `/activity` | `GET /dapp/v1/accounts/:address/tokens` • 妇女 `/activity` |
| `getDexPairs` • 妇女 `getLpBalance` | `GET dex/pairs` • 妇女 `dex/pairs/{id}/lp/{address}` | `GET /dapp/v1/dex/pairs` • 妇女 `/dex/pairs/:id/lp/:address` |
| `connectPhone` | `POST link/pair` • 妇女 `GET link/pair/{32 hex}` • 妇女 `POST link/pair/{32 hex}/bind` | `POST /wallet-link/pair` • 妇女 `GET /wallet-link/pair/:id` • 妇女 `POST /wallet-link/pair/:id/bind` |
| `restorePhone`, (中文(简体) ), `disconnect` (电话) | `GET link` • 妇女 `DELETE link` | `GET /wallet-link/link` • 妇女 `DELETE /wallet-link/link` |
| 与电话一起发送 | `POST link/sign` • 妇女 `GET link/sign/{24 hex}` • 妇女 `DELETE link/sign/{24 hex}` | `POST /wallet-link/link/sign` • 妇女 `GET` 编号 : `DELETE /wallet-link/link/sign/:id` |
| 一份合同 发送电话签署 | `POST contract-send/{address}` | `POST /dapp/v1/contracts/:address/send` |

网关的合同发送 最多25秒 的块,和脚本给予 `contract-send` 35秒(其他呼叫12秒),所以给路径一个超过25秒的代理超时,并传递网关状态代码和JSON机身不变(202,409,503和504携带) `requestId`, (中文(简体) ), `txHash` 财务报告和审定财务报表 `hint`) (中文(简体) ). 两种地位路线(`/tx/:hash/status`, (中文(简体) ), `/dapp/v1/tx/:hash/status`)回答一个丢弃的发送为 `pending` 与 `dropped` 财务报告和审定财务报表 `finalAfter`。 。 。 .

用扩展写字从不通过代理:钱包符号并发送. 通过电话,应用标志和中继带去请求(见下文). 一个完整的 PHP 代理示例在 [CX3 IIFE 指南](https://cx3script.com/docs?doc=cx3iife#app-proxy)。 。 。 .

## API 密码

| `window.cx3` | 它会做什么 |
| --- | --- |
| `VERSION` | 剧本版本,例如:. `"0.2.9"` |
| `setRpc(url, { apiPrefix })` 编号 : `getRpc()` | 设置/ 读取您的代理服务器的基址 |
| `wait(maxMs)` | 等待 CX3Wallet 准备好( 默认 2500 ms); 解析 `true` 编号 : `false` |
| `isAvailable()` 编号 : `wallet()` | 钱包在那里 / 注射 `window.carbonx3` |
| `connect()` 编号 : `accounts()` 编号 : `disconnect()` | 连接扩展名( 集) `cx3.address`),列表账户,删除会话(有电话:结束链接) |
| `connectPhone({ onQr, signal, texts })` | 通过 QR 代码( 内建对话框, 或) 对 CX3 钱包应用 `onQr(uri, expiresAt)` 电话地址 |
| `restorePhone()` | 重新装入后: 如果链接仍在运行中, 此标签中较早时链接的电话; 地址或 `""` |
| `via` | 哪个钱包标志 : `"extension"`, (中文(简体) ), `"phone"` 或者说 `""` |
| `qrSvg(text, { size, margin, dark, light, label })` 编号 : `qrMatrix(text)` | QR 编码为 `<svg>` 元素 / 作为布尔数行 |
| `on("accountsChanged", fn)` 编号 : `off("accountsChanged", fn)` | `fn(accounts)` 获得 `[]` 当用户从钱包(连接站点 去除站点),扩展或电话app中移除您的站点; `cx3.address` 已经清除。 在不重新装入的情况下再次显示"连接钱包" 。 需求 CX3Wallet 0.69+ |
| `address` | 连接地址( 小写) 或 `""` |
| `request(method, params)` | 原始钱包请求( R)`cx3_*`(中文(简体) ) |
| `getBalance(address?)` | 原生 CX3 余额 |
| `listContracts({ limit, offset, viewer, owner, standard, live })` | 托肯目录(最多500个) |
| `listTransfers(address, { limit, offset })` | 代币转帐 |
| `getTokens(address?)` 编号 : `getActivity(address?, { limit, before })` | 钱包有余额的符号 / 它的历史 |
| `getDexPairs()` 编号 : `getLpBalance(pairId, address?)` | CarbonFi 池/ 一个钱包的 LP 余额 |
| `call(address, method, params, sender?)` | 只读合同电话 |
| `getAbi(address)` 编号 : `getWit(address)` | CX3WASM合同的ABI / WIT |
| `getStatus()` | 链头 `{ height, hash, timestamp }` |
| `getContractInfo(address)` | 书记官处记录 |
| `isPrivateToken(address)` 编号 : `isTokenAuthorized(token, wallet)` | 私人代币支票 |
| `contract(address)` | 帮助者 : `balanceOf`, (中文(简体) ), `transfer`, (中文(简体) ), `call`, (中文(简体) ), `send`, (中文(简体) ), `transfers`, (中文(简体) ), `isPrivate`, (中文(简体) ), `isAuthorized` |
| `sendTransaction({ to, amount }, opts?)` | 原生 CX3 传输,在钱包中签名; `amount` 在CX3中,最多6个小数(电话: `opts.onSeen()` 当应用程序收到请求时) |
| `contractSend(address, method, params, opts?)` | 合同交易,在钱包中签名(`opts.privateCheck`, (中文(简体) ), `opts.onSeen`(中文(简体) ) |
| `waitForTransaction(hash, { timeoutMs, intervalMs, finalAfter })` 编号 : `tx.wait()` | 投票直到确认或失败:默认为30 s,或直到 `finalAfter` 每1 s(每5 s),每1 s(每5 s),每1 s. `timeoutMs` 是你自己的极限 |
| `bindApiKey(address?)` | 连接的钱包是你的吗? 你的应用程序属于它吗? 只针对所有者的页面; 访问者的钱包答案 `wallet_mismatch` 还可以使用该应用程序 |

参数取名为JSON,而不是ABI调用数据: `contract(token).transfer(to, amount)` 发送 `{ to, amount }`。金额是合同所期望的原始整数字符串(`"1000000000000000000"` 以 18 小数表示 1 个符号.

## 发送

```javascript
await cx3.connect();

const tx = await cx3.contract("0x…token").transfer("0x…recipient", "1000000");
await tx.wait();                      // confirmed, or throws TX_FAILED / TX_TRACK_TIMEOUT

const native = await cx3.sendTransaction({ to: "0x…recipient", amount: "10" });
await native.wait();
```

钱包显示收件人,金额和费用,用户批准或拒绝每次发送.

发送答案 `txHash`, (中文(简体) ), `status`, (中文(简体) ), `dropped`, (中文(简体) ), `finalAfter`, (中文(简体) ), `requestId` 财务报告和审定财务报表 `hint`数字 :

-   **待定没有失败.** `status` 实值 `"pending"` (或 `"submitted"` 当交易被排入队列但尚未排入块时, 重复相同的签名发送) : `TX_TIMEOUT` (节点的25秒等先结束) 或从它的块中发出节点(HTTP 202, `dropped: true`) (中文(简体) ). `success` 留下来 `true`,以及 `tx.wait()` 跟着它.
-   **已丢弃信件 .** 直至 `finalAfter` (时间,签名后12分钟左右)另一个验证员可能仍然包括一个被丢弃的发件,所以 `tx.wait()` 一直等到那个时候 之后 状态说 `failed` 财务报告和审定财务报表 `tx.wait()` 拒绝方式 `TX_FAILED`。 。 。 .
-   **`TX_TRACK_TIMEOUT` 表示待定**,没有失败(`err.dropped`, (中文(简体) ), `err.finalAfter`) (中文(简体) ). 在用户仍然可以运行时再不要要求其签下同样的付款:新签名是第二笔交易.

## 电话钱包( QR 代码)

没有浏览器扩展的访客可以在手机上使用CX3钱包应用. 页面显示一个QR代码,用户在app(QR扫描器)中扫描并批准连接. 配对通过你的代理到CarbonX3网关的中继,所以你的开发者令牌决定了该手机所看到的应用:该应用显示您的应用程序名称和站点.

```javascript
cx3.setRpc(location.origin + "/my-dapp", { apiPrefix: "/api/v1" }); // your proxy, with the link routes

// the built-in dialog: QR code, "Waiting For Approval In The App", Cancel
const me = await cx3.connectPhone();          // cx3.via === "phone", cx3.address === me

// sends now go to the phone: the user approves them in the app
const tx = await cx3.contract("0x…token").transfer("0x…recipient", "1000000", {
  onSeen: () => console.log("the app received the request")
});
await tx.wait();
```

您自己的对话框而不是内置的对话框 :

```javascript
const box = document.getElementById("qr");
const stop = { cancelled: false };            // set stop.cancelled = true (or pass an AbortSignal) to give up
const me = await cx3.connectPhone({
  signal: stop,
  onQr: (uri, expiresAt) => {
    box.replaceChildren(cx3.qrSvg(uri, { size: 220 }));  // an <svg>: no images, no inline styles
  }
});
```

-   **重新装入后 :** `await cx3.restorePhone()` 提供手机的地址, 而其链接仍在运行( 链接密钥在 `sessionStorage`,或 `""`。 。 。 .
-   **当用户删除应用程序中的您的站点时 :** 脚本每隔几秒钟检查一次链接,然后呼叫您 `accountsChanged` 听众 `[]`,如同扩展.
-   **`cx3.disconnect()`** 也结束网关上的链接 . **`cx3.connect()`** (分机)从一个连接的电话接管.
-   **内置对话框文本 :** `connectPhone({ texts: { title, hint, preparing, waiting, valid, cancel } })`例如在另一种语言中。 对话框通过 DOM 样式,所以一个内容- 安全政策没有 `'unsafe-inline'` 允许它.
-   **您的代理服务器** 转发 `link/…` 财务报告和审定财务报表 `contract-send/…` 上表中的路径,带有 `X-CX3-Pair-Key` 财务报告和审定财务报表 `X-CX3-Link-Key` 脚本寄出的信头,以及 `DELETE` 页:1 `link` 财务报告和审定财务报表 `link/sign/{id}`。对齐的 `origin` 应当由您的服务器设置(它是应用程序显示的站点),而不是取自浏览器.

## 私人纪念品

在钱包申请批准之前 `transfer`, (中文(简体) ), `transferFrom` 或者说 `mint` ,脚本则询问发件人和收件人是否获得授权。 如果不是,电话就拒绝 `PRIVATE_TOKEN_SENDER` 或者说 `PRIVATE_TOKEN_RECIPIENT` 钱包没有显示什么. `{ privateCheck: false }` 由于最后的论点跳过检查;合同仍然决定链条.

`getTokens()` 仅列出公共指使符: 网关只提供钱包的私人指使符, 仅提供钱包自己签名的证明, CX3Wallet 发送到自己的列表中, 从未到页面.

## 错误

| 条件 | 结果 |
| --- | --- |
| 没有 `setRpc` | `Error: RPC not set (CX3.setRpc)` |
| 没有钱包 | `Error: CX3Wallet not found` |
| 没有有效证书的代理 | HTTP 401 (韩语) `oauth_required` (或 `api_key_required`(中文(简体) ) |
| 应用程序已撤销 | HTTP 401 (韩语) `invalid_token` |
| 范围太小 | HTTP 403 (韩语) `insufficient_scope` |
| 不是应用程序的钱包 | `wallet_mismatch` |
| 合同中缺少的方法 | `METHOD_NOT_FOUND` |
| `call` 写入方法 | `CALL_REQUIRES_VIEW` (使用时 `contractSend`(中文(简体) ) |
| 私人代号, 钱包未授权 | `PRIVATE_TOKEN_SENDER` 编号 : `PRIVATE_TOKEN_RECIPIENT` |
| 交易失败( 仅在交易结束之后才发送) `finalAfter`(中文(简体) ) | `TX_FAILED` |
| `tx.wait()` 交易仍未完成时停止(不是失败) | `TX_TRACK_TIMEOUT` |
| QR 代码已过期( 5分钟) / 对话框已关闭 / 中继答差 | `PAIR_EXPIRED` 编号 : `PAIR_CANCELLED` 编号 : `PAIR_INVALID` |
| 在电话应用中被拒绝 / 在大约2分钟内没有回复 | `USER_REJECTED` 编号 : `REQUEST_EXPIRED` |
| 应用程序已移除网站( 页面已取消连接) | `REQUEST_ENDED` |
| 电话发送的收件人或数量差 / 小数超过 6 (CX3 有 6) | `INVALID_RECIPIENT` 编号 : `INVALID_AMOUNT` 编号 : `INVALID_AMOUNT_PRECISION` |
| 电话合同发送: 已排队, 不在节点的 25 s 的块内( 有散列等待, 不是错误) | `TX_TIMEOUT` |
| 电话合同发送:网关无法记录(503);没有发送, `err.retry()` 稍后再次发送相同的签名请求 | `LEDGER_UNAVAILABLE` 编号 : `LEDGER_FULL` |
| 电话合同发送:已经收到这份签名请求(409);其结果尚未确定,不再签署 | `REPLAYED_REQUEST` |
| 电话合同发送:35s没有答复/没有连接(结果打开; `err.retry()`(中文(简体) ) | `RPC_TIMEOUT` 编号 : `NETWORK_ERROR` |
| 链条拒绝交易:其数据太大或巢穴过深,或其非ce不是下一个 | `DATA_TOO_LARGE` 编号 : `DATA_TOO_DEEP` 编号 : `INVALID_NONCE_ORDER` |
| 链条拒绝天然气限值:低于最低限值,或高于合同发送的最大限值 | `GAS_LIMIT_TOO_LOW` 编号 : `GAS_LIMIT_EXCEEDED` |

编码错误将代码带入 `err.code`。合同发送的错误,连同电话或扩展,也有 `err.status` (HTTP), (韩语), `err.requestId`, (中文(简体) ), `err.hint`, (中文(简体) ), `err.txHash` 财务报告和审定财务报表 `err.body` (网关的答案);a `TX_TIMEOUT` 表示其散列名称不是两个路径上的错误,而是待决tx. `err.retry()` 是否只有再次发送相同的签名请求是安全的(没有发送,或者没有回答):网关按它的请求 id 键,所以它永远不会成为第二次交易,并且在签名后被接受几分钟.

显示错误文本 `textContent`永远 `innerHTML`。 。 。 .

## 文档

-   [CX3 IIFE 指南](https://cx3script.com/docs?doc=cx3iife)
-   [应用程序集成指南](https://cx3script.com/docs?doc=application-integration)
-   [节点的 CX3js SDK.js](https://www.npmjs.com/package/@carbonx3/cx3.js)
-   [CX3Script 开发站点](https://cx3script.com/)
-   [碳X3 绿色链](https://carbonx3.com/)

## 许可证

`UNLICENSED`:Mersolution科技有限公司的专有软件. 使用取决于 [CX3 脚本使用术语](https://cx3script.com/terms) (项目03):你可以从自己的服务器或CDN上装入与CarbonX3 Green Chain连接的应用程序,包括商业应用程序,并不加修改地为它们服务 `integrity` 散列;您不得自行修改、出售或重印,也不得与其他网络使用.

第三方代码: QR编码器基于 [JavaScript 的 QR 代码生成器](https://github.com/kazuhikoarase/qrcode-generator),版权 (c) 2009 Kazuhiko Arase,麻省理工学院许可证;其通知留在档案中。 "QR代码"是DENSO WAVE INCORPORATED的注册商标.

## 常见问题

### @carbonx3/cx3-iife 是什么？

CarbonX3绿色链的官方浏览器脚本\(window\.cx3\): CX3 钱包连接和签名\(浏览器扩展名,或电话应用由 QR 编码\),通过您自己的同源代理读取

### 如何安装 @carbonx3/cx3-iife？

在项目目录运行 npm install @carbonx3/cx3-iife，或使用 pnpm add / yarn add / bun add。

### @carbonx3/cx3-iife 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/carbonx3\_\_cx3-iife 是否存在。

### @carbonx3/cx3-iife 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @carbonx3/cx3-iife 可以商用吗？

@carbonx3/cx3-iife 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @carbonx3/cx3-iife 的下载量有多少？

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

### @carbonx3/cx3-iife 还在维护吗？

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

