@bsv/overlay-express

中文文档
2.8.0发布于 2026/10/28SEE LICENSE IN LICENSE.txtTypeScriptESM + CJS构建来源已验证近 30 天下载 8599

BSV 块链叠加快车

中文使用文档
文档目录19 节
  1. 要求和安装
  2. 示例使用
  3. 完整 API 文档
  4. 其他特征
  5. 公共 HTTP 边缘政策
  6. 高级引擎配置
  7. 交易传播供应商
  8. 巴哈马 还有未经证实的维护
  9. 注册其他路由器
  10. 行政保护终点
  11. 卫生终点
  12. 重叠监视器
  13. 发展
  14. 许可证
  15. 可选的进步和现场调查
  16. 可选经认证的建议
  17. 私人购置和出版
  18. 公约采购伙伴
  19. SDK4 热补丁对等要求

重叠快递

BSV BLOCCHAIN QQ 重叠快车

有意见但可配置的重叠服务部署系统:

  • 给定本地端口的 HTTP 使用快取
  • 只需私人密钥和主机 URL 即可设置
  • 按您想要的方式导入和配置您的话题管理器
  • 添加查询服务, 为 Mongo 和 Knex 提供简易工厂
  • 执行可配置的网络用户界面,向世界显示您的自定义覆盖服务
  • 使用所有服务的通用Knex/SQL和Mongo数据库提高效率
  • 支持 SHIP, SLAP,以及 GASP 同步出框( 或者可以禁用)
  • 本地支持Arc召回生产( 或本地开发时为简单而禁用)
  • 支持Arcade-First广播/防弹检查,Arc倒背广播, 链轨头验证、 BASM 重置流线和活动 监测驱动维护

内建的发现外溢探测器使用最多1000行的确定性页. 已配置的引擎结果上限和排外溢出错误仍在执行,包括标准和高通量配置.

发行候选人将包装的重叠依赖推进到支持可选保留录取历史. 这个软件包保留了它现有的行为,不能自动保留历史. 不需要消费者或数据库迁移.

可选 @bsv/overlay-express/private-publication 已核实条目曝光 通过共享的BRC-103/104获得私营出版商地位 认证实例 。 提供同样的持久服务和披露所有人; 在通用解析器和响应转换前挂起 。 检查原件 选中项和当前记录授权在签名后再次发送, 仅发送边框 公共预测和固定错误,并通过 默认。 它从不自动挂载或安装支付处理器. 见 私人出版指南。 。 。 .

要求和安装

未公布的2.8.0名候选人还提供了可选条件 @bsv/overlay-express/root-eviction-response 伴侣 用中间器件2.3.0, SDK 3.3.0和一个共享根日记, guardRootAdvertisementResponse 检查当前 访问和每次在签名后披露的广告并排队 HTTP 在日记门下的反应。 全部答复改为: 单独授权签名重置。 在水合物和 提供完整的目标库存和安全控制反应头。 这个 基础协调指南 解释储存、政策和全程一体化义务。 现有路线 不变; 导入此伴奏无法启用 BRC-199 配置 .

可选 @bsv/overlay-express/root-eviction 条目构成共享 RootEvictionService 带有精确认证的请求/状态路线。 它保存着 收到UTF-8字节限制并检查观察到的修订和当前访问 在寄件和 HTTP 签名后再次在本地排队。 常规前挂载 解析相同来源的认证中间软件和耐用日记. Creditive-free 通配符 CORS 是默认; 确切的出处是选入. 没错 不发布能力或安装决策调度器或服务适配器. 打电话 configureRootEviction 在此之前 start() 为当地东道方融合服务。 这个 配置的根身份必须匹配服务器钱包; root, 认证的查找 和管理员路线共享认证和主机请求能力。 关闭根 起源继承了主机的边缘策略,字节限制不能超过主机限制. 注入的日记和工人保留应用程序的所有权。 见根 安装和剩余债务的协调指南.

可选的查询路由器和 configureOutputLookup 接受结构 disclosure hTTP 签名后进行最后的当前会话检查. LookupResponseDisclosure 从 @bsv/output-knowledge/lookup 组成端口 带有持久 SQLite 会话. 它可以替换一次不合格数据响应 带有新授权的签名错误,或在控制时关闭无机 访问被拒绝。 选择此选项会保留已有的行为 。 见 耐用查找指南 共享写作门、现行政策、实际工作和召回义务.

