Skip to content

Surface the reason for skipped (unverifiable) inputs during validation #19

Description

@melvincarvalho

The engine fully verifies legacy, P2SH, segwit v0, and taproot (both key-path and script-path). It returns {ok: null} only for genuinely-unverifiable inputs:

  • unknown/future witness versions (v2+),
  • unknown tapleaf versions (≠ 0xc0),
  • taproot inputs whose prevouts can't all be resolved.

verifyInput already includes a reason on those null results, but validateBlockContext's btc:rule-blockctx-scripts only counts them (unsupported++) and returns null — so we can't see which inputs were skipped or why. The follow-loop just prints "N skip".

Goal: surface the per-input skip reason (a thin engine change to collect reasons in the scripts-rule result, or a node-side pass logging verifyInput null reasons) so we can confirm we only ever skip the genuinely-unverifiable — not something silently missed.

(Note: corrects an earlier mistaken claim that key-path taproot was unimplemented — it is implemented; the interpreter.js line-10 comment is stale.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions