# Sourcify 显示已验证：核对链、地址与两类字节码匹配

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

从本人已保存的V2响应检查地址、字段选择及creation/runtime匹配，区分验证记录、缺项和服务错误。

## 使用工具
- [Sourcify V2](https://lianxiaozhi.com/tools/sourcify) · [官方入口](https://sourcify.dev/)

## 前置条件
- 准备有权查看的已保存响应、请求路径/fields、HTTP状态、采集时间及原链/合约地址；不重新请求样本或提交验证。
- 正文按当前V2 2.1.0方法规范；旧V1及浏览器截图不足以推定当前结果。

## 1. 确认这是V2查询记录而非验证工单

对照保存的入口：GET /v2/contract/{chainId}/{address}查合约记录，repo.sourcify.dev/{chainId}/{address}是UI。POST /v2/verify/{chainId}/{address}的verificationId只是工单身份，不能拿它充当contract match。

官方当前正文称V1已于2026年7月7日关闭；旧full_match/partial_match术语或旧接口存档标明版本。4byte服务的签名查询不是该合约源码验证回执。

核对结果：记录有产品入口、版本、方法与原采集时间，未把提交受理当验证完成。
依据：[Sourcify 当前V2入口与V1关闭](https://docs.sourcify.dev/docs/api/)
依据：[Sourcify APIv2 2.1.0 lookup方法规范](https://sourcify.dev/server/api-docs/swagger.json)

## 2. 先配对chainId和20字节合约地址

V2规范chainId为十进制字符串，address为0x加40个十六进制字符且大小写不敏感。对照原请求与响应的chainId/address，两者都一致后才谈match；同地址跨链不是同一合约实例。

支持链正文的动态表未在本次文档读取中展开，不能由文中Ethereum等例子保证任意链当前有支持。非法参数或unsupported_chain与合约未验证分开，不把别的链记录拼接到本链。

核对结果：请求、响应与目标链/地址配对，链支持或输入缺口明确。
依据：[Sourcify APIv2 2.1.0 lookup方法规范](https://sourcify.dev/server/api-docs/swagger.json)
依据：[Sourcify Exact Match 与 Match](https://docs.sourcify.dev/docs/exact-match-vs-match/)

## 3. 把总match与creation/runtime逐列保存

保存match、creationMatch、runtimeMatch原值，取值可能exact_match、match或null。规范最小示例允许overall exact_match、creation exact_match而runtime只是match，不能用绿色总标签证明两类字节码都exact。

exact_match对应旧perfect，match对应旧partial；后者仍是验证匹配，不是只核一部分源码。缺字段、显式null和不认识的新值分列，不根据总体状态补齐另外两列。

核对结果：两类匹配各有原值或缺证，总标签没有替代逐类判断。
依据：[Sourcify APIv2 2.1.0 lookup方法规范](https://sourcify.dev/server/api-docs/swagger.json)
依据：[Sourcify Exact Match 与 Match](https://docs.sourcify.dev/docs/exact-match-vs-match/)
依据：[Sourcify 2025 APIv2 lookup历史解释](https://docs.sourcify.dev/blog/apiv2-lookup-endpoints/)

## 4. 按字段选择解释metadata或sources缺失

默认响应只给最小验证信息。核原fields/omit：fields可选metadata,sources,compilation等，omit排除字段，二者不能同时使用；缺sources可能只是未请求，并不等空源码或验证失败。

sources[path].content是文件正文，metadata.sources是源码身份/哈希等编译信息，不是同一字段。规范要求只选需要的字段，fields=all代价高且不能拿来批量爬取；已有存档足够时复用，不为核对表发新请求。

核对结果：列出哪些字段确实取得、哪些被选择范围排除，缺项未补成空对象。
依据：[Sourcify APIv2 2.1.0 lookup方法规范](https://sourcify.dev/server/api-docs/swagger.json)
依据：[Sourcify Solidity metadata 与本地artifact位置](https://docs.sourcify.dev/docs/metadata/)

## 5. 区分404未验证与限流/服务器失败

保存HTTP与正文。当前lookup规范404例子三项match均null，含义是未在Sourcify验证；它不能证明该地址没有链上code或资金。400保留customCode/message/errorId定位输入或链问题。

429与500属于读取失败，不能改写成match=null或未验证；规范对429/5xx要求退避并遵循Retry-After。没有HTTP或正文时保留未取得，不把文档例子当真实响应。

核对结果：未验证、参数失败、限流、服务错误与缺回执分别有依据。
依据：[Sourcify APIv2 2.1.0 lookup方法规范](https://sourcify.dev/server/api-docs/swagger.json)

## 6. 限定匹配结论和代理范围

结论写成该chain/address在存档时间的creation/runtime匹配及字段范围。exact_match可对library/immutable差异作专门转换，并不证明逻辑安全、权限配置或未来升级行为。

若原记录选择了proxyResolution，isProxy=false与proxyResolutionError不同；错误不能填false。implementations中的地址也不自动代表该implementation已验证或已审计，保留对应链和独立证据缺口。

核对结果：输出有限验证状态表，安全、当前状态和代理implementation未验范围明确。
依据：[Sourcify APIv2 2.1.0 lookup方法规范](https://sourcify.dev/server/api-docs/swagger.json)
依据：[Sourcify Exact Match 与 Match](https://docs.sourcify.dev/docs/exact-match-vs-match/)

## 常见错误
- verificationId是提交工单，不是验证成功；总体exact_match不保证两类字节码同级。
- 未请求sources、HTTP404、429或500不是同一种缺失。
- 同地址跨链、代理壳与implementation均不能合并成一份安全证明。

## 完成检查
- 形成chain/address、版本、时间、HTTP、字段范围及creation/runtime匹配对照。
- 没有业务API调用或验证上传；documentation仅说明如何解读已有记录。

## 相关知识
- [合约代码已验证，为什么仍不能直接判断安全？](https://lianxiaozhi.com/learn/verified-contract-boundaries)
- [如何核对 Meme 币？先确认链、合约地址和交易池](https://lianxiaozhi.com/learn/meme-token-identity)
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)

## 官方依据
- [Sourcify 当前V2入口与V1关闭](https://docs.sourcify.dev/docs/api/)
- [Sourcify APIv2 2.1.0 lookup方法规范](https://sourcify.dev/server/api-docs/swagger.json)
- [Sourcify Exact Match 与 Match](https://docs.sourcify.dev/docs/exact-match-vs-match/)
- [Sourcify 2025 APIv2 lookup历史解释](https://docs.sourcify.dev/blog/apiv2-lookup-endpoints/)
- [Sourcify Solidity metadata 与本地artifact位置](https://docs.sourcify.dev/docs/metadata/)