重叠快车需要节点.js 22或更新并单独安装 @bsv/sdk 相对依赖.

npm install @bsv/overlay-express @bsv/sdk

该套件提供了与无害环境管理和共同JS的切入点相匹配的组合 具体条件的声明:

import OverlayExpress, { OverlayMonitor } from '@bsv/overlay-express'
const { default: OverlayExpress, OverlayMonitor } = require('@bsv/overlay-express')

5条公共BASM JSON POST路线验证非负安全整形高地 (包括已存在的数字字符串),32字节十六进制散列/xids,以及 请求计数限制。 空的原始交易请求仍然有效; 复合 证明请求需要 txid 。 原始交易路线不需要 x-bsv-topic缺少引擎/存储BASM能力保留了HTTP 400 { status: 'error', message, code: 'BASM_UNSUPPORTED' }. CORS,准入规则, 配置限制,自动同步默认不变.

注入的话题锁定头解析器可能额外返回 blockTransactionCount 独立获得的同一峡谷块 散货 现有的链轨/提供者适配器仍然只有头;它们不 声称这种较强的立场证据。 见核心引擎的 BASM 验证和回收限额。 。 。 .

GASP 路由失败使用已配置的日志并将已丢入的值序列化 单项逃出字段,在不允许请求的情况下保留诊断上下文 用于伪造更多日志记录的内容。 HTTP出错反应保持不变.

示例使用

这里有一个简单的例子:

import OverlayExpress from '@bsv/overlay-express'
import dotenv from 'dotenv'
dotenv.config()

// Hi there! Let's configure Overlay Express!
const main = async () => {
  // We'll make a new server for our overlay node.
  const server = new OverlayExpress(
    // Name your overlay node with a one-word lowercase string
    `testnode`,

    // Provide the private key that gives your node its identity
    process.env.SERVER_PRIVATE_KEY!,

    // Provide the public FQDN without a scheme (for example, overlay.example)
    process.env.HOSTING_FQDN!
  )

  // Decide what port you want the server to listen on.
  server.configurePort(8080)

  // Public CORS is the default so wallet UIs and mobile-backed web apps can
  // call the protocol from previously unknown domains. Deployments with a
  // closed caller set can opt into exact origins and customize the UI CSP.
  server.configureEdgePolicy({
    allowedOrigins: process.env.OVERLAY_CORS_ALLOWED_ORIGINS?.split(','),
    securityHeaders: {
      contentSecurityPolicy: process.env.OVERLAY_CONTENT_SECURITY_POLICY
    }
  })

  // Connect to your SQL database with Knex
  await server.configureKnex(process.env.KNEX_URL!)

  // Also, be sure to connect to MongoDB
  await server.configureMongo(process.env.MONGO_URL!)

  // Here, you will configure the overlay topic managers and lookup services you want.
  // - Topic managers decide what outputs can go in your overlay
  // - Lookup services help people find things in your overlay
  // - Make use of functions like `configureTopicManager` and `configureLookupServiceWithMongo`
  // ADD YOUR OVERLAY SERVICES HERE

  // For simple local deployments, sync can be disabled.
  server.configureEnableGASPSync(false)

  // Production deployments should configure at least one transaction
  // propagation provider. Arcade can be used as the primary provider with Arc
  // as a fallback. A callback token is required before /arc-ingest is enabled.
  server.configureArcade(process.env.ARCADE_URL!, {
    apiKey: process.env.ARCADE_API_KEY,
    deploymentId: process.env.ARCADE_DEPLOYMENT_ID,
    chaintracksApiPrefix: '/chaintracks/v2'
  })
  if (process.env.ARC_API_KEY) {
    server.configureArcApiKey(process.env.ARC_API_KEY)
  }
  if (process.env.ARC_CALLBACK_TOKEN) {
    server.configureArcCallbackToken(process.env.ARC_CALLBACK_TOKEN)
  }

  // Chaintracks-compatible services provide block headers for BASM and can
  // stream reorg notifications. Arcade exposes go-chaintracks under
  // /chaintracks/v2.
  server.configureChaintracks(process.env.CHAINTRACKS_URL ?? process.env.ARCADE_URL!, {
    apiPrefix: '/chaintracks/v2',
    reorgStream: true,
    scanDepth: 3
  })

  // TerraTestNet nodes additionally select TTN. WhatsOnChain does not serve
  // this network, so configureChaintracks() (or an explicit ChainTracker) is
  // required before engine initialization.
  // server.configureNetwork('ttn')

  // Lastly, configure the engine and start the server!
  await server.configureEngine()
  await server.start()

  // Stop accepting work, stop background synchronization, and close the SQL
  // and MongoDB clients during process or embedding-runtime shutdown.
  const shutdown = async () => {
    await server.close()
  }
  process.once('SIGTERM', () => void shutdown())
  process.once('SIGINT', () => void shutdown())
}

