{
  "service": "PayeeGuard",
  "available": true,
  "generated_at": "2026-09-19T19:06:42.448Z",
  "service_version": "0.1.0",
  "policy_version": "2026-09-19",
  "data_versions": {
    "denylist": "2026-08-03.1",
    "sinks": "2026-09-19",
    "bytecode_shapes": "2026-09-19",
    "policy": "2026-09-19",
    "chain": "eip155:8453",
    "near_miss_max_distance": "4",
    "vanity_min_affix": "4"
  },
  "corpus_size": 66,
  "methodology": "Every case runs the same guard function a paying caller reaches, with no HTTP and no payment layer, against an injected fake JSON-RPC transport carrying canned bytecode — so the suite is fully offline and a network outage cannot turn into a green build. Tiers run 1 (canonical destinations and the sinks every guard must catch) to 5 (adversarial: ground look-alikes, homoglyph-adjacent hex substitutions, a token contract offered as its own payee, and a poisoned address that passes its own checksum). Tier 2 exists specifically to measure false positives: lowercase addresses, multisigs, fresh wallets and ordinary token-holding contracts, all of which must come back allow. Tier 3 measures the opposite failure, cases where unknown is the correct answer and any confident verdict is wrong. False positives and false negatives are counted and reported separately, never averaged into one accuracy figure.",
  "metrics": {
    "pass_rate": 1,
    "passed": 66,
    "failed": 0,
    "tier_1_pass_rate": 1,
    "tier_1_cases": 13,
    "tier_2_pass_rate": 1,
    "tier_2_cases": 14,
    "tier_3_pass_rate": 1,
    "tier_3_cases": 10,
    "tier_4_pass_rate": 1,
    "tier_4_cases": 16,
    "tier_5_pass_rate": 1,
    "tier_5_cases": 13
  },
  "false_positives": 0,
  "false_negatives": 0,
  "latency_ms_p50": 0.193,
  "latency_ms_p95": 0.654,
  "limitations": [
    "The corpus is self-authored. It is not an independent benchmark and no third party has verified it.",
    "A clean verdict means the destination is well-formed, is not a known sink, matches the address you said you expected, and can receive the asset. It is not a statement that the counterparty is honest, solvent, or the one you meant to pay. This service checks twenty bytes and the code behind them; it cannot check your intent.",
    "The look-alike checks only run when you supply expected_address. With no expectation to compare against, a perfectly formed attacker address is indistinguishable from a perfectly formed legitimate one, and the service will say so rather than imply otherwise.",
    "Whether a contract accepts native value is decided from runtime bytecode, which settles three shapes: no code at all, the Solidity global non-payable guard, and one hop through an EIP-1167 proxy or EIP-7702 delegation. An ordinary compiled contract is reported unknown, because the alternative is a guess and a wrong guess here either bounces a correct payment or greenlights one that reverts.",
    "The bundled denylist (2026-08-03.1, 4 entries) seeds burn and null addresses, which are matters of arithmetic. Attributed entries come from ScamSniffer scam-database and MetaMask eth-phishing-detect and Well-known burn and null addresses through a scheduled refresh, so coverage is exactly as current as the shipped version.",
    "Latency figures are in-process timings from the eval run against a fake transport. They exclude network, TLS, payment verification, and real RPC latency, and are not a substitute for the published SLA."
  ],
  "disclaimer": "These figures are evidence from a versioned corpus, not a guarantee. Corpus composition and size are stated so the numbers can be interpreted and reproduced."
}