Kettenwerk
graph / patterns
Analyzes only the transaction graph supplied in the request. It detects four mechanical graph patterns: directed rings, pass-through nodes that receive and send similar amounts within a configured time gap, star patterns around one high-degree node, and chain-like structuring where similar amounts move across several hops. Every pattern includes the edge ids that support it. The endpoint is stateless and deterministic, does not query blockchains or outside datasets, does not score people or.
POST https://kette.halowerk.com/graph/patternsEingaben
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| transactions | array | Ja | Directed transaction edges supplied by the caller. No outside graph is loaded. |
| min_spokes | integer | Nein | Minimum distinct counterparties for a star pattern. |
| min_chain_length | integer | Nein | Minimum node count for chain structuring. |
| max_cycle_length | integer | Nein | Maximum node count for a directed ring. |
| max_time_gap_minutes | integer | Nein | Maximum time gap in minutes for pass-through matching. |
| amount_tolerance_pct | number | Nein | Maximum relative amount difference for similar-amount matching. |
Vollständiges Eingabeschema anzeigen
{
"type": "object",
"required": [
"transactions"
],
"additionalProperties": false,
"properties": {
"transactions": {
"type": "array",
"minItems": 1,
"maxItems": 250,
"description": "Directed transaction edges supplied by the caller. No outside graph is loaded.",
"items": {
"type": "object",
"required": [
"from",
"to",
"amount_units"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"maxLength": 80,
"description": "Caller-provided edge identifier returned as evidence."
},
"from": {
"type": "string",
"minLength": 1,
"maxLength": 96,
"description": "Source node id or 0x address."
},
"to": {
"type": "string",
"minLength": 1,
"maxLength": 96,
"description": "Target node id or 0x address."
},
"amount_units": {
"type": [
"number",
"string"
],
"description": "Transfer amount in the smallest token unit or another caller-defined unit."
},
"token_symbol": {
"type": "string",
"maxLength": 24,
"description": "Optional token symbol used to avoid matching unlike assets."
},
"timestamp": {
"type": "string",
"description": "Optional ISO-8601 timestamp used for pass-through time windows."
}
}
}
},
"min_spokes": {
"type": "integer",
"minimum": 2,
"maximum": 25,
"default": 4,
"description": "Minimum distinct counterparties for a star pattern."
},
"min_chain_length": {
"type": "integer",
"minimum": 2,
"maximum": 8,
"default": 4,
"description": "Minimum node count for chain structuring."
},
"max_cycle_length": {
"type": "integer",
"minimum": 3,
"maximum": 8,
"default": 5,
"description": "Maximum node count for a directed ring."
},
"max_time_gap_minutes": {
"type": "integer",
"minimum": 0,
"maximum": 10080,
"default": 120,
"description": "Maximum time gap in minutes for pass-through matching."
},
"amount_tolerance_pct": {
"type": "number",
"minimum": 0,
"maximum": 100,
"default": 12,
"description": "Maximum relative amount difference for similar-amount matching."
}
}
}Veröffentlichtes Eingabebeispiel
{
"transactions": [
{
"id": "e1",
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"amount_units": "1000",
"token_symbol": "USDC",
"timestamp": "2026-08-19T09:00:00Z"
},
{
"id": "e2",
"from": "0x2222222222222222222222222222222222222222",
"to": "0x3333333333333333333333333333333333333333",
"amount_units": "990",
"token_symbol": "USDC",
"timestamp": "2026-08-19T09:30:00Z"
},
{
"id": "e3",
"from": "0x3333333333333333333333333333333333333333",
"to": "0x1111111111111111111111111111111111111111",
"amount_units": "985",
"token_symbol": "USDC",
"timestamp": "2026-08-19T10:00:00Z"
},
{
"id": "e4",
"from": "0x4444444444444444444444444444444444444444",
"to": "0x5555555555555555555555555555555555555555",
"amount_units": "200",
"token_symbol": "USDC",
"timestamp": "2026-08-19T11:00:00Z"
},
{
"id": "e5",
"from": "0x6666666666666666666666666666666666666666",
"to": "0x5555555555555555555555555555555555555555",
"amount_units": "205",
"token_symbol": "USDC",
"timestamp": "2026-08-19T11:05:00Z"
},
{
"id": "e6",
"from": "0x7777777777777777777777777777777777777777",
"to": "0x5555555555555555555555555555555555555555",
"amount_units": "198",
"token_symbol": "USDC",
"timestamp": "2026-08-19T11:10:00Z"
},
{
"id": "e7",
"from": "0x8888888888888888888888888888888888888888",
"to": "0x5555555555555555555555555555555555555555",
"amount_units": "201",
"token_symbol": "USDC",
"timestamp": "2026-08-19T11:15:00Z"
}
],
"min_spokes": 4,
"min_chain_length": 3,
"max_cycle_length": 4,
"max_time_gap_minutes": 90,
"amount_tolerance_pct": 15
}Ergebnis & Dokumentation
Maschinenlesbare Dokumentation dieses Hubs
Quelle dieser Seite: der veröffentlichte HALOWERK-Katalog. Stand: 2026-11-01, 15:19 UTC.
Weitere Endpunkte dieses Hubs
- Kettenwerk0,004 USDC
bridge / track
POSThttps://kette.halowerk.com/bridge/trackReads the source transaction on chain, identifies the bridge from the contracts it touched, and reports what actually left the wallet. overdue is measured against the usual duration of THAT bridge, and the comparison value is part of the an
- Kettenwerk0,003 USDC
chain / health
POSThttps://kette.halowerk.com/chain/healthQueries every public RPC endpoint this hub knows for a chain in parallel — at least three, usually five — and reports what each one says instead of trusting one. Disagreement is the valuable finding: a single endpoint that lags or serves a
- Kettenwerk0,006 USDC
contract / upgrade risk
POSThttps://kette.halowerk.com/contract/upgrade-riskUpgradeability alone is not a finding — every serious protocol is upgradeable. The finding is who holds the key and how much warning holders get. This endpoint reads the proxy pattern from the EIP-1967 slots, the clone bytecode or an implem