// Happy hacking :)
main()

完整 API 文档

检查出来 API.md (英语) aPI 文档.

其他特征

公共 HTTP 边缘政策

重叠节点为公共协议服务. 没有CORS配置, 重叠Express 返回 Access-Control-Allow-Origin: * 绝不允许 饼干证书。 设定 OVERLAY_CORS_MODE=allowlist 准确 OVERLAY_CORS_ALLOWED_ORIGINS,通过 allowedOrigins 改为 configureEdgePolicy,或使用 OVERLAY_CORS_MODE=disabled 为故意 关闭浏览器表面 .

configureEdgePolicy 也控制 JSON/二进制身体限制,每个进程 货币,节点HTTP超时,CSP等安全头. 环境 覆盖在 .env.example. 协议认证,管理员 仍然需要认证、召回符和输入验证 无论CORS模式.

CSP适用于这一过程所送达的文件;它不批准或拒绝API 召来者. 独立配置UI CSP和API COORS. 认证的交叉来源 请求需要准确的允许来源,决不能与 通配符来源.

打电话 await server.close() 在关闭期间。 这是天分,关闭 HTTP收听器,BASM维护计时器,再接回流,克能克克斯,和蒙戈DB.

Janitor, Arcade, 链轨, 重置电流, 并监视输出的连接 接受无证书的公共 HTTPS, 将解析后的公共地址精确到 源代码,不默认跟踪方向。 响应信头和流线 机构受时间限制. allowPrivateHosts: true 允许 HTTP 和 私人目标只针对明确孤立的地方发展;从未将目标结合起来 拥有生产证书。 选入必须是文字布尔 true 内 两者 OverlayExpress 配置和直接导出供应商构造器; 供应商证书和自定义信头在 构造,所以后来的调用器突变不能改变网络权威.

重置SSE流只是加速提示. 每一个报告的孤儿 块将降级到已承认状态的选项与配置 突变前的犬形头部解析器,以及缺失或仍然匹配 canonical header 关闭失败 。 溪流在被限制的闲置后重新连接 间隔和每次重接时,都会进行正常的再验证扫描,因为 上游流没有回放光标 .

行政页面为无记名UI. 它使用每个响应的非CSP, 将服务文件进行消毒,只装入精确版本 完整性固定显示库。 它不下载钱包 SDK 运行时间。 所提供的行政无记名证必须是独立的 生成至少 32 个 UTF-8 字节的随机秘密; 省略时, OverlayExpress 生成一个。 钱包相互认证仍然为直接管理API提供支持 客户端配置了服务器管理员身份密钥 .

高级引擎配置

我们采用了一种新的方法, configureEngineParams,这样您就可以将高级配置选项传递到基本的重叠引擎。 这里有一个例子:

server.configureEngineParams({
  logTime: true,
  throwOnBroadcastFailure: true,
  overlayBroadcastFacilitator: new MyCustomFacilitator()
})

throwOnBroadcastFailure 仍应保留 true 对于大多数生产覆盖。 与 配置了供应商链广播,这意味着交易没有承诺 覆盖状态, 除非至少有一个提供者接受或返回已知的状态 成功吗? 准备吧 false 仅用于当地特意脱机/脱机工作流程 在不进行目前的网络传播的情况下,可以进行覆盖式接收.

交易传播供应商

重叠快递可以构成多个交易传播和证明来源:

server.configureArcade('https://arcade-v2-us-1.bsvblockchain.tech', {
  apiKey: process.env.ARCADE_API_KEY,
  deploymentId: 'my-overlay-node',
  chaintracksApiPrefix: '/chaintracks/v2'
})

server.configureArcApiKey(process.env.ARC_API_KEY!)
server.configureArcCallbackToken(process.env.ARC_CALLBACK_TOKEN!)

