Check whether signature encoding is constrained to canonical forms before script verification accepts the signature.
Separate signature encoding from public-key encoding. They are different validation surfaces.
SegWit witness commitments and modern BIP-specific rules are not imported into VTA evidence.
| Area | Documented finding | Status |
|---|---|---|
| Strict signature encoding | The previously verified VTA transaction-validation path invokes CheckInputs() with SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_STRICTENC. | Source path verified |
| ECDSA script operations | The reviewed VTA script engine contains CHECKSIG and CHECKMULTISIG execution paths. | Source path verified |
| Signature hash | Signature validation is connected to a transaction-derived signature digest and SIGHASH type in the legacy architecture. | Architecture documented |
| Canonical signature encoding | STRICTENC is an explicit validation flag in the reviewed transaction-input verification path. | Source path verified |
| Low-S normalization | No independent VTA-specific low-S consensus test was executed by this audit. | Not measured |
| Public-key canonicality | Public-key encoding rules require release-specific test vectors to establish exact VTA consensus behavior. | Needs test vectors |
| Transaction-ID malleability corpus | No before/after serialized transaction pair was executed against VTA Core in this package. | Not measured |
| SegWit witness malleability | Modern witness-based anti-malleability rules are not treated as VTA evidence. | Not established |
1. Take one known-valid VTA transaction. 2. Produce controlled signature-encoding variants. 3. Recalculate the serialized transaction ID. 4. Submit each variant to a VTA Core test node. 5. Record accepted/rejected result and exact error. 6. Repeat for CHECKSIG and CHECKMULTISIG. 7. Test public-key encoding variants separately. 8. Compare behavior against the exact VTA release/commit.