@antseed/web-sdk

中文文档
0.1.32发布于 2026/11/05TypeScriptES Module近 30 天下载 4463

AntSeed的浏览器购买者SDK:通过信号中继器与WebRTC上的销售商连接,以浏览器EIP-712签名支付

中文使用文档
文档目录8 节
  1. 示例页面
  2. 持久频道状态和多选项卡
  3. ICE / TURN 配置
  4. 建筑
  5. 持久性和多标签
  6. 已知限制:大型非流式答复
  7. 支付卖方的前提条件
  8. 测试

@antseed/web-sdk (英语)

AntSeed的浏览器购买者 SDK. 通过WebRTC与未修改的销售商连接 数据渠道(通过 @ antseed/ 转发)并支付 每一份请求都有EIP-712签名。 没有本地模块; 唯一的 运行时间依赖是醚.

import { AntseedWebClient } from '@antseed/web-sdk';

const client = await AntseedWebClient.create({
  relayUrl: 'https://relay.example.com',
  privateKey: buyerHotWalletKey,        // peerId = its EVM address
  connection: {
    iceServers: [
      { urls: 'stun:stun.example.com' },
      { urls: 'turns:turn.example.com', username, credential },
    ],
    onConnectionInfo: ({ path }) => showPath(path), // direct | relay | unknown
  },
});

const sellers = await client.sellers();
const session = await client.connect(sellers[0].peerId);

const response = await session.request(
  {
    path: '/v1/chat/completions',
    provider: 'openai',
    headers: { accept: 'text/event-stream' },
    body: JSON.stringify({ model: 'gpt-oss-120b', stream: true, messages: [...] }),
  },
  { onChunk: (data, done) => render(new TextDecoder().decode(data)) },
);

示例页面

工作单页实例( 销售者发现、 连接、 流出聊天) 住在这里 examples/example.html数字 :

pnpm --filter @antseed/web-sdk run example
# open http://127.0.0.1:8974/example.html

它期望有一个可达到的中继器(node apps/relay/dist/index.js默认端口 8917 — 使用 (中文(简体) ) RELAY_STATIC_SELLERS=<peerId>@<host>:<port> 针入本地 卖方)和针对接受免费请求的卖方的工程没有资金.

持久频道状态和多选项卡

默认情况下, 客户端会使用内存频道商店: 在重新装入最新时 签了名的SPYAuth州已经不在了 预留资金一直锁着直到 届会截止日期已过。 生产应用软件应注入耐用商店:

const client = new AntseedWebClient({ relayUrl, wallet, channelStore: myStore });