server.configureChaintracks('https://arcade-v2-us-1.bsvblockchain.tech', {
  apiPrefix: '/chaintracks/v2',
  reorgStream: true,
  scanDepth: 3
})
  • configureArcade 将街机登记为第一选择的广播机和证据 寻取供养.
  • configureArcApiKey 将标准Arc广播机登记为倒置.
  • configureArcCallbackToken 为了实现 /arc-ingest; 输入 回调时必须显示预期的符号为 Authorization: Bearer ... 或者说 x-callback-token使用至少32个独立的高强度秘密 UTF-8 字节( 偏好 256 个随机比特), 远离 URL 和日志, 然后旋转 作为证书。 短、 有控制或白空加值 拒绝.
  • configureChaintracks 为块配置相容的链路服务 头部查找,BASM主播头部解析,可选重置SSE.

发送到 /arc-ingest 被归类为成功的证据, 终端无效,双重开支,或瞬态状态。 双笔和其他 终端无效状态从已接受的交易中删除受影响的交易 覆盖状态, 因此查询层不会继续服务网络拥有的数据 拒绝。 只有在Merkle路径包含 同意索赔的高度,并肯定地核实 对已配置的链式跟踪器.

重置 SSE 适配器将每个事件视为状态批判:一个畸形的事件或 处理器故障关闭溪流, 重新连接, 并运行追赶重验证 在以后的事件被消耗之前。 它将框架和孤儿设定并拒绝 重复或畸形散列而不是跳过事件的一部分.

巴哈马 还有未经证实的维护

BASM是选入的,因为它需要直接证明和块头解析:

server.configureEnableBASMSync(true)
server.configureBASMBlockPollInterval(10 * 60 * 1000)
server.configureUnprovenMaintenance({
  intervalMs: 60 * 60 * 1000,
  thresholdBlocks: 144
})

配置时, 未验证的维护先尝试配置的证明提供者 用于未证实超过阈值的交易。 只有交易 仍然无法证明是被驱逐的。 运算符也可以手动通过 行政终点如下.

注册其他路由器

registerRouter(path, factory) 在服务器内挂载自己的路由器。 工厂经营 期间 start(),在BRC-103认证中间软件之后,在管理员路线和 404处理器,所以路由器继承了CORS,正体剖析,响应大小限制,以及 req.auth.identityKey。没有 BRC-103 信头的请求随 req.auth.identityKey 等于 'unknown';需要认证的路径必须拒绝。 打电话之前 start()。 。 。 .

server.registerRouter('/', ({ engine, wallet }) => {
  if (wallet === undefined) throw new Error('A server wallet is required')
  const router = express.Router()
  router.get('/status', (_req, res) => res.json({ ok: true }))
  return router
})

这个 wallet 上下文为 BRC-103 认证钱包。 它没有储存 提供商,所以它会标出并验证但不能创造或内部化的动作: createAction 财务报告和审定财务报表 internalizeAction 掷出. 一个接受付款的路由器,例如BRC-178主机 @bsv/eqc, (中文(简体) ), 必须从与服务器相同的根密钥中构建自己的存储后背钱包,以便其 身份等于 BRC-103 会话密钥和 SLAP 广告密钥.

已注册路由器继承响应大小限制( R)MAX_RESPONSE_BYTES: 4个米B small 配置文件, 8 MiB 打开 standard) (中文(简体) ). 一个更大的JSON身体在操作员跑后被413所取而代之,所以 在回答之前支付的路由器必须将其自己的响应绑定在这个限度以下.

行政保护终点

我们还为先进的行动提供行政保护终点,如人工操作 同步广告,启动GASP/BASM同步,运行未经证实的维护, 驱逐特定的出入口, 并管理清洁工。 这些终点需要 手持证相. 您可以在构造器中提供自定义符号 OverlayExpress,或通过调用获取自动生成的符号 server.getAdminToken(). 经认证和拒绝的行政答复 以 Cache-Control: no-store 财务报告和审定财务报表 Pragma: no-cache; 维护 在任何反向代理中执行政策。 SHIP/SLAP记录搜索是一种有界限的文字搜索, 不是一个调用用户提供的 MongoDB 正则表达式, 并且只接受 pagination 精确正整数(加上文件 -1编号 :unlimited 限制表).

共同管理端点 :

  • POST /admin/syncAdvertisements
  • POST /admin/startGASPSync
  • POST /admin/startBASMSync
  • POST /admin/refreshUnprovenProofs
  • POST /admin/evictUnproven
  • POST /admin/maintainUnproven
  • POST /admin/evictOutpoint
  • POST /admin/janitor

