用途:处理 1Sat 集合协议与 collection overlay 相关问题,例如创建集合、collectionItem、collectionId 等。集合是否被索引以 b-open-io/1sat-stack 的 collection overlay 为权威,单靠元数据约定不能保证被收录。
主要能力:pkg/collection 模块识别两种铸造角色。集合根需 MAP 含 subType: "collection",主题为 tm_1sat_collection;集合项需 subType: "collectionItem" 且带 subTypeData.collectionId,主题为 tm_col_{collectionId}。根与项都须恰好为 1 satoshi、含 inscription envelope,并含有效的交易绑定 SIGMA 签名。AIP 不满足收录条件。overlay 记录已验证的 SIGMA 签名者,但不将其与根签名者或根当前所有者比较,不要臆造实现中不存在的根所有者、签名匹配或委托授权规则。项的 collectionId 从 MAP subTypeData 的 JSON 字符串读取;相对 N 引用按项自身交易归一化,否则使用集合根的序号 outpoint <txid><vout>。当前 overlay 仅支持铸造,只索引被收录的铸造输出,不追踪转移,也不因所有权变更重新解释成员关系。
使用方式:pkg/collection 内嵌并启用路由时,默认前缀为 /collection,提供 GET /collection/、GET /collection/{collectionId}、GET /collection/{collectionId}/items、GET /collection/{collectionId}/item/{outpoint}。列表路由支持 limit 与 rev。模块默认 mode: disabled,部署须启用它并通过 collection_ids 或 Services.RegisterCollection 注册项主题。除非直接核实过该部署,不要假设 api.1sat.app 上存在这些路由。给出查询说明时须同时说明两个部署门槛:启用模块与注册集合的项主题。
SDK 兼容门槛:推荐铸造辅助方法前,先检查所用 @1sat/actions 版本或相关源码。撰写时随附的 mintCollection 与 mintCollectionItem 会构建 1 sat inscription 与 MAP 数据,但不添加 SIGMA,其输出不满足 overlay 收录规则。未发布的开放或提议中的 SDK 辅助方法不是已发布 API,尤其不要推荐 mintCollectionItem({ ref })、集合 SIGMA 支持、通用 BSV21 map / signWithBAP 选项或 mintBsv21CollectionItem,除非所用版本中存在这些符号和输入。自定义铸造应使用 inscription 流程的 SIGMA 支持,并严格按 stack 期望构造 MAP envelope,验证最终交易而非把选项名当作有效 SIGMA 的证明。
内容与代币边界:集合成员关系与 inscription 媒体类型无关。项可用内嵌内容或 ord-fs/json 目录(其 . 条目指向共享内容),overlay 从不读取该叶子来判断成员关系。BSV21 deploy 输出可在脚本层携带集合项 MAP 与 SIGMA,但这不使集合成为 BSV21 的一部分。应保持 BSV21 包通用,将集合特有的构造与查询放在集合层。呈现为现成操作前须确认 SDK 支持。若设计把集合字段放入 BSV21 JSON 载荷,须明确纠正两方面:保持该载荷通用,再在输出脚本层组合集合 MAP 与 SIGMA envelope。
限制:当前 overlay 仅铸造;部署默认禁用;路由存在与否取决于具体部署;辅助方法是否含 SIGMA 取决于版本。普通 inscription 机制用 ordinals-create,其他 1sat-stack 端点用 stack-api,BSV21 行为用 tokens,引用内容用 blockchain-media 或 ORDFS 技能。行为可能变化时可查看 pkg/collection 下的 topic_discovery.go、topic_item.go、mapdata.go、lookup.go、routes.go 与 config.go。