Når du signerer en transaksjon, signerer du ikke de rå bytene. Du signerer en hash av utvalgte deler, kalt signature hash. Et én-byte sighash-flagg på slutten av signaturen sier hvilke deler.
Flaggene
- SIGHASH_ALL (standard): forplikter seg til alle inndata og utdata.
- SIGHASH_NONE: forplikter seg bare til inndata; alle kan endre utdataene.
- SIGHASH_SINGLE: forplikter seg til utdataen med samme indeks som denne inndataen.
- ANYONECANPAY kan kombineres med hvert, slik at signaturen bare forplikter seg til sin egen inndata.
Oppgraderinger
BIP143 (SegWit v0) fikk signerere til å forplikte seg til beløpet som brukes, noe som fikset kvadratisk hashing og hjelper maskinvarelommebøker. BIP341 (Taproot) gikk lenger og forplikter seg til alle brukte beløp og scripts, og la til SIGHASH_DEFAULT, som oppfører seg som ALL men sparer en byte.