Join our Newsletter — 33% off our NHI Course

SIGHASH_ALL

SIGHASH_ALL is a Bitcoin signature flag that commits a transaction signature to all inputs and all outputs. A signature made with this flag becomes invalid if any covered input or output changes, which prevents later alteration of the signed transaction contents.

How SIGHASH_ALL Works

SIGHASH_ALL is a Bitcoin signature flag that binds a transaction signature to the full set of inputs and outputs. That binding makes the signed transaction state tamper-evident, because any later change to a covered input or output breaks the signature.

The practical effect is that the signer is approving the entire transaction, not just a fragment of it. In a Bitcoin context, that matters because transaction structure is part of the security boundary: if one party could alter outputs after signature creation, they could redirect value or change the settlement terms without invalidating the original approval.

Why This Commitment Matters for Transaction Integrity

SIGHASH_ALL is the conservative default mental model for Bitcoin transaction signing. It is designed to prevent partial re-writing of a transaction after a signature has been produced, which helps preserve sender intent and reduces the room for post-signature manipulation.

This also means the signer must be confident in every output included at signing time, because the signature extends to them all. That is useful for integrity, but it can be operationally rigid when a transaction needs later adjustment, since any change to the committed contents requires a fresh signature.

Where SIGHASH_ALL Fits in Bitcoin Signing

The flag is part of Bitcoin’s signature-hash behaviour, which determines exactly what data a signature covers. Different signature flags exist to support different commitment scopes, but SIGHASH_ALL is the broadest common choice when the goal is to sign the entire transaction as a single unit.

For readers comparing transaction-signing behaviours, the key idea is that this flag is about scope, not strength in the abstract. It does not make a signature “more cryptographic” than another flag; it changes what the signature authorises and what kinds of transaction mutation remain possible afterward.

Security Implications of Full Transaction Commitment

Full commitment improves integrity by making unauthorized output substitution and input rewriting fail validation. That makes SIGHASH_ALL especially important in workflows where the signer wants to ensure that fees, recipients, and amounts remain exactly as reviewed.

It also means any compromised signing process can have broad consequences, because the attacker is not trying to alter a small portion of the transaction, they are trying to influence the entire signed payload before it is finalised.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

NIST SP 800-53 Rev 5, NIST SP 800-57 and OWASP ASVS set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.

Framework Control / Reference Relevance
NIST SP 800-53 Rev 5 SI-7 — Software, Firmware, and Information Integrity Transaction signatures preserve integrity of signed data and detect unauthorized modification.
Recommendation — Apply SI-7 to verify that signed transaction data cannot be altered without invalidating the signature.
NIST SP 800-57 Key Management Bitcoin signatures rely on key usage and integrity of signing operations.
Recommendation — Manage signing keys so transaction-authorizing signatures are created and protected under controlled key lifecycle rules.
OWASP ASVS V11 — Cryptography Cryptographic signing scope and integrity guarantees are central to understanding the flag.
Recommendation — Validate that signing logic binds the intended data set before a transaction is approved.
ISO/IEC 27001:2022 A.8.24 — Use of cryptography The term directly concerns a cryptographic signature mechanism and its integrity properties.
Recommendation — Define cryptographic use rules so signature scope and transaction integrity are handled consistently.

Practitioner Guidance

Why practitioners should care: Use SIGHASH_ALL when the business requirement is to freeze the full transaction state at signing time. It is the right default when the signer must approve every input and every output as an inseparable package.

What to watch for: If your workflow depends on later transaction edits, child transactions, or partial authorisation, make sure the chosen signature scope matches that design. A mismatch here creates either unnecessary rigidity or an opening for unintended mutation.

Practitioner takeaway: Treat SIGHASH_ALL as an integrity commitment to the whole transaction, not just a signing option.