卫生终点

重叠快车现在暴露出三个健康终点:

  • GET /health/live:用于进程级检查的仅活性状态.
  • GET /health/ready: Overlay 引擎, Knex 和 MongoDB 等关键依赖的准备状态.
  • GET /health:完整内容报告,结合活性,准备状态,服务元数据,以及任何已注册的自定义检查.

您可以附加额外的应用程序识别检查和上下文 :

server.configureHealth({
  // Details and context are public only when deliberately enabled.
  includeDetails: true,
  contextProvider: async () => ({
    deployment: 'cars-project-backend',
    network: process.env.NETWORK
  })
})

server.registerHealthCheck({
  name: 'custom-cache',
  critical: false,
  handler: async () => ({
    status: 'ok',
    details: { warmed: true }
  })
})

健康细节和上下文默认被禁用,因为终点是 公开和组件细节可能披露部署地形。 明确 启用细节/文本对象为 JSON 序列化、大小限制和主题 到配置的 1–60,000 ms 检查截止日期。 所有健康反应都有标记 no-store门卫服务也理解富人 /health 回应 格式,因此现有的 Ship/SLAP 健康验证仍然兼容.

重叠监视器

OverlayMonitor 提供可重复使用的工人,用于监测重叠快件查询 行为,并在配置了管理员符后,运行维护动作. 已配置 /lookup 对任何重叠快递部署的探测器,措施 响应大小, 解析返回的 BEEF, 并报告是否响应输出 交易有直接的默克勒证明或正在提供更深入的证据 祖师相传.

计划通过部署作为长期监测程序或分组安排来进行。 它没有与具体的部署平台挂钩.

import { OverlayMonitor } from '@bsv/overlay-express'

const monitor = new OverlayMonitor({
  intervalMs: 24 * 60 * 60 * 1000,
  targets: [
    {
      name: 'example-overlay',
      baseUrl: 'https://overlay.example',
      probes: [
        {
          name: 'example-topic',
          service: 'ls_example',
          query: { topic: 'tm_example' },
          maxOutputs: 20
        }
      ],
      maintenance: {
        adminToken: process.env.OVERLAY_ADMIN_TOKEN,
        startBASMSync: true,
        maintainUnproven: {
          thresholdBlocks: 144
        },
        janitor: true
      }
    }
  ],
  onReport: async report => {
    console.log(JSON.stringify(report.summary))
  }
})

monitor.start()

维护请求与探测器一起报告,以便操作人员能够发出警报 与检查/防形状警告分开处理。 显示器 每个探测器默认时最多分析100个返回的BEEF输出,并在 每个响应最多64个米B; 调 maxAnalyzedOutputs 财务报告和审定财务报表 maxResponseBytes 当部署需要不同的上限时. maxOutputs 可以设置 更小的每个测试分析上限.

发展

从寄存器根 :

pnpm --filter @bsv/overlay-express format:check
pnpm --filter @bsv/overlay-express lint
pnpm --filter @bsv/overlay-express typecheck
pnpm --filter @bsv/overlay-express test
pnpm --filter @bsv/overlay-express test:coverage
pnpm --filter @bsv/overlay-express test:live
pnpm --filter @bsv/overlay-express pack:check

包检查为 Overlay Express 构建本地包装的放行对象 及其工作空间重叠的依赖关系,然后用 npm 沥青球验证 publint,严格类型的分辨率,以及清洁的无害环境管理/共同JS消费者项目. test:live 单独核查无终点的公共拱廊/Chaintracks 私人证书;是预定/释放的证据,而不是决定性公关 覆盖.

许可证

当前 TS Stack 更改根据 Open BSV 许可证版本 6 获得许可; 参见 LICENSE.txt (英语)。该软件包还保留了统一前代码 在开放BSV许可证版本4下. 补给者必须保留 第三次议会 NoTICES.md 和适用的文本在 LICENSES/。 。 。 .

感谢您参与BSV区块链重叠快车项目. 让我们一起打造BSV区块链的未来!

可选的进步和现场调查

打电话 configureOutputLookup 在此之前 start,或导入 createOutputLookupRouter 从 @bsv/overlay-express/output-lookup 独立快递的构成。 这个 新的适配器需要SDK 3.3.0 耐用提供者伴机,签名匹配 能力显示、当前授权和明确的浏览器来源。 这个 常规根仅在启用时加载此适配器 。 现有的有限查询路线 而默认启动保持不变.

