Skip to main content
Backtest your rules against real blockchain transactions to verify they work correctly.
# Test all rules against a transaction (default behavior)
# Uses all rule directories: rules/default, rules/custom, and rules/testing (if exists)
./blocklight dry-run \
  --tx 0x9e5c7835e4fcd9a289820c4e42c623c4ab80bd50896b4e5b27e3c18f79be6341 \
  --network ethereum

# Test a specific rule against a transaction
./blocklight dry-run \
  --tx 0xabc123... \
  --rule rules/custom/test_rule.yaml \
  --network ethereum

# Test all rules in a specific directory only
./blocklight dry-run \
  --tx 0xabc123... \
  --rules rules/custom/ \
  --network ethereum

Output Shows

  • Which rules matched and why
  • References from matched rules (if the rule has references field)
  • Execution time
  • Summary statistics

Rule Directories

By default, dry-run uses all available rule directories:
  • rules/default - Default detection rules
  • rules/custom - Your custom rules (if directory exists)
  • rules/testing - Testing rules (if directory exists, only in dry-run)
Important: Rules in rules/testing/ are NEVER loaded in production (when running blocklight start). They are automatically included in dry-run for testing purposes. If you specify --rules or --rule, only that specific directory or file will be used instead of all directories.
Test new rules against known exploits before going live. Verify false positive rates. Use rules/testing/ for safe experimentation.