Paper 2022/589

Unnecessary Input Heuristics & PayJoin Transactions

Simin Ghesmati, Andreas Kern, Aljosha Judmayer, and Nicholas Stifter and


Over the years, several privacy attacks targeted at UTXO-based cryptocurrencies such as Bitcoin have been proposed. This has led to an arms race between increasingly sophisticated analysis approaches and a continuous stream of proposals that seek to counter such attacks against users' privacy. Recently, PayJoin was presented as a new technique for mitigating one of the most prominent heuristics, namely \emph{common input ownership}. This heuristic assumes that the inputs of a transaction, and thus the associated addresses, belong to the same entity. However, a problem with PayJoin is that implementations can accidentally reveal such transactions if the corresponding inputs from involved parties are not chosen carefully. Specifically, if a transaction is formed in a way such that it contains seemingly unnecessary inputs, it can be identified through so-called unnecessary input heuristic (UIH). What is not yet clear is the impact of naive coin selection algorithms within PayJoin implementations that may flag such transactions as PayJoin. This paper investigates the resemblance of PayJoin transactions to ordinary payment transactions by examining the significance of the unnecessary input heuristic in transactions with more than one input and exactly two outputs which is the common template of recent PayJoin transactions.

Available format(s)
Publication info
Published elsewhere.
PayJoinBitcoinprivacyblockchainunnecessary input heuristicoptimal change heuristic.
Contact author(s)
ghesmati @ icloud com
2022-05-17: received
Short URL
Creative Commons Attribution


      author = {Simin Ghesmati and Andreas Kern and Aljosha Judmayer and Nicholas Stifter and},
      title = {Unnecessary Input Heuristics & PayJoin Transactions},
      howpublished = {Cryptology ePrint Archive, Paper 2022/589},
      year = {2022},
      doi = {10.1007/978-3-030-78642-7_56},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.