9

What SIGHASH flags are used when constructing a CoinJoin transaction?

Nick ODell
  • 29,396
  • 11
  • 72
  • 130

1 Answers1

9

CoinJoin uses SIGHASH_ALL.

I initially found this confusing because I assumed the interface to CoinJoin a little less synchronized than it is. CoinJoin requires each participant to first specify a UTXO and a public key to pay out to.

Someone then constructs a partially complete transaction which makes use of those UTXOs and pays out to the public keys specified by the participants -- this transaction is "partially complete" because it doesn't yet have signatures which unencumber the UTXOs. Each participant then signs their input with SIGHASH_ALL, which prevents outputs from being manipulated after the fact.

James O'Beirne
  • 106
  • 1
  • 3