bitcoinjs / bip32-wallet

A BIP32 Wallet backed by bitcoinjs-lib, lite on features but heavily tested.
MIT License
19 stars 14 forks source link

Adhere to BIP69 #3

Closed dcousens closed 8 years ago

dcousens commented 9 years ago

Transactions generated by this software are still identifiable to this software.

The order by address change prevented the users change address being easily identified (it was always originally always the last output, sorting by address changed that).

However, what it did not prevent is the transaction being recognizable as being produced by this software.

To change this, we need to sort the inputs/outputs by some non-deterministic entropy or user secret.

dcousens commented 9 years ago

@kristovatlas is there a possibility that we could [together?] write up a BIP for documenting best practice in regards to [at least] the following aspects of transaction creation:

And various other aspects which currently, are just slightly different enough for each implementation that they leak vital bits of privacy such that transactions can easily be linked with a high probability between matching software.

CoinJoin does help some aspects of this, but in the end, even CoinJoin could benefit from a communally set BIP that addresses some of these concerns.

Related discussion to one aspect of this:

kristovatlas commented 9 years ago

Input/Output ordering is covered by BIP 69: https://github.com/bitcoin/bips/pull/157

I agree that standards for fee calculations and nLockTime would also be useful. Send me an email? kristov [at] openbitcoinprivacyproject.org

dcousens commented 9 years ago

Thanks for the link @kristovatlas, I'll reference an implementation here.

dcousens commented 9 years ago

Currently a WIP, but I'm implementing it here for now: https://github.com/bitcoinjs/bip69

dcousens commented 8 years ago

Was added in https://github.com/bitcoinjs/bip32-wallet/commit/0b9dfc07ab1060939666dfea47cd0040135a4c07