-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support BIP47 V1 Payment Codes #39
Conversation
I have worked with BIP47 before and it is rather interesting. What other software supports BIP47? Samourai for Bitcoin. For Bitcoin Cash: https://play.google.com/store/apps/details?id=com.stash.wallet BIP47: |
I edited the description to clarify: BIP47 payments use different deposit addresses on each payment but it's not always the case that it eliminates the possibility of linking two transactions from the sender.. Afaik the first wallet to implement BIP47 was Samourai in 2016. Currently there is also Billion for iOS (https://billionapp.com/) and Stash Wallet for Android (on which I work). I am finishing a tutorial to go with this PR, should be ready soon. |
I reviewed this code and have a few questions:
|
Neat.. 🗡️
|
ok, thanks for the answers. |
BIP47 Tutorial PR submitted: bitcoinj/bitcoinj.github.io#31 |
@shadders Is there something about this pull request that needs to be changed before it can be merged? |
Hi Justus,
Apologies I only just saw this now. Been busy working on the op codes. I'll
have a look at it asap.
…On Sat, May 5, 2018, 12:43 AM Justus Ranvier ***@***.***> wrote:
@shadders <https://github.com/shadders> Is there something about this
pull request that needs to be changed before it can be merged?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#39 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AA52iPsG70b9yKbwaCbQA1vB3rKLDkg9ks5tvGkVgaJpZM4TtSvq>
.
|
I am reopening this because it is still under consideration. |
Overview
BIP47 allows merchants to transact in bitcoin multiple times without exchanging bitcoin addresses. It improves the privacy of users by using a different deposit address in every payment. Senders and recipients set up a shared secret together when the payer sends a "notification transaction" containing his payment code wrapped in an OP_RETURN output. After this notification is broadcasted and received, the recipient's wallet uses BIP32 with the secret key to generate his future deposit addresses in advance and maintains a configurable look ahead.
Version 1 of Payment Codes support notification transactions with up to 3 outputs: the minimum allowed spend of 546 satoshis to the recipient, the OP_RETURN output with the payment code and possibly a change to the payer.
Considerations for integrating BIP47
When the recipient's PeerGroup is disconnected and needs to catchup with the blockchain, a race condition occurs between the notification and the payment transaction when encountering a filteredBlock in Peer. We solved this problem by making
BlockChain#rollbackBlockStore
public and calling it everytime to replay a block everytime we see a notification transaction to guarantee that the notification is processed first.Goals