{"service":"ChainVerdict","methodologyVersion":"cv-2.1.0","published":"2026-08-18T10:07:30.689Z","principle":"Every paid response states what was checked, when, from which source, how confident the result is, and what it does not mean. Signals are designed to be verifiable by the buyer rather than trusted on assertion.","evidenceModel":{"assurance":"assurance.level is an ordinal label describing HOW an answer was produced (deterministic / structural / observed / exact-list-match / heuristic). It is deliberately NOT a numeric score, because a number implies calibration that ChainVerdict has not performed. No level should be read as a probability that a subject is safe, legitimate or correct.","calibration":"ChainVerdict does NOT currently publish precision, recall or calibration metrics for its heuristic checks, and does not claim they are calibrated. Heuristic levels are labelled as such precisely so that a buyer does not mistake them for validated statistical estimates.","integrityVsTruth":"Signing proves provenance and integrity: this response came from ChainVerdict and was not altered. It does not prove the conclusion is correct. A signed wrong answer is still wrong, and is still signed.","freshness":"freshness.basis states how the answer ages. 'deterministic' never goes stale. 'live-chain', 'live-dns' and 'live-tls' are point-in-time observations. 'daily-refresh' depends on an upstream list and carries a stale-data risk that is stated explicitly.","limitations":"Every response carries the specific limitations of that check plus service-wide limitations. These are part of the product, not a disclaimer footer.","signature":"Responses are Ed25519-signed (compact JWS). Verify against /.well-known/signing-key.json to confirm a response is genuinely ChainVerdict's and was not altered in transit — and see integrityVsTruth above for what that does not establish."},"globalLimitations":["ChainVerdict returns informational signals for automated decision support. It is not regulated financial, legal, tax or compliance advice, and it does not discharge any legal or regulatory obligation you may have.","No result should be treated as a guarantee. Absence of a negative signal is not a positive assurance."],"endpoints":[{"pathPrefix":"/v1/screen/address","decision":"sanctions_screen","subject":"crypto address","checksPerformed":["OFAC SDN digital-currency address list match (exact, case-insensitive)"],"dataSources":[{"name":"US Treasury OFAC SDN list (digital currency addresses)","refresh":"daily"}],"freshness":{"basis":"daily-refresh","maxUsefulAgeSeconds":86400},"assurance":{"level":"exact-list-match","basis":"exact string match against a published list; high precision, bounded recall (a list can be incomplete or out of date)"},"humanApprovalRecommended":"on_match","limitations":["Screens the US OFAC SDN digital-currency address list ONLY. It does NOT screen EU, UN, UK/OFSI, or any other sanctions regime.","A non-match means the address is absent from that one list at the last refresh. It is NOT evidence that the counterparty is legitimate, unsanctioned elsewhere, or safe to pay.","Newly designated addresses appear only after the next refresh. Screening is not real-time.","This is an informational screening signal, not a regulated AML/KYT/sanctions-compliance service, and does not discharge any legal screening obligation."]},{"pathPrefix":"/v1/preflight","decision":"payee_risk","subject":"payee address","checksPerformed":["OFAC SDN digital-currency address list match","On-chain address profile (EOA vs contract, balance, activity band)","Composite heuristic verdict: clear_to_pay / caution / do_not_pay"],"dataSources":[{"name":"US Treasury OFAC SDN list (digital currency addresses)","refresh":"daily"},{"name":"Base mainnet RPC","refresh":"per-request"}],"freshness":{"basis":"daily-refresh+live-chain","maxUsefulAgeSeconds":60},"assurance":{"level":"heuristic","basis":"composite of one exact list match and heuristic address signals; the heuristic component is not validated against a labelled dataset"},"humanApprovalRecommended":"unless_clear_to_pay","limitations":["'clear_to_pay' means no configured negative signal was found. It is NOT an endorsement, a guarantee of counterparty legitimacy, or a recommendation to transact.","Sanctions coverage is the US OFAC SDN digital-currency list only; other regimes are not screened.","Address heuristics detect patterns (unused address, contract vs EOA), not intent. A fresh address is common in legitimate use.","Cannot detect off-chain fraud, social engineering, address substitution in your own pipeline, or a counterparty who is legitimate today and not tomorrow.","Informational risk signal only; not regulated financial, legal, or compliance advice."]},{"pathPrefix":"/v1/token/verdict","decision":"token_risk","subject":"ERC-20 contract","checksPerformed":["Bytecode capability scan (risk-bearing functions)","Ownership / privileged-role presence","Token metadata consistency","Composite 0-100 score → hold / caution / avoid"],"dataSources":[{"name":"Base mainnet RPC (contract bytecode + metadata)","refresh":"per-request"}],"freshness":{"basis":"live-chain","maxUsefulAgeSeconds":60},"assurance":{"level":"heuristic","basis":"heuristic static analysis; no execution, no audit, no liquidity or market analysis; not validated against a labelled dataset"},"humanApprovalRecommended":"unless_hold","limitations":["Heuristic static analysis — NOT a security audit and not a substitute for one.","A proxy contract can change its implementation after this check; the result describes the contract as observed at the stated block only.","Does not analyse liquidity, holder distribution, market manipulation, wash trading, or off-chain claims about the project.","'hold' is the absence of detected red flags, not a judgement that the token is a sound holding. Nothing here is investment advice."]},{"pathPrefix":"/v1/wallet/dossier","decision":"address_profile","subject":"Base address","checksPerformed":["EOA vs contract detection","Native balance","Activity band","Heuristic flags"],"dataSources":[{"name":"Base mainnet RPC","refresh":"per-request"}],"freshness":{"basis":"live-chain","maxUsefulAgeSeconds":60},"assurance":{"level":"observed-with-heuristics","basis":"balances and code presence are direct chain reads; behavioural flags are heuristic"},"humanApprovalRecommended":"no","limitations":["Describes on-chain state at the stated block. It does not identify the owner of the address.","Flags are behavioural heuristics, not accusations. 'unused_address' is common in legitimate first-time payments."]},{"pathPrefix":"/v1/verify/payment","decision":"payment_verification","subject":"transaction hash","checksPerformed":["Transaction receipt lookup","ERC-20 Transfer log decoding","Counterparties and amounts","Confirmation depth"],"dataSources":[{"name":"Base mainnet RPC","refresh":"per-request"}],"freshness":{"basis":"live-chain","maxUsefulAgeSeconds":30},"assurance":{"level":"observed","basis":"direct receipt and log decoding; deterministic given the chain state at the stated block"},"humanApprovalRecommended":"no","limitations":["Reports what the chain records. Low confirmation counts remain theoretically reorg-exposed; check the confirmations field before treating a payment as final.","Does not verify that the payment settles any particular off-chain obligation."]},{"pathPrefix":"/v1/verify/token","decision":"canonical_token_check","subject":"token address or symbol","checksPerformed":["Match against ChainVerdict's curated canonical Base token list (USDC, EURC, WETH, cbBTC, USDT)"],"dataSources":[{"name":"ChainVerdict curated canonical token list","refresh":"manual"}],"freshness":{"basis":"curated","maxUsefulAgeSeconds":null},"assurance":{"level":"exact-list-match","basis":"exact match against a small hand-maintained allowlist; the list is not exhaustive"},"humanApprovalRecommended":"on_mismatch","limitations":["Covers a small curated set of major Base tokens. 'Not canonical' means 'not on this list' — it is not a claim that the token is fraudulent.","The list is maintained manually and may lag new canonical deployments."]},{"pathPrefix":"/v1/security/email","decision":"email_spoofing_posture","subject":"domain","checksPerformed":["SPF record lookup","DMARC policy lookup","DKIM selector lookup (when supplied)"],"dataSources":[{"name":"Live public DNS","refresh":"per-request"}],"freshness":{"basis":"live-dns","maxUsefulAgeSeconds":3600},"assurance":{"level":"observed","basis":"direct DNS observation at request time; subject to resolver caching"},"humanApprovalRecommended":"no","limitations":["Describes published DNS policy, not whether a specific message was authentic.","DNS caching means a very recent record change may not yet be visible.","Absence of DKIM at the probed selector does not prove DKIM is unconfigured; selectors are arbitrary."]},{"pathPrefix":"/v1/security/tls","decision":"tls_posture","subject":"hostname","checksPerformed":["TLS handshake","Certificate validity window","Issuer","Expiry countdown"],"dataSources":[{"name":"Live TLS handshake, port 443","refresh":"per-request"}],"freshness":{"basis":"live-tls","maxUsefulAgeSeconds":3600},"assurance":{"level":"observed","basis":"direct observation of the certificate presented to this server at this moment"},"humanApprovalRecommended":"no","limitations":["Observes the certificate presented to this server at this moment; a different client, SNI or geography may be served a different certificate.","A valid certificate proves control of the hostname, not the honesty of its operator."]},{"pathPrefix":"/v1/security/typosquat","decision":"brand_impersonation_signal","subject":"domain","checksPerformed":["Homoglyph substitution detection","Edit-distance comparison against a brand list"],"dataSources":[{"name":"ChainVerdict curated brand list + string analysis","refresh":"manual"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"heuristic","basis":"string-similarity heuristic; brand list is not exhaustive; not validated against a labelled dataset"},"humanApprovalRecommended":"on_match","limitations":["Similarity to a brand is a signal, not proof of malicious intent; legitimate domains can resemble brands.","The brand list is finite — a non-match does not mean the domain is not impersonating something.","Does not inspect site content, registration data, or reputation."]},{"pathPrefix":"/v1/data/","decision":"chain_data","subject":"chain object","checksPerformed":["Direct Base mainnet read"],"dataSources":[{"name":"Base mainnet RPC","refresh":"per-request"}],"freshness":{"basis":"live-chain","maxUsefulAgeSeconds":30},"assurance":{"level":"observed","basis":"direct chain read at the stated block"},"humanApprovalRecommended":"no","limitations":["Point-in-time chain state. Values change every block (~2s on Base); treat as immediately perishable."]},{"pathPrefix":"/v1/validate/iban","decision":"identifier_validation","subject":"IBAN","checksPerformed":["ISO 13616 structure","Country-specific length rule","MOD-97-10 check digits"],"dataSources":[{"name":"ISO 13616 / ECBS country register (bundled rules)","refresh":"with releases"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"deterministic","basis":"the checksum arithmetic is certain; this says nothing about real-world existence or status"},"humanApprovalRecommended":"no","limitations":["Validates structure and check digits only. A structurally valid identifier is NOT proof that the account, entity or instrument exists, is active, or belongs to the party you are transacting with.","Does not confirm the account is open, the holder's identity, or that the bank will accept a transfer."]},{"pathPrefix":"/v1/validate/vat","decision":"identifier_validation","subject":"EU VAT number","checksPerformed":["Country prefix and format","Deterministic checksum where defined (DE, IT, LU, PL, SI)"],"dataSources":[{"name":"Published national VAT checksum rules (bundled)","refresh":"with releases"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"deterministic-partial","basis":"checksum arithmetic is certain where implemented; format-only for other member states"},"humanApprovalRecommended":"no","limitations":["Validates structure and check digits only. A structurally valid identifier is NOT proof that the account, entity or instrument exists, is active, or belongs to the party you are transacting with.","Checksums are implemented for a subset of member states; others are format-checked only.","This is NOT a VIES registration check. It does not confirm the number is currently registered or valid for intra-EU supply."]},{"pathPrefix":"/v1/validate/bic","decision":"identifier_validation","subject":"BIC/SWIFT","checksPerformed":["ISO 9362 structure","Component decomposition (institution, country, location, branch)"],"dataSources":[{"name":"ISO 9362 structural rules (bundled)","refresh":"with releases"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"structural","basis":"structure is certain; BIC carries no check digit and no registry lookup is performed"},"humanApprovalRecommended":"no","limitations":["Validates structure and check digits only. A structurally valid identifier is NOT proof that the account, entity or instrument exists, is active, or belongs to the party you are transacting with.","BIC has no check digit. Structural validity does not confirm the code is assigned to an operating institution — that requires the SWIFT registry."]},{"pathPrefix":"/v1/validate/lei","decision":"identifier_validation","subject":"LEI","checksPerformed":["ISO 17442 format","MOD-97-10 check digits"],"dataSources":[{"name":"ISO 17442 (bundled)","refresh":"with releases"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"deterministic","basis":"the checksum arithmetic is certain; this says nothing about real-world existence or status"},"humanApprovalRecommended":"no","limitations":["Validates structure and check digits only. A structurally valid identifier is NOT proof that the account, entity or instrument exists, is active, or belongs to the party you are transacting with.","Does not query GLEIF. It cannot tell you the entity name or whether the LEI registration is Issued, Lapsed or Retired."]},{"pathPrefix":"/v1/validate/isin","decision":"identifier_validation","subject":"ISIN","checksPerformed":["ISO 6166 format","Luhn check digit"],"dataSources":[{"name":"ISO 6166 (bundled)","refresh":"with releases"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"deterministic","basis":"the checksum arithmetic is certain; this says nothing about real-world existence or status"},"humanApprovalRecommended":"no","limitations":["Validates structure and check digits only. A structurally valid identifier is NOT proof that the account, entity or instrument exists, is active, or belongs to the party you are transacting with.","Does not confirm the security exists, is listed, or is tradeable. No reference-data lookup is performed."]},{"pathPrefix":"/v1/batch/validate","decision":"identifier_validation","subject":"identifier batch","checksPerformed":["Per-item structural and checksum validation (iban, vat, bic, lei, isin)"],"dataSources":[{"name":"Bundled standards rules","refresh":"with releases"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"deterministic","basis":"per-item checksum arithmetic is certain; see each item type's limitations"},"humanApprovalRecommended":"no","limitations":["Validates structure and check digits only. A structurally valid identifier is NOT proof that the account, entity or instrument exists, is active, or belongs to the party you are transacting with."]},{"pathPrefix":"/v1/doc/","decision":"transformation","subject":"document","checksPerformed":["Deterministic text transformation"],"dataSources":[{"name":"Request payload only","refresh":"n/a"}],"freshness":{"basis":"deterministic","maxUsefulAgeSeconds":null},"assurance":{"level":"deterministic","basis":"deterministic transformation of the supplied input"},"humanApprovalRecommended":"no","limitations":["Operates only on the text you supplied. No external data is consulted and no claim is made about its accuracy."]}],"corrections":"Errors, false positives and false negatives can be reported to contact@chainverdict.xyz. Material methodology changes increment methodologyVersion and are reflected in this document."}