channelStore 使用任意 BuyerChannelStore (此处再出). 对于 执行空难安全选项 flush(): 在每个新之后等待 持续签署授权书 在此之前 它被传送,所以它必须 无法解析, 直至持续写入( 例如, IndexedDB behind a) 同步内存缓存). 如果多个标签可以共享商店,则 实施还必须将签名序列化(例如:. navigator.locks(b) —— 耗用Auth 金额是每个频道的累计数, 并签名两个标签 同时破坏序列 没有共享的商店,每个标签都会打开它 拥有自己的渠道并保留自己的预算.

ICE / TURN 配置

connection.iceServers 接受赤裸的 URL 字符串或完整 RTCIceServer (TURN证书); connection.iceTransportPolicy: 'relay' 强制 TURN 唯一的路径 . connection.onConnectionInfo 报告所选 路径( r)'direct' | 'relay' | 'unknown'一旦连接,而不暴露 地址或原始候选人.

建筑

此软件包只包含浏览器特定部件:中继信号 (单位:千美元)hello 信封,社民党提议,微调 ICE RTCPeerConnection 运输,恒活性,信道-存储适配器,并实现跨塔协调. 其他一切都是共享代码,而不是重新执行. 生产客户 使用索引 DB 商店; 内存商店仅可通过 明确 ephemeral() API : (英语)

  • @ antseed/ protocol ——有线格式:消息类型,帧/HTTP/支付 代码,EIP-712支付签名,连接认证. 相同的模块 @antseed/节点运行.
  • @antseed/买方核心 - 购买机械: BuyerRequestHandler, (中文(简体) ), BuyerPaymentManager, (中文(简体) ), BuyerPaymentNegotiator, (中文(简体) ), ProxyMux编号 :PaymentMux。 。 。 . 节点/CLI买家代理商背后的准确分类 连接到WebRTC DataChannel 和已配置的频道存储器(默认情况下在记忆中).

因此,402次谈判, ReserveAuth/AuthAck, NeedAuth成本验证, 累积 耗用Auth 元数据、流出和块上传行为与 节点买家。 一个浏览器特定覆盖: 上传块超过 192 KiB (不是 512 KiB) 保留在 ~ 256 KiB SCTP 信件天花板浏览器下 与Libdatachannel销售商谈判。 默认目标 Base 主网; 覆盖 payment.* 对于其他链条.

中继桥一打开DataChannel就关闭了——只是 需要信号,持有它会消耗中继器的每IP桥 插槽 。 没有重新签名路径; 已丢弃的 DataChannel 表示新鲜 connect()。 。 。 .

持久性和多标签

AntseedWebClient.create() 是一个同步的,因为它得到了独家 付款前购买者身份和水合物索引DB的网页锁定 经理可以签字。 同一链/通道上只能使用一个标签 合同一次。 第二个标签失败 BuyerAlreadyActiveError 以 默认; 设置 persistence.waitForLock 等待代替。 崩溃的标签发布 其Web锁定自动恢复,其继任者持续恢复最后 承诺的频道状态.

每一个储备机构 和 消耗机构 承诺在它成为索引数据库之前 发送。 数据库包含频道标识符、签名、累积 金额、元数据和回收上下文,但绝不是买家的私人密钥. 使用 onPersistenceError 从普通到表面背景失败 身份/会计立即写作;等待批准 close() 当持久性不健康时,也要予以拒绝. 打电话 await client.close() 当应用程序完成冲洗存储和 解开锁 页面卸载处理器不是一个频道恢复机制.

AntseedWebClient.ephemeral() 保留模拟行为进行测试和免费 互通性实验. 不得用于付费交通,因为 重新装入会失去它的频道状态,并且不提供多塔布排除.

SellerSession.close() 只关闭 WebRTC 传输 。 使用 await session.closeChannel() 请求给予合作解决 支持卖方. client.listActiveChannels() 暴露未解决的本地问题 恢复UI的渠道. 如果卖方无法出庭,请打电话 session.requestOnChainClose(operatorSigner) 在契约之后 期间, session.withdrawTimedOutChannel(operatorSigner)。签名者必须是 在 AntseedDeposits 为买方配置的操作员; SDK 不 假设浏览器钱包或任何特定的后端拥有该角色.

中继器在缓存前先验证 DHT 元数据, SDK 拒绝 a 非空卖家快照比 maxSellerSnapshotAgeMs (15分钟前) (a) 在将其正常化后,再将其纳入共同购买者定价/能力视图. 中继器仍然是可信赖的发现-可用性边界;连接认证, 卖方反应认证,付款签名仍为结束.

已知限制:大型非流式答复

春金目前只保护上传方向 。 卖方发送 作为单一 DataChannel 消息的非流化响应机构, 浏览器封顶 在 ~256 KiB 接收 SCTP 消息——一个更大的响应(例如 Base64 图像) 输出)将杀死 DataChannel 。 直至卖方方反应分解 存在, 偏好流线化(accept: text/event-stream用于潜在大型 回应.

支付卖方的前提条件

买方地址必须是USDC存入AntseedDeposits(直接或 通过无气EIP-3009扫荡). 存款UX是超出这个SDK的范围.

测试

vitest run 覆盖字节对等 @antseed/node (哈罗) 信封、框架编码器、EIP-712签名、元数据散列) 驱动真实的端到端套件 @antseed/node 销售者通过 真实的中继实例 node-datachannel/polyfill 站出来 浏览器 RTCPeerConnection。 。 。 . pnpm run test:browser 额外发射 将本地的 WebRTC 堆栈连接到一个 通过中继器的销售者不变,并验证多标签排除法加 坠机接管。 浏览器套件还完成402次付费谈判,验证 eIP-712授权、重新装入索引数据库、模拟丢失的销售状态,以及 回收相同的链上通道而无需发行第二储备.

版本与发布记录

@antseed/web-sdk 共发布 33 个版本,首次发布于 2026/08/19;过去 12 个月发布了 33 个版本。

版本发布日期距今
0.1.32latest2026/11/051 天前
0.1.312026/11/041 天前
0.1.302026/11/042 天前
0.1.292026/11/042 天前
0.1.282026/11/033 天前
0.1.272026/11/015 天前

关于 @antseed/web-sdk 的常见问题

@antseed/web-sdk 是什么?

AntSeed的浏览器购买者SDK:通过信号中继器与WebRTC上的销售商连接,以浏览器EIP-712签名支付

如何安装 @antseed/web-sdk?

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

@antseed/web-sdk 支持 TypeScript 吗?

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

@antseed/web-sdk 支持 ESM 还是 CommonJS?

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

@antseed/web-sdk 可以商用吗?

@antseed/web-sdk 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@antseed/web-sdk 的下载量有多少?

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

@antseed/web-sdk 还在维护吗?

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