3

I was wondering if the fact that a transaction was created by an HD wallet can be somehow read off from the UTXO, or any other data available in the blockchain.

Theoretically, it is not required in any way to leak the fact that an HD wallet was used to create a transaction. However, this does not imply that this data is not leaked in currently used wallets.

Is there any information available on that? Thanks.

2 Answers 2

7

Almost every wallet today uses HD key derivation. You'd need to go back to software from 2016 or earlier to find any that don't. So I'd say your question is moot.

That said, there certainly are signals in on-chain transaction data that let you make informed guesses about what software may have created them, though they're not correlated with HD or not in practical implementations:

  • Order of transaction inputs and outputs. Some wallets follow BIP69 which specifies sorting the inputs and outputs; other wallets order them randomly.
  • Types of inputs used: if a transaction is spending a P2WPKH or P2TR UTXO, it was almost certainly created by a segwit resp. taproot wallet (or it was a CoinJoin transaction with another one that does).
  • Types of outputs used: if a transaction has a P2WPKH or P2TR output, it's almost certainly created by a wallet that supports BIP173 resp. BIP350 (which specify the address formats for such outputs).
  • Coin selection: there are many algorithms in used for selecting which UTXOs to spend to fund any given created transaction, including oldest-first, branch-and-bound, single-random-draw, knapsack, ... . Not every wallet implements the same ones, or implements them identically. From the set of inputs a transaction has it may be possible to infer something about which selection algorithm was used this way.
  • Anti fee-sniping: some wallets timelock their transactions so they can only be included in the current block height or later most of the time, which prevents a 51% attacker which creates a deep reorg from including the transaction there (making it harder for those to get the fee from the transaction).
2
  • Thank you for a very elaborate answer!
    – Shai Deshe
    Sep 21 at 13:49
  • 1
    I just noticed: "You'd need to go back to software from 2016 or earlier to find any that don't. So I'd say your question is moot.". The truth is that I am particularly interested in old UTXOs, that is, UTXOs from between 2013 (when HD wallets were first introduced) and 2016 (when they were already pretty much universally adopted). I assume the fraction of current non HD UTXOs is negligible if not exactly zero.
    – Shai Deshe
    Sep 21 at 16:55
2

No. The point of HD wallets is to create a deterministically generated sequence of addresses but which look random and not related to one another. So unless BIP32 is fundamentally broken, you should not be able to distinguish between a HD wallet and a wallet that simply generates addresses at random.

The only way you can know a HD wallet was used is if its owner gives you its extended public (or private) key.

4
  • I don't think that's relevant. It could be the case that it is impossible to know which addresses were derived from the same seed, but it could be recognized that a transaction was created by a specific wallet. For example, I don't think a wallet that follows BIP32, but adds a "created by wallet X" to the payload of transactions breaks BIP32 in any way. Of course that would be a stupid thing to do, but the point is that different wallets do output transactions with different aesthetics as pointed out by Pieter Wuille.
    – Shai Deshe
    Sep 21 at 13:48
  • (To make it clear: what you said does hold for the public-key hashes themselves, but transactions contain more data than just that, and this data might leak information about the wallet used. That was the essence of my question.)
    – Shai Deshe
    Sep 21 at 13:51
  • From just looking at a transaction, its output scripts, signatures etc. you really cannot tell if it was created by a HD wallet. What you can do is guess which wallet software created the transaction and go from there, but that requires information beyond what is available in the blockchain, and isn't always going to be accurate (two wallets might create similar looking transactions, your list of wallets won't include proprietary wallet software etc.). Sep 21 at 14:12
  • Yeah, I understand. The mere fact that the transaction data can be used to infer anything about the likelihood that the transaction was created by an HD wallet is very problematic for me, and I am trying to understand the extent. Especially for transactions from 2013-2015, and I suspect it might be "easy" to identify transactions created by wallets known to not implement HD yet (which were abundant at this time).
    – Shai Deshe
    Sep 21 at 14:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.