VTA Benchmark
Deep Technical Audit

Transaction Signature Hash + SIGHASH Modes

A signature does not sign an abstract “transaction”; it signs a digest constructed from transaction data and a hash-type mode. This page documents the legacy signature-hash model relevant to the VTA code lineage and clearly separates source-confirmed VTA facts from general SIGHASH semantics that still require exact VTA release tracing.

SIGHASH_ALL

LEGACY SEMANTICS

Commits the signature to the transaction inputs and outputs under the legacy ALL signing model.

SIGHASH_NONE / SINGLE

LEGACY SEMANTICS

NONE leaves outputs outside the signature commitment; SINGLE commits the corresponding output under the legacy rules.

ANYONECANPAY

LEGACY SEMANTICS

Combined with ALL/NONE/SINGLE, it changes the input commitment so the signature can be associated with only the signed input.

Signature-Hash Flow

Transactioninputs + outputs scriptCodespending script context SIGHASH TypeALL / NONE / SINGLE Digestsignature preimage ECDSA Verifypubkey + signature OK? Mode-dependent commitment ALL → inputs + outputs • NONE → outputs largely excluded • SINGLE → corresponding output ANYONECANPAY changes the input commitment by excluding the other inputs from the signed digest. Legacy edge case Legacy SIGHASH_SINGLE has a special out-of-range behavior; exact VTA implementation must be pinned to its release. No modern SegWit/Taproot sighash rules are imported into this VTA audit.

Audit Matrix

AreaFindingStatus
Signature hash conceptThe signature verification path uses a transaction-derived digest rather than signing raw transaction bytes directly.Legacy architecture
SIGHASH_ALLLegacy SIGHASH_ALL commits the signed input set and outputs under the standard legacy signing model.Legacy semantics
SIGHASH_NONELegacy SIGHASH_NONE omits the output commitment from the signature hash.Legacy semantics
SIGHASH_SINGLELegacy SIGHASH_SINGLE commits the output corresponding to the signed input, with a defined legacy out-of-range edge case.Legacy semantics
SIGHASH_ANYONECANPAYThe high-bit modifier changes which inputs are committed; it can be combined with ALL/NONE/SINGLE.Legacy semantics
Exact VTA SignatureHash() implementationThe current audit package does not claim a release-pinned line-by-line VTA SignatureHash() reconstruction.Release-specific verification required
Modern witness sighashBIP143/SegWit semantics are not treated as VTA evidence.Not established
Taproot sighashTaproot-specific SIGHASH_DEFAULT and BIP341 rules are not treated as VTA evidence.Not established
Independent test vectorsNo VTA-specific signature-hash corpus was executed by this page.Not measured

Test Vector Format for Future Verification

tx_hex:        <raw transaction>
input_index:   <nIn>
script_code:   <locking/spending script context>
hash_type:     01 / 02 / 03 / 81 / 82 / 83 ...
expected_hash: <32-byte digest>

A release-pinned verifier can compare these fields against the VTA implementation and then feed the resulting digest into ECDSA verification.

Evidence rule: This page deliberately distinguishes legacy SIGHASH semantics from VTA release-specific implementation evidence. Modern Bitcoin signature-hash behavior is not silently substituted for VTA.