@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授权、重新装入索引数据库、模拟丢失的销售状态,以及
回收相同的链上通道而无需发行第二储备.