Bustapay: a practical sender/receiver coinjoin protocol
One of the main features intended for Bitcoin in the future is a native support for multisig payments and coinjoins, they are currently supported by the Blockchain but not in a native way and as such they do not have as much efficiency and privacy as desired. This is going to be the main focus of the next major update in Bitcoin, changing the signature scheme to Schnorr Signatures.
As a simplified alternative to Pay-to-Endpoint (P2EP - Pay-to-Endpoint), developer Ryan Havar proposed a BIP for a new coinjoins protocol that does not need changes to the current Bitcoin consensus and provides a simple, practical way to make coinjoin transactions that are indistinguishable from normal ones.
The protocol was kept as simple as it could be to further encourage adoption, the specifications are quite easy to follow and to implement.
The sender starts by sending the receiver an original signed and fully valid transaction, usually called the “template transaction” and sends it to the receiver using any way of communication, generally this would be a HTTPS Post request.
Once the receiver gets this transaction and is fully sure of its validity, they add one of their own inputs and increase the outputs to himself, since doing so invalidates the transaction they then send it back to the other party and wait for them to sign and validate it. Once the transaction is signed it is propagated on the blockchain.
If the original sender refuses to cooperate and sign the second transaction, the receiver can always propagate the first signed transaction, this does not include the coinjoin benefit but can guarantee they receive their coins.
In this transaction, there are not only inputs from the sender but also from the receiver, to a blockchain analysis tool there is no way of figuring out which inputs belong to which users and the original assumption of only one signer does not hold.
Although the process is simple, its still in its infancy stage and would need multiple wallets to support it. In the end, P2EP and Bustapay may end up being implemented only by a few wallets and services like the BIP70 protocol, they could as well end up widely adopted like for the BIP21 URI handlers. If you’d like to join further discussions on this, you can head to the bitcoin-dev mailing list.