# Human Passport Stamp有记录却不计分：核对去重、期限与credential

整理：链小知（AI 辅助）
资料核对日期：2026-10-12
引用地址：https://lianxiaozhi.com/tools/guides/human-passport-stamp-dedup-expiry-credential
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

从本人已有StampsV2分页及评分回执对应每个credential，区分过期、去重、目录元数据与未知撤销状态。

## 使用工具
- [Human Passport（原 Gitcoin Passport）](https://lianxiaozhi.com/tools/human-passport) · [官方入口](https://passport.human.tech/)

## 前置条件
- 准备原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加到本人分数。

核对结果：已验证列表、目录元数据与缺字段各自有身份。
依据：[Human Passport Stamps API v2 方法](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/api-reference)
依据：[Human Passport Stamps v2 字典](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/data-dictionary)

## 2. 检查已有分页是否齐全

对照原响应items、next、prev与limit/token，token取原next或prev值，不把page数字或任意字符串拼进去。缺中间页时不按第一页数量断言本人仅有这些Stamp。

原next=null可表示没有后续；查询错误、未保存next与null不同。错误页指出Invalid limit超过1000，保留原400/detail等问题，不发分页请求补虚假全量。

核对结果：每个已保存页有顺序/参数/范围，终止与缺页清楚。
依据：[Human Passport Stamps API v2 方法](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/api-reference)
依据：[Human Passport Stamps v2 字典](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/data-dictionary)
依据：[Human Passport Stamps错误字段](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/status-and-error-codes)

## 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和期限/证明范围，未将目录标签当有效凭证。
依据：[Human Passport Stamps v2 字典](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/data-dictionary)
依据：[Human Passport Stamps API v2 方法](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/api-reference)

## 4. 区分本人到期与下一次分数变化时间

offchain Stamp正文为90天；评分expiration_timestamp表示下一项Stamp失效时刻，不是所有Stamp的同一到期日。逐项credential.expirationDate或评分expiration_date与原时点比较，不能用最近请求时间重置期限。

Onchain Stamp应核schema expiryDate；onchain score没有显式expiry，90天是应用建议规则，不是自动链上撤销。本文不重新验证或发行新attestation，字段缺失/时区无依据时保留未核。

核对结果：逐项期限、评分时点与链上/链下规则分开，过期未冒充撤销。
依据：[Human Passport Stamps与分数期限](https://docs.passport.human.tech/building-with-passport/stamps/major-concepts/expirations)
依据：[Human Passport Stamps v2 字典](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/data-dictionary)

## 5. 用dedup解释零贡献并保留Scorer范围

当前stamps[credential].dedup=true时该项贡献为0；此时expiration_date指另一个地址已验证credential的期限，不可直接写成本人的credential到期日。只对照原Scorer返回，不查看其他用户或改地址绕过去重。

默认Scorer去重在服务端，custom规则需按自身配置。去重页称LIFO但示例保留较早提交，还称分数不变，与V2最新/expiry描述不同；不从这些概括承诺永久固定或跨Scorer同分，以已存当次dedup/score为界。

核对结果：零贡献原因对应去重实例与期限语义，未知算法和跨实例结果不外推。
依据：[Human Passport Stamps v2 字典](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/data-dictionary)
依据：[Human Passport去重范围与旧概括](https://docs.passport.human.tech/building-with-passport/stamps/major-concepts/deduplicating-stamps)
依据：[Human Passport V1到V2迁移](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/migrate)
依据：[Human Passport Stamps与分数期限](https://docs.passport.human.tech/building-with-passport/stamps/major-concepts/expirations)

## 6. 按过期、去重和未知状态写结论

分别输出凭证存在、已有贡献、expiry判断、dedup及读取/验证缺口。0分不自动等revoked或恶意；HTTP401/404/429/500、detail与score.error仍是不同失败层。

真正撤销需发行方/具体证明协议的独立状态证据，当前没取得不能填未撤销；不把EAS revocationTime套到所有Passport Stamp。整理原字段/版本/时点给应用核对，不重验、迁移账户或发新证明。

核对结果：每项计分差异有来源，未知撤销与应用准入未被填成已完成。
依据：[Human Passport Stamps错误字段](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/status-and-error-codes)
依据：[Human Passport Stamps v2 字典](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/data-dictionary)
依据：[Human Passport Stamps与分数期限](https://docs.passport.human.tech/building-with-passport/stamps/major-concepts/expirations)
依据：[Human Passport Stamps API v2 方法](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/api-reference)

## 常见错误
- 元数据目录、本人Stamp列表和score.stamps不是同一个对象。
- dedup=true的expiration_date不是本credential期限；expiration_timestamp也不是全Passport到期日。
- 过期/去重零分、撤销和请求失败不同，不能通过换地址或补签名作只读排错。

## 完成检查
- 形成逐credential的已存证明、页范围、期限、去重、贡献和未知状态表。
- 未执行重验/发行/撤销、账户查询或API调用，规则解释不是实际资格验收。

## 相关知识
- [链上指标历史数值为什么会变？](https://lianxiaozhi.com/learn/point-in-time-metrics)
- [把数据上链，与只保存数据哈希有什么区别？](https://lianxiaozhi.com/learn/data-onchain-vs-offchain)
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)

## 官方依据
- [Human Passport Stamps API v2 方法](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/api-reference)
- [Human Passport Stamps v2 字典](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/data-dictionary)
- [Human Passport Stamps错误字段](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/status-and-error-codes)
- [Human Passport Stamps与分数期限](https://docs.passport.human.tech/building-with-passport/stamps/major-concepts/expirations)
- [Human Passport去重范围与旧概括](https://docs.passport.human.tech/building-with-passport/stamps/major-concepts/deduplicating-stamps)
- [Human Passport V1到V2迁移](https://docs.passport.human.tech/building-with-passport/stamps/passport-api/migrate)
