PayJoin adoption: Difference between revisions

From Bitcoin Wiki
Jump to navigation Jump to search
Belcher (talk | contribs)
Add note about cost and benefit
Murch (talk | contribs)
Undo revision 70283 by EXeGIGZI (talk) that added malware links
Tag: Undo
 
(55 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[[PayJoin]] is a privacy improvement for bitcoin. In the case where a customer pays a merchant, they both together co-operate to create a single bitcoin transaction which mixes both their coins and masks the payment amount.
[[PayJoin]] is a privacy improvement for bitcoin. Payjoin solves the sole privacy problem left open in the [[Bitcoin whitepaper]], that transactions with multiple inputs "necessarily reveal that their inputs were owned by the same owner," because both the sender and receiver of a transfer contribute inputs to the transaction.


[[Transaction surveillance company|Transaction surveillance companies]] heavily depend on the [[Common-input-ownership heuristic|common input ownershipassumption]] which is broken by PayJoin transactions. So if those transactions became even a little bit widespread they could massively decrease the reliability of blockchain surveillance. Merchants and customers who adopt PayJoin would find their privacy improved from anyone analyzing the blockchain, for example a surveillance company spy would find it much harder to figure out which addresses and transactions belonged to a particular merchant that was using PayJoin, or who else transacted to them.
[[Transaction surveillance company|Transaction surveillance companies]] heavily depend on the [[Common-input-ownership heuristic|common input ownership assumption]] which is broken by PayJoin transactions. So if those transactions became even a little bit widespread they could massively decrease the reliability of blockchain surveillance. Those who adopt PayJoin would find their privacy improved from strangers analyzing the blockchain. For example a surveillance company spy would find it much harder to figure out which addresses and transactions belonged to a particular merchant that was using PayJoin, or who else transacted to them.


PayJoin transactions are indistinguishable from regular bitcoin transactions by design, so it's very hard to get an accurate number for how common they are.
PayJoin transactions can be made indistinguishable from regular bitcoin transactions by design, so it's very hard to get an accurate number for how common they are.


The PayJoin protocol standard most likely to get adoption is [[BIP 0078]].
The most widely adopted PayJoin protocol standard is [[BIP 0078]].
 
Like any new feature, PayJoin requires a little bit of time to first set up. But if your business suffers from being spied on (for example you're a p2p exchange or bitcoin casino, and regulated exchanges keep banning your customers) then that cost is well worth it.


{| class="wikitable"
{| class="wikitable"
Line 13: Line 11:
| {{No}} ||
| {{No}} ||
|-
|-
| {{Evaluating|??}} || Maybe / Haven't checked / placeholder
| {{Evaluating}} ||
|-
|-
| {{Planned}} || The developers said they plan to
| {{Planned}} || The developers said they plan to
Line 19: Line 17:
| {{Weak|Non-BIP78}} || Implements a form of PayJoin but not BIP78
| {{Weak|Non-BIP78}} || Implements a form of PayJoin but not BIP78
|-
|-
| {{Acceptable|PR Merged}} || In the case of software, code has been written and merged, and it will be in next release.
| {{Acceptable|Extension}} || Can PayJoin using additional software
|-
|-
| {{Yes}} || Feature has been released
| {{Yes}} || Feature has been released
Line 29: Line 27:
! Name !! Sending !! Receiving !! Notes
! Name !! Sending !! Receiving !! Notes
|-
|-
| Wasabi Wallet || {{Yes}} || {{No}} || https://docs.wasabiwallet.io/using-wasabi/PayJoin.html
| Armory || {{No}} || {{No}} ||
|-
| bcoin || {{No}} || {{No}} ||
|-
|-
| JoinMarket || {{Yes}} || {{Yes}} || https://old.reddit.com/r/Bitcoin/comments/idhrak/new_release_of_joinmarket_070_includes_bip78/
| [https://bitcoindevkit.org/bdk-cli/ BDK-CLI] || {{Acceptable|Live Draft}} || {{Evaluating}} || https://github.com/bitcoindevkit/bdk-cli/pull/156 https://github.com/bitcoindevkit/bdk-cli/issues/149
|-
|-
| Bluewallet || {{Yes}} || {{Evaluating|??}} || https://old.reddit.com/r/Bitcoin/comments/j6qswf/bluewallet_releases_payjoin_bip78/
| Bitcoin Core || {{Acceptable|Extension}} || {{Acceptable|Extension}} || [https://github.com/payjoin/rust-payjoin Beta CLI payjoin-client via RPC], native support [https://github.com/bitcoin/bitcoin/issues/19148 under evaluation]
|-
|-
| Sparrow Wallet || {{Yes}} || {{Evaluating|??}} || https://github.com/sparrowwallet/sparrow/releases/tag/0.9.7
| Bitcoin Knots || {{Acceptable|Extension}} || {{Acceptable|Extension}} || [https://github.com/payjoin/rust-payjoin Beta CLI payjoin-client via RPC]
|-
|-
| Samourai Wallet || {{Weak|Non-BIP78}} || {{Weak|Non-BIP78}} || https://samouraiwallet.com/stowaway
| [https://play.google.com/store/apps/details?id=de.schildbach.wallet Bitcoin Wallet for Android] || {{No}} || {{No}} ||
|-
|-
| Bitcoin Core || {{No}} || {{No}} ||
| [https://segwit.bitmask.app/ BitMask] || {{Yes}} || {{No}} || Chrome extension only https://github.com/diba-io/bitmask-core/pull/121
|-
|-
| Bitcoin Knots || {{No}} || {{No}} ||
| [https://www.blink.sv Blink (Bitcoin Beach Wallet)] || {{Evaluating}} || {{Evaluating}} || https://twitter.com/nicolasburtey/status/1673760619374280705
|-
|-
| Electrum || {{No}} || {{No}} ||
| [https://blixtwallet.github.io/ Blixt Wallet] || {{Evaluating}} || {{Evaluating}} || https://t.me/blixtwallet/122197
|-
|-
| bcoin || {{No}} || {{No}} ||
| Blockstream Green || {{No}} || {{No}} ||
|-
|-
| Armory || {{No}} || {{No}} ||
| BlueWallet || {{Yes}} || {{Planned}} || https://old.reddit.com/r/Bitcoin/comments/j6qswf/bluewallet_releases_payjoin_bip78/
|-
|-
| GreenAddress || {{No}} || {{No}} ||
| [https://github.com/Bitcoin-Brainbow/Brainbow Brainbow] || {{Evaluating}} || {{Evaluating}} || https://github.com/Bitcoin-Brainbow/Brainbow/issues/98
|-
|-
| Breadwallet || {{No}} || {{No}} ||
| Breadwallet || {{No}} || {{No}} ||
|-
| BTC.com || {{No}} || {{No}} ||
|-
| BTCPay Server || {{Yes}} || {{Yes}} || https://docs.btcpayserver.org/Payjoin/
|-
| Casa || {{No}} || {{No}} ||
|-
| CLN || {{Weak|DFC}} || {{Weak|DFC}} || [https://github.com/ElementsProject/lightning/blob/v23.02/CHANGELOG.md#0100---2021-03-28-neutralizing-fee-therapy dual funded channels] [https://twitter.com/niftynei/status/1585710438461116416 Evaluating BIP 78 support]
|-
|-
| Coinomi || {{No}} || {{No}} ||
| Coinomi || {{No}} || {{No}} ||
|-
|-
| BTC.com || {{No}} || {{No}} ||
| Eclair || {{Weak|DFC}} || {{Weak|DFC}} || [https://github.com/ACINQ/eclair/pull/2275 dual funded channels]
|-
| Electrum || {{Planned}} || {{Planned}} || https://github.com/spesmilo/electrum/issues/6585
|-
| [https://foundationdevices.com/envoy/ Envoy] || {{Evaluating}} || {{No}} || https://github.com/Foundation-Devices/envoy/pull/84
|-
| Fedimint || {{Evaluating}} || {{Evaluating}} || https://github.com/fedimint/fedimint/discussions/1764
|-
| [https://github.com/AreaLayer/FireBolt FireBolt] || {{Planned}} || {{Planned}}
|-
| [https://fullynoded.app Fully Noded] || {{Evaluating}} || {{Evaluating}} || https://github.com/Fonta1n3/FullyNoded/issues/126
|-
| Gordian Wallet || {{Evaluating}} || {{Evaluating}} || https://github.com/orgs/BlockchainCommons/discussions/49
|-
| Guarda Wallet || {{No}} || {{No}} ||
|-
| [https://jamapp.org/ JAM] || {{Planned}} || {{Planned}} || [https://github.com/joinmarket-webui/jam/blob/4d9171e15fe45100dd26db621576739af9b7e012/README.md?plain=1#L74 roadmap] [https://github.com/joinmarket-webui/jam/issues/406 issue]
|-
| JoinMarket || {{Yes}} || {{Yes}} || https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/PAYJOIN.md
|-
| [https://wizardsardine.com/liana/ Liana] || {{No}} || {{Evaluating}} || [https://github.com/wizardsardine/liana/issues/534 payjoin for automatic timelock refresh]
|-
| LND || {{Acceptable|Extension}} || {{Acceptable|Extension}} || [https://github.com/chaincase-app/nolooking nolooking bip 78 web app alpha], [https://github.com/alexbosworth/balanceofsatoshis/blob/9f2d32904617088069aa1f930db211711ba415e5/CHANGELOG.md?plain=1#L1494 Non-BIP78 dual funding via BoS]
|-
|-
| Casa || {{No}} || {{No}} ||
| [https://mutinywallet.com Mutiny Wallet] || {{Yes}} || {{Evaluating}} || Send [https://njump.me/nevent1qqsrtpdy9jd5r0dpsxcm4y5jw75zdcsgam2ka3shfj6xwu9ddmxlclqp2amhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0dec82c33d46hgmnev93kxwt4vv68gdtdd4u8vurswfmhxct4dg6hqvn30pcnjdtkx3snj63sdfuxcwrhde4kvan409ch2efjxdmxwqgdwaehxw309ahx7uewd3hkcqgcwaehxw309aex2mrp0yh8xmn0wf6zuum0vd5kzmqpzpmhxue69uhkummnw3ezuamfdejsz9rhwden5te0wfjkccte9ejxzmt4wvhxjmcpzemhxue69uhhyetvv9ujumn0wd68ytnzv9hxgqguwaehxw309ahx7um5wghx6at5d9h8jampd3kx2apwvdhk6qghwaehxw309ahx7um5wghxvmt59emkj73wvf5h5h30rus released in v0.5.7] receiver [https://github.com/MutinyWallet/mutiny-node/pull/820 in progresss], [https://stacker.news/items/200410 "payer side"  PDK evaluation from Mutiny devs], [https://github.com/MutinyWallet/mutiny-node/issues/194 planning issue]
|-
|-
| Mycelium || {{No}} || {{No}} ||
| Mycelium || {{No}} || {{No}} ||
|-
|-
| [https://play.google.com/store/apps/details?id=de.schildbach.wallet Bitcoin Wallet for Android] || {{No}} || {{No}} ||
|[https://nunchuk.io/ Nunchuk] || {{Evaluating}} || {{Evaluating}} || https://stacker.news/items/129571
|-
| Phoenix || {{No}} || {{Evaluating}} || [https://github.com/ACINQ/phoenix/issues/161 BIP 78 payjoin issue]
|-
| Samourai Wallet || {{Weak|Cahoots}} || {{Weak|Cahoots}} || https://samouraiwallet.com/stowaway
|-
| Sparrow Wallet || {{Yes}} || {{Weak|Cahoots}} || https://github.com/sparrowwallet/sparrow/releases/tag/0.9.7, https://github.com/sparrowwallet/sparrow/releases/tag/1.5.3
|-
| [https://specter.solutions/desktop/ Specter Desktop] || {{Evaluating}} || {{Evaluating}} || https://github.com/cryptoadvance/specter-desktop/issues/1369
|-
| [https://stackwallet.com Stack Wallet] || {{Evaluating}} || {{Evaluating}} || https://github.com/cypherstack/stack_wallet/issues/445
|-
| [https://trezor.io/trezor-suite Trezor Suite] || {{Evaluating}} || {{Evaluating}} || https://stacker.news/items/174289
|-
|-
| Trust Wallet || {{No}} || {{No}} ||
| Trust Wallet || {{No}} || {{No}} ||
|-
|-
| Guarda Wallet || {{No}} || {{No}} ||
| [https://lnvortex.com Vortex] || {{Evaluating}} || {{Evaluating}} || https://github.com/ln-vortex/ln-vortex/issues/407
|-
| Wasabi Wallet || {{Yes}} || [ {{Evaluating}} || https://docs.wasabiwallet.io/using-wasabi/PayJoin.html [https://github.com/zkSNACKs/WalletWasabi/pull/3582 receiver draft]
|-
| [https://zeusln.app/ Zeus] || {{Planned}} || {{Planned}} || [https://github.com/ZeusLN/zeus/blob/6f0e4568ce81ae9193ec8c272b0c7ac1299c2e8f/README.md?plain=1#L68 on feature roadmap]
|}
 
=== Software Libraries ===
{| class="wikitable sortable"
|-
! Name !! Sending !! Receiving !! Notes
|-
| [https://payjoindevkit.org PDK] || {{Yes}} || {{Yes}} || https://github.com/payjoin/rust-payjoin
|-
|-
| [https://bitcoin-s.org/ bitcoin-s] || {{Evaluating}} || {{Evaluating}} || https://github.com/bitcoin-s/bitcoin-s/issues/1362
|}
|}


Line 73: Line 128:
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Name !! Sending !! Receiving !! Notes
! Name !! Signing !! Notes
|-
| Coldcard || {{Yes}} || Hardware can sign bip78 payjoins and also http://ckbunker.com/
|-
| SeedSigner || {{Yes}} || https://twitter.com/KeithMukai/status/1654235825129893893
|-
|-
| Coldcard || {{Yes}} || {{No}} || Hardware can sign bip78 payjoins and also http://ckbunker.com/
| [https://trezor.io/trezor-model-one Trezor Model One] || {{Yes}} || https://stacker.news/items/174289
|-
|-
| [https://trezor.io/trezor-model-t Trezor Model T] || {{Yes}} || https://stacker.news/items/174289
|}
|}


Line 87: Line 147:
|-
|-
| [[BTCPay]] || {{Yes}} || First implementer of BIP78 payjoin for merchants.
| [[BTCPay]] || {{Yes}} || First implementer of BIP78 payjoin for merchants.
|-
| [https://satsale.org/ SatSale] || {{Planned}} || https://github.com/SatSale/SatSale/issues/39 https://twitter.com/SatoshiSale/status/1658894420295684096
|}
|}


Line 102: Line 164:
| Bisq || {{No}} || {{No}} ||
| Bisq || {{No}} || {{No}} ||
|-
|-
| Hodl Hodl || {{No}} || {{No}} ||
| [https://boltz.exchange/ Boltz] || {{Evaluating}} || {{Evaluating}} || https://stacker.news/items/83396
|-
| [https://www.bullbitcoin.com/ Bull Bitcoin] || {{Planned}} || {{Planned}} || https://twitter.com/francispouliot_/status/1138131827258986499
|-
| Hodl Hodl || {{Planned}} || {{Planned}} || https://twitter.com/hodlhodl/status/1352266122389827584
|-
|-
| LocalBitcoins  || {{No}} || {{No}} ||
| LocalBitcoins  || {{No}} || {{No}} ||
Line 111: Line 177:
|-
|-
| Paxful.com || {{No}} || {{No}} ||
| Paxful.com || {{No}} || {{No}} ||
|-
| [https://porticoexchange.github.io/porticoexchangev2.github.io/ Portico Exchange] || {{Evaluating}} || {{Evaluating}} || https://twitter.com/PorticoExchange/status/1671095545719590912
|-
|-
| Sideshift.ai || {{Yes}} || {{No}} || For "To send" choose "Bitcoin PayJoin"
| Sideshift.ai || {{Yes}} || {{No}} || For "To send" choose "Bitcoin PayJoin"
Line 121: Line 189:
|-
|-
! Name !! Receive !! URL !! Notes
! Name !! Receive !! URL !! Notes
|-
| payjoin.org || {{Yes}} || https://payjoin.org/ ||
|-
|-
| Human Rights Foundation || {{Yes}} || https://hrf.org/donate-bitcoin/payjoin/ ||
| Human Rights Foundation || {{Yes}} || https://hrf.org/donate-bitcoin/payjoin/ ||
|-
|-
| Waxwing's personal donation page || {{Yes}} || https://joinmarket.me/donations/ ||
| Waxwing's personal donation page || {{Yes}} || https://joinmarket.me/donations/ ||
|-
| Max Hillebrand's donation page || {{Yes}} || https://towardsliberty.com/btcpay/apps/27jLc1qpN8UXcQanHgeAsaEgLAio/pos ||
|}
|}


Line 142: Line 214:
=== Stores ===
=== Stores ===


// TODO
<!-- Alphabetical order please -->
{| class="wikitable sortable"
|-
! Name !! Receive !! Notes
|-
| [https://eataupa.com/cart/ Aupa Beef Bars] || {{Yes}} || https://twitter.com/EatAupa/status/1675307138288168960
|-
| Ideas Like Flames || {{Yes}} || https://twitter.com/ideaslikeflames/status/1389746824009949191
|-
| The Kratom Syndicate || {{Yes}} || https://thekratomsyndicate.com/blog/buying-kratom-with-payjoin.html
|-
| Namecheap || {{Yes}} || https://www.namecheap.com buy domains with BTCPayServer
|-
| [https://sats.coffee Satoshi Coffee Co.] || {{Yes}} || https://twitter.com/satscoffee/status/1679923696729837568
|}

Latest revision as of 14:31, 19 August 2024

PayJoin is a privacy improvement for bitcoin. Payjoin solves the sole privacy problem left open in the Bitcoin whitepaper, that transactions with multiple inputs "necessarily reveal that their inputs were owned by the same owner," because both the sender and receiver of a transfer contribute inputs to the transaction.

Transaction surveillance companies heavily depend on the common input ownership assumption which is broken by PayJoin transactions. So if those transactions became even a little bit widespread they could massively decrease the reliability of blockchain surveillance. Those who adopt PayJoin would find their privacy improved from strangers analyzing the blockchain. For example a surveillance company spy would find it much harder to figure out which addresses and transactions belonged to a particular merchant that was using PayJoin, or who else transacted to them.

PayJoin transactions can be made indistinguishable from regular bitcoin transactions by design, so it's very hard to get an accurate number for how common they are.

The most widely adopted PayJoin protocol standard is BIP 0078.

No
Evaluating
Planned The developers said they plan to
Non-BIP78 Implements a form of PayJoin but not BIP78
Extension Can PayJoin using additional software
Yes Feature has been released

Software Wallets

Name Sending Receiving Notes
Armory No No
bcoin No No
BDK-CLI Live Draft Evaluating https://github.com/bitcoindevkit/bdk-cli/pull/156 https://github.com/bitcoindevkit/bdk-cli/issues/149
Bitcoin Core Extension Extension Beta CLI payjoin-client via RPC, native support under evaluation
Bitcoin Knots Extension Extension Beta CLI payjoin-client via RPC
Bitcoin Wallet for Android No No
BitMask Yes No Chrome extension only https://github.com/diba-io/bitmask-core/pull/121
Blink (Bitcoin Beach Wallet) Evaluating Evaluating https://twitter.com/nicolasburtey/status/1673760619374280705
Blixt Wallet Evaluating Evaluating https://t.me/blixtwallet/122197
Blockstream Green No No
BlueWallet Yes Planned https://old.reddit.com/r/Bitcoin/comments/j6qswf/bluewallet_releases_payjoin_bip78/
Brainbow Evaluating Evaluating https://github.com/Bitcoin-Brainbow/Brainbow/issues/98
Breadwallet No No
BTC.com No No
BTCPay Server Yes Yes https://docs.btcpayserver.org/Payjoin/
Casa No No
CLN DFC DFC dual funded channels Evaluating BIP 78 support
Coinomi No No
Eclair DFC DFC dual funded channels
Electrum Planned Planned https://github.com/spesmilo/electrum/issues/6585
Envoy Evaluating No https://github.com/Foundation-Devices/envoy/pull/84
Fedimint Evaluating Evaluating https://github.com/fedimint/fedimint/discussions/1764
FireBolt Planned Planned
Fully Noded Evaluating Evaluating https://github.com/Fonta1n3/FullyNoded/issues/126
Gordian Wallet Evaluating Evaluating https://github.com/orgs/BlockchainCommons/discussions/49
Guarda Wallet No No
JAM Planned Planned roadmap issue
JoinMarket Yes Yes https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/PAYJOIN.md
Liana No Evaluating payjoin for automatic timelock refresh
LND Extension Extension nolooking bip 78 web app alpha, Non-BIP78 dual funding via BoS
Mutiny Wallet Yes Evaluating Send released in v0.5.7 receiver in progresss, "payer side" PDK evaluation from Mutiny devs, planning issue
Mycelium No No
Nunchuk Evaluating Evaluating https://stacker.news/items/129571
Phoenix No Evaluating BIP 78 payjoin issue
Samourai Wallet Cahoots Cahoots https://samouraiwallet.com/stowaway
Sparrow Wallet Yes Cahoots https://github.com/sparrowwallet/sparrow/releases/tag/0.9.7, https://github.com/sparrowwallet/sparrow/releases/tag/1.5.3
Specter Desktop Evaluating Evaluating https://github.com/cryptoadvance/specter-desktop/issues/1369
Stack Wallet Evaluating Evaluating https://github.com/cypherstack/stack_wallet/issues/445
Trezor Suite Evaluating Evaluating https://stacker.news/items/174289
Trust Wallet No No
Vortex Evaluating Evaluating https://github.com/ln-vortex/ln-vortex/issues/407
Wasabi Wallet Yes Evaluating https://docs.wasabiwallet.io/using-wasabi/PayJoin.html receiver draft
Zeus Planned Planned on feature roadmap

Software Libraries

Name Sending Receiving Notes
PDK Yes Yes https://github.com/payjoin/rust-payjoin
bitcoin-s Evaluating Evaluating https://github.com/bitcoin-s/bitcoin-s/issues/1362

Hardware Wallets

Name Signing Notes
Coldcard Yes Hardware can sign bip78 payjoins and also http://ckbunker.com/
SeedSigner Yes https://twitter.com/KeithMukai/status/1654235825129893893
Trezor Model One Yes https://stacker.news/items/174289
Trezor Model T Yes https://stacker.news/items/174289

Payment processors

Name Receive Notes
BTCPay Yes First implementer of BIP78 payjoin for merchants.
SatSale Planned https://github.com/SatSale/SatSale/issues/39 https://twitter.com/SatoshiSale/status/1658894420295684096

Exchanges

P2P exchanges make the most sense as early adoptors of PayJoin. All exchanges are welcome on this list of course.

Name Send to exchange Receive from exchange Notes
AgoraDesk No No
Bisq No No
Boltz Evaluating Evaluating https://stacker.news/items/83396
Bull Bitcoin Planned Planned https://twitter.com/francispouliot_/status/1138131827258986499
Hodl Hodl Planned Planned https://twitter.com/hodlhodl/status/1352266122389827584
LocalBitcoins No No
LocalCoinSwap No No
LocalCryptos No No
Paxful.com No No
Portico Exchange Evaluating Evaluating https://twitter.com/PorticoExchange/status/1671095545719590912
Sideshift.ai Yes No For "To send" choose "Bitcoin PayJoin"

Non-profits

Name Receive URL Notes
payjoin.org Yes https://payjoin.org/
Human Rights Foundation Yes https://hrf.org/donate-bitcoin/payjoin/
Waxwing's personal donation page Yes https://joinmarket.me/donations/
Max Hillebrand's donation page Yes https://towardsliberty.com/btcpay/apps/27jLc1qpN8UXcQanHgeAsaEgLAio/pos

Casinos

Bitcoin casinos are very natural early-adopters of PayJoin. An early protocol specification for it, called bustapay, was created by the owner of a bitcoin casino.

Name Send to Receive Notes
Bustabit No No

Stores

Name Receive Notes
Aupa Beef Bars Yes https://twitter.com/EatAupa/status/1675307138288168960
Ideas Like Flames Yes https://twitter.com/ideaslikeflames/status/1389746824009949191
The Kratom Syndicate Yes https://thekratomsyndicate.com/blog/buying-kratom-with-payjoin.html
Namecheap Yes https://www.namecheap.com buy domains with BTCPayServer
Satoshi Coffee Co. Yes https://twitter.com/satscoffee/status/1679923696729837568