Zum Inhalt
HALOWERK

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/patterns

Eingaben

Felder des veröffentlichten Eingabeschemas
FeldTypPflichtBeschreibung
transactionsarrayJaDirected transaction edges supplied by the caller. No outside graph is loaded.
min_spokesintegerNeinMinimum distinct counterparties for a star pattern.
min_chain_lengthintegerNeinMinimum node count for chain structuring.
max_cycle_lengthintegerNeinMaximum node count for a directed ring.
max_time_gap_minutesintegerNeinMaximum time gap in minutes for pass-through matching.
amount_tolerance_pctnumberNeinMaximum 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."
    }
  }
}

Originalschema öffnen

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

Alle Endpunkte dieses Hubs →