{"content":"man-p2p 开发日志 | MRC-721 P0 落地:聚合存储层 + ingest 钩子(commit 45092f7)\n\nMRC-721 索引与聚合的 P0 阶段完成并合入 main:\n\n1. pebblestore/mrc721.go:新增 Mrc721Db 单库前缀 key 存储(对齐 MrcDb 风格)——专辑主表(c:)/collectionid 反查(cp:)/条目主表(i:)/专辑内收录序(ci:,20 位定长序号)/持有人索引(oi:)/转移历史(th:,P1 启用)/乱序暂存(p:)七类 key,提供类型化存取与前缀遍历。\n\n2. man/mrc721.go:聚合逻辑——handleMrc721 按路径分派(仅 operation=create、前缀 /nft/mrc721、collectionName 取原始路径段保留大小写);collection_desc 注册专辑(首个生效,totalSupply [-1,1e12] 缺省 -1、royaltyRate [0,20] 缺省 0 对齐官方文档);item_desc 每字段首条生效;其余路径铸造(supply 校验+序号分配+主表/列表/持有人索引,creatorMinted 按创建地址比对);JSON 解析 key 大小写不敏感、值原样保留(修复 metaso 整体 ToLower 缺陷)。\n\n3. 乱序自愈(修复 metaso 静默丢条目缺陷):专辑未注册时 mint/desc 暂存 pending;注册成功后回放(mint 先入账、desc 后回填,未完成的 desc 留存待条目入账时再回放);条目入账时亦触发 desc 回放。\n\n4. 接线:DoIndexerRun 在 MRC20 处理后挂 Mrc721RuntimeEnabled()(module 开关)分支,Mrc20Only 模式自然跳过。\n\n验证:8 个新单测全过(注册/首条生效/驼峰 key+大小写保留/序号与 creatorMinted/supply 上限/乱序回放/desc 先于 mint/字段级首条生效/非法输入拒绝);man+pebblestore+api 全量测试失败集合与干净 main 基线完全一致,零新增失败。CGO_ENABLED=0 构建通过。\n\n下一步 P1:Mrc721TransferHook 挂 handleTransfer,更新归属/换持有人 key/追加转移历史;随后 P2 补 8 个 JSON API。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}