主机共享其认证实例, 验证服务钱包身份 并贴出广告 字节预算到其现有的边缘极限。 供应商存储 生命周期仍由呼叫者负责。 见 提供者指南 用于初始化,精确的再试恢复, 披露守护,多程序唤醒, 保留和独立的路由器命令 。 候选人未公布 完成BRC-192-199的整合仍符合资格.

可选经认证的建议

configureProposals 在此之前 start 或单独的 @bsv/overlay-express/proposals 路由器是耐用建议服务, 服务拥有的披露验证器和共享的日记/内存门. 本条目需要 SDK 3.3.0 和 认证中件 2.3; 遗留的根对等层 路线保持不变。 读取的当前信道不同于回收 保留出版物ACK。 两者均需当前授权和原件 合同在答复签署后具有约束力。 一个消毒替换错误可能是 签名,在本地排队前需要独立检查控制许可.

主机共享认证和手握所有权 与浏览/根相伴, 通过结算、夹子字节限制和 继承主机 CORS 政策,除非明确推翻。 储存能力 出版物、经核实的恢复、期满和入境工作人员仍然是东道主. 见 建议书指南 组成和回收合同.

私人购置和出版

明确 configurePrivateAcquisition 财务报告和审定财务报表 configurePrivatePublication 方法 以主机的单一认证组成已安装的私人服务 钱包/会话。 出版物名称空间之前的私人收购路线 倒背和普通身体剖析器 默认的公用CORS政策仍然存在 无证书;保留了明确的起源和主机字节天花板. 获取配置的听众单独选择一个有边框的 128-KiB HTTP 标题 bRC-105付款证据的备抵。 独立应用程序可以导入 createPrivateAcquisitionRouter 从 @bsv/overlay-express/private-acquisition。 。 。 . 应用程序拥有耐用保管、权限、钱包回收和工人 关闭。 见 购置和回收 构成、原始义务语义、付款/回收请求和 代理限制 。 这些选入配置需要新的 SDK 输出 API; 遗留启动 保留其支持的SDK地板.

公约采购伙伴

configurePrivatePurchase 或可选 @bsv/overlay-express/private-purchase 路由器增加了拟议的BRC-196 /overlay/v1/purchases/prepare, (中文(简体) ), /submit 财务报告和审定财务报表 /recover 业务 配置了基础路径 。 使用共享主机认证钱包, 准确 选定能力和本地实物披露所有人。 《公约》规定的付款 在独立验证的交易中发生; 这些路径拒绝 HTTP 付款头,不采用第二次BRC-105收费.

采购、购置和出版共用一个握手所有人并保存 普通类 /submit/寻找行为,要求天花板和无证书的CORS. 该应用程序拥有原始的保护保管,全域/释放验证 并停止/裁员协调员,然后关闭其本土领域。 见 购买权 联 合 国 组件边界和其余端到端的资格要求.

SDK4 热补丁对等要求

SDK4 对等替代开始于 @bsv/sdk ^4.0.1,恢复数字 钱包结果和遗留线条相容性。 现有的SDK2/3替代品和 下限不变。 SDK4 用户应安装 4. 0.1 个热补丁; 不 需要应用程序-wallet线或数据迁移.

版本与发布记录

@bsv/overlay-express 共发布 84 个版本,首次发布于 2024/12/01;过去 12 个月发布了 25 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.8.0latest2026/10/2811 天前
2.7.52026/10/2415 天前
2.7.42026/10/031 个月前
2.7.32026/09/271 个月前
2.7.22026/09/231 个月前
2.6.12026/08/282 个月前

关于 @bsv/overlay-express 的常见问题

@bsv/overlay-express 是什么?

BSV 块链叠加快车

如何安装 @bsv/overlay-express?

在项目目录运行 npm install @bsv/overlay-express,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@bsv/sdk(^2.4.0 || ^3.0.0 || ^4.0.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bsv/overlay-express 支持 TypeScript 吗?

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

@bsv/overlay-express 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bsv/overlay-express 需要什么版本的 Node.js?

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

@bsv/overlay-express 可以商用吗?

@bsv/overlay-express 使用 SEE LICENSE IN LICENSE.txt 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@bsv/overlay-express 的下载量有多少?

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

@bsv/overlay-express 还在维护吗?

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