Other Heuristics¶
BlockSci supports various heuristics for matching transactions or blocks with certain unique properties. This module is a work in progress and will be cleaned up over time. This API should be considered totally unstable between versions.
-
blocksci.heuristics.
address_deanon_txes
(chain: blocksci.Blockchain, start: int, end: int) → List[blocksci.Tx]¶ Return a list of all the transactions in the blockchain for which is_address_deanon returns true
-
blocksci.heuristics.
change_over_txes
(chain: blocksci.Blockchain, start: int, end: int) → List[blocksci.Tx]¶ Return a list of transactions in the blockchain for which is_change_over returns true
-
blocksci.heuristics.
coinjoin_txes
(chain: blocksci.Blockchain, start: int, end: int) → List[blocksci.Tx]¶ Returns a list of all transactions in the blockchain that might be JoinMarket coinjoin transactions
-
blocksci.heuristics.
fifo_tainted_outputs
(output: blocksci.Output, tainted_value: int) → List[Tuple[blocksci.Output, int]]¶ Returns the list of current UTXOs FIFO tainted by this output
-
blocksci.heuristics.
haircut_tainted_outputs
(output: blocksci.Output, tainted_value: int) → List[Tuple[blocksci.Output, int]]¶ Returns the list of current UTXOs haircut tainted by this output
-
blocksci.heuristics.
is_address_deanon
(tx: blocksci.Tx) → bool¶ Returns true if this transaction’s change address is deanonymized by the address types involved
-
blocksci.heuristics.
is_change_over
(tx: blocksci.Tx) → bool¶ Returns true if this transaction contained all inputs of one address type and all outputs of a different type
-
blocksci.heuristics.
is_coinjoin
(tx: blocksci.Tx) → bool¶ Uses basic structural features to quickly decide whether this transaction might be a JoinMarket coinjoin transaction
-
blocksci.heuristics.
is_definite_coinjoin
(tx: blocksci.Tx, min_base_fee: int, percentage_fee: float, max_depth: int=0) → blocksci.heuristics.CoinJoinResult¶ This function uses subset matching in order to determine whether this transaction is a JoinMarket coinjoin. If maxDepth != 0, it limits the total number of possible subsets the algorithm will check.
-
blocksci.heuristics.
is_keyset_change
(tx: blocksci.Tx) → bool¶ Returns true if this transaction contains distinct addresses which share some of the same keys, indicating that the access control structure has changed
-
blocksci.heuristics.
keyset_change_txes
(chain: blocksci.Blockchain, start: int, end: int) → List[blocksci.Tx]¶ Return a list of transaction in the blockchain for which is_keyset_change returns true
-
blocksci.heuristics.
poison_tainted_outputs
(output: blocksci.Output, tainted_value: int) → List[Tuple[blocksci.Output, int]]¶ Returns the list of current UTXOs poison tainted by this output
-
blocksci.heuristics.
possible_coinjoin_txes
(chain: blocksci.Blockchain, min_base_fee: int, percentage_fee: float, max_depth: int=0) → Tuple[List[blocksci.Tx], List[blocksci.Tx]]¶ Returns a list of all transactions in the blockchain that might be coinjoin transactions