@xyo-network/event-kit-cli

中文文档
2.3.4发布于 2026/11/03LGPL-3.0-onlyTypeScriptES Module

Node 26+ CLI用于事件Kit握手和持久的源感知事件发布者

中文使用文档
文档目录4 节
  1. 命令
  2. 网络与状态
  3. 居民运行时
  4. 准备尽最大努力

@xyo-network/event-kit-cli

要求Node 26或更新版本;存储库固定在Node 26.9.0上。

安装的二进制文件在固定的XL1上组成公共Node握手客户机 网关会话,定稿语句图重播,并选定公开 datalake。

命令

event-kit publisher service publish|show|rotate-key|retire
event-kit publisher key show
event-kit publisher subscription show|challenge|accept
event-kit subscriber service show
event-kit subscriber subscription subscribe|show|revoke
event-kit publisher run --config publisher.json

发现命令需要 --publisher。精确的订阅发现和 发行商挑战/接受流程也需要独立 --subscriber 和 --subscription 选择器。读书不需要种子。

--replay-floor-block <n> 选择显式可信授权引导 边界和嵌入在持久重放标识。默认为genesis。 对于非零下限,必须设置第一个服务发布 validFromBlock 在那一层或之后;这种模式不要求完整的楼板前历史。

写要求 --seed-file <path> 和(可选) --account-index <n>。这个 种子文件必须是没有组或其他权限的常规非符号链接文件 位。发布者写入要求派生签名者为发布者声明 源;订阅者写入要求它是订阅者声明源。

生成的写入(service publish, service rotate-key, subscription subscribe)也要求 --operation-id <32-lowercase-hex>。生成新鲜 为每个新的逻辑突变随机操作ID,并在每次重试时保留它。 重复使用相同的ID与改变语义输入失败关闭;精确的重试 返回 intentDisposition: "resumed" 并重新发布或调和相同的内容 规范对象和签名的XL1事务。接受使用它的挑战 hash作为操作ID,而退役和撤销使用目标对象 散列,因此这些命令不接受单独的标志。

服务发布读取一个严格的公共JSON对象:

{
  "deliveryMode": "durable",
  "sources": [{ "kind": "xl1-finalized", "chainId": "<40 lowercase hex source chain ID>" }],
  "maxPositionsPerWake": 32,
  "maxSubscriptionLifetimeBlocks": 100000
}

订阅发布读取一个严格的、受权限限制的JSON对象。 这个 endpoint, audience, challengeSecret 参数加密 并且永远不会被CLI返回:

{
  "deliveryMode": "durable",
  "audience": "my-indexer",
  "challengeSecret": "<32-byte unpadded base64url>",
  "deploymentId": "my-indexer",
  "endpoint": "https://subscriber.example/event-kit/wake",
  "source": { "kind": "xl1-finalized", "chainId": "<40 lowercase hex source chain ID>" },
  "fromPosition": 0,
  "maxPositionsPerWake": 32,
  "expiresAtBlock": 100000
}

publisher subscription challenge 验证/解密选定的最终文件 Tuple和durable开始了它唯一被允许的挑战尝试。它只打印 公共挑战和选择器散列:它不执行HTTP请求,也从不执行 打印解密后的目标。将挑战传达给订阅者 运营商选择的专用信道。 publisher subscription accept 然后 需要 --input <response.json> 包含端点证明的:

{
  "schema": "network.xyo.event.wake.challenge.response",
  "challenge": "<challenge object hash>",
  "proof": "<32-byte unpadded base64url>"
}

网络与状态

使用 --network local|sequence|mainnet 选择读配置文件。写命令 委派到XL1发布边界。本地命令需要显式的 --chain-id; 序列和主网标识来自已发布的SDK。 --rpc-url 和 --datalake-url 替换端点,而不是链身份。每一个 在重播之前和之后,根据所选链检查会话。

主网络读取可用。主网络写被XL1边界拒绝 在CLI读取种子文件或构造签名者/数据写入器之前;有 没有旁路标志。 publisher run --network mainnet 只提供了 (d - 008). 它读取 要签名的种子醒来,不打开签名者、数据生成器或出版物,然后离开 对第7阶段宿主的挑战和接受。

