changedOutput schema / anyOf
Previous value: -[
- {
- "properties": {
- "about_ms": {
- "anyOf": [
- {
- "description": "about how many milliseconds the rest of the scan needs, at the pace of recent scans; absent when it is done or no scan of this kind has run",
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "caveat": {
- "anyOf": [
- {
- "description": "what the verdict does not cover",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "clusters": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "groups of wallets that share a funder; null before anything is scanned"
- },
- {
- "type": "null"
- }
- ]
- },
- "clusters_detail": {
- "anyOf": [
- {
- "description": "one entry per group: members, subjects, funders",
- "items": {},
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- },
- "dead_ends": {
- "anyOf": [
- {
- "description": "senders not counted as control, keyed by address: {kind: contract|distributor, recipients?}",
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "error": {
- "anyOf": [
- {
- "description": "present when ok is false",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "evidence": {
- "anyOf": [
- {
- "description": "how to reproduce this on any archive node",
- "properties": {
- "at_block": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "decode": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "method": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "note": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "params": {
- "anyOf": [
- {
- "items": {},
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "funders_by_address": {
- "anyOf": [
- {
- "description": "funders keyed by subject address: every sender that is not a contract",
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "largest_cluster": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "wallets in the largest group; null before anything is scanned"
- },
- {
- "type": "null"
- }
- ]
- },
- "ok": {
- "anyOf": [
- {
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ]
- },
- "partial": {
- "anyOf": [
- {
- "description": "true while the scan has not reached range.from; a cut line returns the last partial",
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ]
- },
- "range": {
- "anyOf": [
- {
- "properties": {
- "from": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ]
- },
- "to": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "string"
- }
- ]
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "reading": {
- "anyOf": [
- {
- "description": "the verdict in a sentence",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "return_paths_by_address": {
- "anyOf": [
- {
- "description": "senders that are contracts, keyed by subject address: a return path, not a funder",
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "same_actor": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ],
- "description": "true when two or more of the wallets share a funder; largest_cluster says how many do. null before anything is scanned"
- },
- {
- "type": "null"
- }
- ]
- },
- "scanned": {
- "anyOf": [
- {
- "description": "the blocks actually covered so far, newest first",
- "properties": {
- "from": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "to": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "subjects": {
- "anyOf": [
- {
- "description": "wallets asked about",
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "token": {
- "anyOf": [
- {
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "unresolved": {
- "anyOf": [
- {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "wallets with no funder that counts as control; null before anything is scanned"
- },
- {
- "type": "null"
- }
- ]
- },
- "unresolved_by_address": {
- "anyOf": [
- {
- "description": "why each unresolved subject is unresolved",
- "properties": {},
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "windows": {
- "anyOf": [
- {
- "description": "how far the scan has got",
- "properties": {
- "about_ms": {
- "anyOf": [
- {
- "description": "on the first answer: about how long the whole scan takes at the pace of recent scans of this kind; absent until one has run",
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "blocks": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "done": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "of": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "type": "object"
- },
- {
- "required": [
- "error"
- ],
- "type": "object"
- },
- {
- "required": [
- "accepts"
- ],
- "type": "object"
- },
- {
- "required": [
- "receipt"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "about_ms": {
+ "anyOf": [
+ {
+ "description": "ms the rest needs at most; absent when done or untimed",
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "caveat": {
+ "anyOf": [
+ {
+ "description": "what the verdict does not cover",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "clusters": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "groups of two or more wallets sharing a funder counted as control; null in the plan, as are the counts below"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "clusters_detail": {
+ "anyOf": [
+ {
+ "description": "one entry per group: members, subjects, funders",
+ "items": {},
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "code": {},
+ "dead_ends": {
+ "anyOf": [
+ {
+ "description": "senders not counted as control: {kind, recipients?, complete?, subjects, evidence?}; a distributor paid 100+ recipients in the blocks scanned",
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "error": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "evidence": {
+ "anyOf": [
+ {
+ "description": "the call to repeat on any archive node: at_block, method, params and a note",
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "funders_by_address": {
+ "anyOf": [
+ {
+ "description": "per subject: non-contract senders, distributors included",
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "independent_or_unresolved": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "wallets in no group"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "largest_cluster": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "wallets in the largest group"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "likely_ms": {
+ "anyOf": [
+ {
+ "description": "ms the rest likely takes, at recent pace",
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "ok": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "partial": {
+ "anyOf": [
+ {
+ "description": "true until the scan reaches range.from",
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "range": {
+ "anyOf": [
+ {
+ "properties": {
+ "from": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "to": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "reading": {
+ "anyOf": [
+ {
+ "description": "the verdict in words",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "return_paths_by_address": {
+ "anyOf": [
+ {
+ "description": "per subject: contract senders",
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "same_actor": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "true when two or more wallets share a funder counted as control"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "scanned": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "properties": {
+ "from": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "to": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "the blocks covered so far, newest first; null in the plan"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "status": {},
+ "subjects": {
+ "anyOf": [
+ {
+ "description": "wallets asked about",
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "token": {
+ "anyOf": [
+ {
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "unresolved": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "wallets with no funder that counts as control"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "unresolved_by_address": {
+ "anyOf": [
+ {
+ "description": "why each is unresolved",
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "windows": {
+ "anyOf": [
+ {
+ "description": "how far the scan has got",
+ "properties": {
+ "about_ms": {
+ "anyOf": [
+ {
+ "description": "on the plan: for the whole scan",
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "blocks": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "done": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "of": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "required": [
+ "error"
+ ],
+ "type": "object"
+ },
+ {
+ "required": [
+ "accepts"
+ ],
+ "type": "object"
+ },
+ {
+ "required": [
+ "receipt"
+ ],
+ "type": "object"
+ }
+]