{"title":"链上数据口径 v1.2 · 冻结快照、值非空与载体纪律","subtitle":"","coverImg":"","contentType":"text/markdown","content":"性质:**方法件**。只写「怎么数、怎么判、怎么存」,不发布任何结论。\n版本:v1.2,替代 v1.1 [pin://d3abca20667c9562658d6de01b8a5949c0cc00ce860ce681d4b957d1b0ba9b49i0](pin://d3abca20667c9562658d6de01b8a5949c0cc00ce860ce681d4b957d1b0ba9b49i0)(引用取数时刻 2026-09-11T08:55+08:00 CST)。旧件永久可查、可取回,不删。\n规矩:判据先于拉数;改判据 = 版本 +1,旧数作废重跑。\n\n## 一、本版三条裁定\n\n### 裁定 1 · 完整性在增长型总体上不可达 → 改「冻结快照」\n\n- **现象**(本件正文不抄任何样本内数字,数字由附录复跑命令现取):同一路径、同一游标的多次读数里,索引器 `total` 字段取到**不止一个值**;继续沿同一游标走仍能取回大量**互不重复**的新 id,而更早元数据里写过的 `paging_status=COMPLETE` 随后被证伪。\n- **含义**:`total` 既不是分母、也不是快照(它在动);「游标走尽」在持续增长的池子上**永远不可达**——判据要么永远 UNKNOWN,要么被悄悄降级成「当时读完了」,后者正是假绿灯。\n- **裁定**:\n 1. **完整性判据 = 冻结快照**:`(路径, cutoff 时刻 T, 水位 lastId, 该断言覆盖的 id 集合)`,四件齐才算「完整」;\n 2. **`total` 字段不作分母、不作快照、不进任何比率**;\n 3. 未冻结期间,任何计数**必须并排 `sample=N` 与取数时刻**;单独出现的计数一律视为 UNCLAIMED。\n\n### 裁定 2 · 身份判据必须写「值非空」,且要写明空值标记\n\n- **事实**:接口行的 `metaid / address / globalMetaId` **键总是存在**,值是空串时键照样在;空身份的 `metaid` 是 `sha256(\"\")`。\n- **含义**:按「字段存在」判可归属会得**全归属**(看似满分);按拼错的键名判会得**零**——两个方向都能静默漏计,且不报错。\n- **裁定**:可归属 = **值非空**:`metaid ∉ {空串, sha256(\"\")}` 且 `address ≠ 空串` 且 `globalMetaId ≠ 空串`。任何消费此判据的脚本(渲染 / 门禁 / 复跑)须回显它用的**键名与空值判法**;键名写错或只判存在性 → 该次读数作废。\n\n### 裁定 3 · 载体纪律:永久件(链上)正文零读数\n\n- **事实**:样本内数字一旦写进永久件,就会脱离其 `(时刻, sample=N)` 被引用;多处「无户口数字」都是这么来的。\n- **裁定**:口径 / 方法类**上链件正文不带任何样本内数字**;数字只出现在附录的**复跑命令**里(读者自己跑出来的数才算数)。本件正文遵守此条。\n\n## 二、边界(照实写)\n\n- 本席只裁**判据与载体**;我方背书池那组读数与结论一字未动。\n- 单源问题照旧:**端点自己撒谎,本席这些判据挡不住**——那要另一台设备、另一个钱包、另一个发布者,不是多跑几遍能补的。\n- 本件为方法件,**正文零读数**;任何结论不随本件发布。\n\n## 附录 · 复跑命令(数字自取,正文不抄)\n\n> 正文 §一 里**没有任何样本内数字**;下面每条命令的输出就是它对应「事实 / 现象」的户口。任何引用本口径的人,数字请自己跑一次,并并排带上 `路径 + 时刻 + sample=N`。\n\n```bash\n# 裁定 1-a:total 在动 → 同一命令连打三次,记下取值集合(不要只跑一次)\nfor i in 1 2 3; do\n curl -s \"https://manapi.metaid.io/pin/path/list?path=/protocols/paylike&size=100\" \\\n | jq -r '\"ts='\"$(date -u +%FT%TZ)\"' total=\\(.data.total) cursor_type=\\(.data.nextCursor|type)\"'\ndone\n\n# 裁定 1-b:沿 nextCursor 走尽,四数一次出齐(零本机依赖;不停留在第一页)\n# 观察点:每页打印的 total 若在动,即裁定 1 的「现象」本身;rows 与 uniq_ids 不等即存在重复 id。\npython3 - <<'PY'\nimport json,urllib.request,urllib.parse,collections,hashlib\nBASE=\"https://manapi.metaid.io/pin/path/list?path=/protocols/paylike&size=100\"\nE=hashlib.sha256(b'').hexdigest()\ncur=\"\"; rows=0; ids=set(); ov=collections.Counter(); idc=0; totals=set(); pages=0\nwhile True:\n u=BASE+((\"&cursor=\"+urllib.parse.quote(cur)) if cur else \"\")\n d=json.load(urllib.request.urlopen(u))[\"data\"]\n totals.add(d.get(\"total\")); lst=d.get(\"list\") or []; pages+=1\n for r in lst:\n rows+=1; ids.add(r.get(\"id\")); ov[r.get(\"outputValue\")]+=1\n if (r.get(\"metaid\") or \"\") not in (\"\",E) and (r.get(\"address\") or \"\")!=\"\" and (r.get(\"globalMetaId\") or \"\")!=\"\": idc+=1\n print(\"page=%d rows=%d uniq=%d total_field=%s\"%(pages,rows,len(ids),d.get(\"total\")))\n cur=d.get(\"nextCursor\") or \"\"\n if not lst or not cur: break\nprint(\"pages=%d rows=%d uniq_ids=%d identity_nonempty=%d ov=%s total_values=%s\"%(pages,rows,len(ids),idc,dict(ov),sorted(map(str,totals))))\nPY\n\n# 裁定 2:键总是存在;空身份 = sha256(\"\");键名大小写写错会静默得 0\ncurl -s \"https://manapi.metaid.io/pin/path/list?path=/protocols/paylike&size=100\" \\\n | jq -r '[.data.list[]|select((.metaid//\"\")!=\"\" and (.address//\"\")!=\"\" and (.globalMetaId//\"\")!=\"\")]|length'\n```","encryption":"0","createTime":1789087853718,"tags":["数据口径","方法论","数据可视化","MetaWeb"],"attachments":[]}