Hi Bitcoin Developers,

I did some research about nLocktime and nVersion used by some open source 
Bitcoin wallets. I have written a [blog post][0] co-authored with 'nothingmuch' 
and this is the first post for the privacy focused blog 'consent':

Most wallets use nVersion 2. nLocktime for Bitcoin Core, Knots, Electrum, 
Sparrow and Specter is nearest block height. However, nLocktime for Bitcoin 
Core/Knots is zero by default if the transaction is created manually using RPC 
commands like createpsbt​ or createrawtransaction​. Peter Todd had implemented 
nLocktime based on anti-fee sniping in [#2340][1] and [#24128][2] implements 
BIP 326 sequence based anti-fee-snipe for taproot inputs.
'0xb10c' has written about wallet [fingerprinting with fee rate][3]. However, 
nLocktime and nVersion are also important. There may be other factors that 
might help if a fingerprint matches more than one wallet. Andrew Chow has build 
a [tool][4] to check if a transaction was created using Bitcoin Core or 
Electrum.

### Why is wallet fingerprinting important?

Consider the following scenario: Alice is spying on Bob and Carol. She suspects 
one of them is participating in an activity based on a transaction, but she 
cannot confirm it. She recognizes that one of the wallets that claims to 
improve privacy was used for these transactions and examines the nVersion and 
nLocktime. This makes it simpler to identify Bob, who used Wasabi wallet for 
the transaction with version 1 and nLocktime 0.

### How to fix it?

If more wallets have the same nVersion and nLocktime, it will be difficult to 
identify the wallets used for a transaction. nLocktime could be any nearest 
block height however version needs to be 2 as most of the wallets use it and it 
is used for transactions that follow new consensus rules.

Please let me know if something incorrect is mentioned or anything important 
missing about wallet fingerprinting with nLocktime and nVersion.

### Acknowledgements

- achow101
- 0xb10c
- nothingmuch- RedGrittyBrick

[0]: https://consentonchain.github.io/blog/posts/fingerprinting/
[1]: https://github.com/bitcoin/bitcoin/pull/2340
[2]: https://github.com/bitcoin/bitcoin/pull/24128
[3]: https://b10c.me/observations/03-blockchaincom-recommendations/
[4]: https://github.com/achow101/wallet-fingerprinting

/dev/fd0

Sent with [Proton Mail](https://proton.me/) secure email.
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to