Human Passport Stamp有记录却不计分:核对去重、期限与credential
链小知 · 进阶 · 核验 · 依官方文档整理
从本人已有StampsV2分页及评分回执对应每个credential,区分过期、去重、目录元数据与未知撤销状态。
开始前准备
- 准备原Scorer/address评分、已有Stamp列表各页、credential及取得时间;去敏issuer/subject信息,不取真实用户。
- 只核记录,不重验Stamp、创建证明/会话、调用API或支付;没有完整页就保留列表未齐。
1. 把本人Stamp列表与全目录区分
GET /v2/stamps/{address}列表是本人已验证Stamp,GET /v2/stamps/metadata是全目录,不证明本人拥有。原include_metadata默认false,缺描述/图标不是credential失效。
方法参数为include_metadata,字典有include-metadata及漏斜杠旧写法;只按原版本/方法记录解释。不要把目录中所有可用Stamp加到本人分数。
检查结果:已验证列表、目录元数据与缺字段各自有身份。
2. 检查已有分页是否齐全
对照原响应items、next、prev与limit/token,token取原next或prev值,不把page数字或任意字符串拼进去。缺中间页时不按第一页数量断言本人仅有这些Stamp。
原next=null可表示没有后续;查询错误、未保存next与null不同。错误页指出Invalid limit超过1000,保留原400/detail等问题,不发分页请求补虚假全量。
检查结果:每个已保存页有顺序/参数/范围,终止与缺页清楚。
3. 逐credential配对issuer、subject与期限
已存credential可含type/@context、issuer、proof、issuanceDate、expirationDate及credentialSubject;这些不同于目录id/name/icon,也不是私钥。把provider/hash/version与评分stamps键配对,不能只按显示名称。
查看原ISO时间与证明类型,缺issuer/proof或正文不是验证失败的自动结论;没有独立验签或发行方政策证据时写未核。通用revoked/credentialStatus字段并未在所读方法/字典完整定义,不编造读取或撤销菜单。
检查结果:每项有自身credential和期限/证明范围,未将目录标签当有效凭证。
4. 区分本人到期与下一次分数变化时间
offchain Stamp正文为90天;评分expiration_timestamp表示下一项Stamp失效时刻,不是所有Stamp的同一到期日。逐项credential.expirationDate或评分expiration_date与原时点比较,不能用最近请求时间重置期限。
Onchain Stamp应核schema expiryDate;onchain score没有显式expiry,90天是应用建议规则,不是自动链上撤销。本文不重新验证或发行新attestation,字段缺失/时区无依据时保留未核。
检查结果:逐项期限、评分时点与链上/链下规则分开,过期未冒充撤销。
5. 用dedup解释零贡献并保留Scorer范围
当前stamps[credential].dedup=true时该项贡献为0;此时expiration_date指另一个地址已验证credential的期限,不可直接写成本人的credential到期日。只对照原Scorer返回,不查看其他用户或改地址绕过去重。
默认Scorer去重在服务端,custom规则需按自身配置。去重页称LIFO但示例保留较早提交,还称分数不变,与V2最新/expiry描述不同;不从这些概括承诺永久固定或跨Scorer同分,以已存当次dedup/score为界。
检查结果:零贡献原因对应去重实例与期限语义,未知算法和跨实例结果不外推。
6. 按过期、去重和未知状态写结论
分别输出凭证存在、已有贡献、expiry判断、dedup及读取/验证缺口。0分不自动等revoked或恶意;HTTP401/404/429/500、detail与score.error仍是不同失败层。
真正撤销需发行方/具体证明协议的独立状态证据,当前没取得不能填未撤销;不把EAS revocationTime套到所有Passport Stamp。整理原字段/版本/时点给应用核对,不重验、迁移账户或发新证明。
检查结果:每项计分差异有来源,未知撤销与应用准入未被填成已完成。
怎样确认完成
- 形成逐credential的已存证明、页范围、期限、去重、贡献和未知状态表。
- 未执行重验/发行/撤销、账户查询或API调用,规则解释不是实际资格验收。
常见错误与边界
- 元数据目录、本人Stamp列表和score.stamps不是同一个对象。
- dedup=true的expiration_date不是本credential期限;expiration_timestamp也不是全Passport到期日。
- 过期/去重零分、撤销和请求失败不同,不能通过换地址或补签名作只读排错。