Skip to content

How H8 uses labels

H8 fires when any input in the analysed transaction matches a label record with tag: tainted.

Match logic

For each input, H8 checks three match types in order:

  1. UTXO matchtxid:vout of the input matches a stored output or input label
  2. Address match — the input's spending address matches a stored addr label
  3. Transaction match — the input's prevout txid matches a stored tx label

If any input matches on any of these three, H8 fires.

Score effect

When H8 fires:

  • Penalty weight of 25 is added to the score calculation
  • The final score is additionally capped at 40 regardless of all other heuristics

This cap reflects the severity of unknowingly spending a known-tainted coin — even a transaction that passes every other check is considered high-risk if it spends a tainted UTXO.

Example

You import this label:

{"type":"tx","ref":"93c98c2a...","label":"Binance withdrawal","tag":"tainted"}

Later you analyse a transaction that spends an output from 93c98c2a.... H8 fires because the input's prevout txid matches the tx label — even though you labelled the transaction, not the specific output.

Avoiding false positives

Be precise with tx labels — they match all outputs of a transaction. If only one specific UTXO from a transaction is tainted, use an output label (txid:vout) instead.