Skip to content
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

[Feature Request]: BIP351 Private Payments Support #113

Open
privatepayments opened this issue Feb 18, 2023 · 2 comments
Open

[Feature Request]: BIP351 Private Payments Support #113

privatepayments opened this issue Feb 18, 2023 · 2 comments

Comments

@privatepayments
Copy link

Private Payments (BIP351) is a stealth address system for Bitcoin that allows the user to post a static code and receive payments to a separate address space for each sender.

There are multiple use cases for Private Payments, but the static donation code seems to be the most compelling. A user wishing so solicit donations from the public may safely associate a payment code with her identity and receive funds in a relatively private manner.

The user story is similar to BIP47:

  • Receiver posts their payment code
  • Sender creates a notification payload and either posts it to the chain as an OP_RETURN or to some other bulletin board system
  • Receiver scans the chain for these notification payloads and upon finding one, generates the chain of stealth addresses

Improvements over BIP47:

  • Supports multiple address types
  • Better notification payload privacy
  • Smaller notification payloads

For more context, check out privatepayments.org and the Rust reference implementation.

@acrespo
Copy link
Member

acrespo commented Feb 28, 2023

Hello there,

We are long-time fans of paynyms here! Bitcoin needs an interoperable identity system to make p2p payments easier.
However, the original (BIP47) paynym protocol has fallen a bit behind the times since it doesn't support taproot, but more importantly, it doesn't support lightning.

It's nice to see a proposal trying to tackle those issues. But unfortunately there some other, more nuanced, UX issues which BIP47 presented and this proposal (AFAIU) does not completely solve. For example, handling well what happens if the owner of a paynym/payment code loses their keys. In particular, everyone that has them as a "contact" will keep sending money to an irredeemable address, effectively burning money.

We are still on the look for other proposals that can solve these issues. Let me know if you have some feedback or ideas on this topic!

@privatepayments
Copy link
Author

A human-readable identifier layer could be added on top, similar to Lightning Address or nostr's NIP-05, but that is out of scope for the BIP itself. These payment codes are not meant to be identities.

In broader terms, main chain bitcoin always suffers from the case of lost keys. For a payment code system, this does present a challenge as you point out, since anywhere along the line, the receiver could lose their keys. A Lightning Address style alias could help mitigate the issue, but that introduces more complexity and the requirement to keep the hosting server secure or outsource to a centralized identity directory like PayNym. Such a central server is now a honeypot on top of an otherwise decentralized privacy protocol.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants
@acrespo @privatepayments and others