fuzz_hook
Identifies a Hook's accept/rollback boundary by executing its bytecode on deterministically generated inputs, sweeping tx types, amounts, and account fields to reveal accepting and rejecting inputs.
Instructions
DIFFERENTIAL FUZZER: finds a Hook's accept/rollback decision boundary by running its REAL bytecode through the local VM against many DETERMINISTICALLY generated inputs (no randomness, no clock — fully reproducible). Sweeps axes you request: txType (a supplied list or all tx types), a raw otxn Amount-field byte range, otxn account/destination ids, and named otxn params. Reports counts {accept,rollback,halted,degraded}, per-axis boundary findings, and concrete accepting/rejecting sample inputs. Honest: degraded/halted runs are counted but excluded from the boundary; if every run degrades/halts it says INCONCLUSIVE and why. fidelity LOCAL_VM_FUZZ.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | ||
| txType | No | base originating tx type | |
| feeBase | No | ||
| samples | No | number of generated inputs (default 64, max 512) | |
| txTypes | No | txType axis: tx types to sweep, e.g. ["Payment","Invoke"]. Default: all known tx types (capped). | |
| wasmHex | No | ||
| amountMax | No | Amount axis high (raw drops) | |
| amountMin | No | Amount axis low (raw drops; field bytes are NOT STAmount-encoded) | |
| ledgerSeq | No | ||
| hookParams | No | ||
| otxnFields | No | ||
| otxnParams | No | ||
| paramSweep | No | named otxn params -> candidate hex values to sweep | |
| wasmBase64 | No | ||
| amountField | No | otxn field id to write the Amount sweep into (default 6) | |
| sweepAccount | No | also sweep a few deterministic account ids | |
| hookAccountId | No | ||
| sweepDestination | No | also sweep a few deterministic destination ids |