--state-dir 默认为 ./event-kit-state。重播检查点、发布 日志、变异意图、发布者加密密钥保管和挑战 记录在选定的网络、精确链ID和发布者下被隔离 地址在私有SQLite权限。CLI拒绝遗留文件系统状态 而不是默默地放弃加密保管或发布恢复。 突变意图是不可变的私有记录。出版商服务/关键 intent保留生成的加密私钥用于恢复;订阅者 意图保留确切的授权和密文以及私有输入指纹, 从来没有端点或挑战秘密明文。保护并备份这个 目录作为秘密操作状态。

使用 --json 的机器可读结果 哈希、身份、最终块和生命周期证据。

居民运行时

publisher run --config publisher.json 现在合成持久SQLite状态, D-005的发现/质疑/接受/撤销 有界HTTPS交付,以及环回健康探测。源合同支持定稿 XL1,最终确定了以太坊,完成了固定的UTC时间间隔。看到 常驻出版商手册 的配置, 握手命令,Vercel预览证书, 恢复后,剩下的凭据和资格大门。

有一个未版本化的有线合同。 --event-kind版本后缀模式; 和 maxBlocksPerWake 被拒绝;使用明确的源和源位置。 XL1接受高度确定授权资格,而 订阅的 fromPosition 确定源追赶从哪里开始。

准备尽最大努力

服务和订阅JSON要求 deliveryMode: "best-effort",匹配 bestEffort: {"refreshIntervalSeconds":30,"maxHintAgeSeconds":300,"maxAttempts":3} 和 maxPositionsPerWake: 1。本机现有的发布/订阅命令 继续使用 --input,需新鲜 --operation-id、固定网络和 私人 --seed-file; mode/policy是严格的JSON字段,而不是新的连接id。

使用新审查的授权投影,同时保留相同的 SQLite所有者/托管目录,所有握手命令支持:

--replay-namespace ces-best-effort-v2 --replay-floor-block <H+1>
--replay-start-anchor-block <H> --replay-start-anchor-hash <rootH>

本机读取器验证确切确定的H/rootH,在H处开始为空,然后读取 H+1的权威。新服务/密钥/授权/订阅/接受声明必须 使用新的服务ID和版本1,没有遗留的替代 链接或隐含的旧权威。对应的运行时配置字段为 authorizationReplayNamespace, authorizationFloorBlock, authorizationStartAnchor: {"block":H,"hash":"rootH"}。保持发行商的身份; 种子、状态目录和历史密钥/检查点/意图不变。

尽力而为HTTP成功返回有界 admissionId, eventHash, wakeId, acceptedAt, expiresAt; 它从不声称是持久的 receiptId。接收机源 验证和应用过程必须独立观察。

版本与发布记录

@xyo-network/event-kit-cli 共发布 22 个版本,首次发布于 2026/08/21;过去 12 个月发布了 22 个版本。

版本发布日期距今
2.3.4latest2026/11/03今天
2.3.32026/11/03今天
2.3.22026/10/313 天前
2.3.12026/10/303 天前
2.3.02026/10/295 天前
2.2.32026/10/286 天前

关于 @xyo-network/event-kit-cli 的常见问题

@xyo-network/event-kit-cli 是什么?

Node 26+ CLI用于事件Kit握手和持久的源感知事件发布者

如何安装 @xyo-network/event-kit-cli?

在项目目录运行 npm install @xyo-network/event-kit-cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 event-kit,可以用 npx event-kit 直接运行。

@xyo-network/event-kit-cli 支持 TypeScript 吗?

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

@xyo-network/event-kit-cli 支持 ESM 还是 CommonJS?

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

@xyo-network/event-kit-cli 需要什么版本的 Node.js?

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

@xyo-network/event-kit-cli 可以商用吗?

@xyo-network/event-kit-cli 使用 LGPL-3.0-only 许可。弱 Copyleft:作为库被调用时通常不要求开源你自己的代码,但修改库本身需以 LGPL 开源;前端打包合并后的适用边界存在不同理解。以上为概括,不构成法律意见,请以许可原文为准。

@xyo-network/event-kit-cli 还在维护吗?

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