Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

blockwatcher

blockwatcher runs as a long-lived service that operators reconfigure entirely through its REST API: adding networks, contract specs, or delivery targets never requires stopping the process. Under the hood, it turns incoming on-chain data into typed values using the contract specifications you register, then runs your own conditions against that data to decide what counts as a match. Because none of this logic is chain-specific, chain support comes from swappable modules rather than the core itself, for example Ethereum and other EVM chains (the EVM module family ships with blockwatcher; other chain families plug in as modules without touching the core). It hands off each match to whatever endpoint, script, or log file you’ve wired up.

How to read this wiki

I want to…Start with…
Understand what blockwatcher doesUnderstanding
Get it runningGetting started, Guides
Operate it in productionConcepts, Reference
Contribute or extend itInternals
Embed the engine in another processEmbedding

The whole system in one picture

flowchart LR
    rpc["RPC endpoints<br/>(external chains)"]
    sources["Sources<br/>evm-rpc · evm-mempool"]
    sinks["Sinks<br/>webhook · script · log"]
    storage["Storage<br/>checkpoints · dead letters · resources"]
    api["REST API"]
    metrics["Metrics"]
    engine["engine<br/>bounded channels · checkpoints"]

    subgraph pipeline["Engine pipeline"]
        direction LR
        decoder["Decoder"]
        matcher["Matcher<br/>predicates"]
        gate["Gate<br/>threshold · max_once"]
        decoder --> matcher
        matcher --> gate
    end

    rpc --> sources
    sources -->|"decode and match"| decoder
    gate --> sinks
    api -->|"manages resources"| storage
    storage <--> engine
    engine -->|"drives"| pipeline
    engine -.->|"reports"| metrics

    classDef module fill:none,stroke:#a9a3e3
    classDef core fill:none,stroke:#8a8d86,stroke-dasharray: 5 5

    class rpc,sources,sinks,decoder,matcher,gate module
    class engine,api,storage,metrics core
click sources "concepts/selectors.html"
click decoder "concepts/chain-agnosticism.html"
click matcher "concepts/predicates.html"
click gate "concepts/gates.html"
click sinks "concepts/delivery.html"
click storage "concepts/resources.html"
click api "reference/http-api.html"
click metrics "reference/observability.html"
click engine "concepts/pipeline.html"

Local development

Build and serve the wiki:

cargo install mdbook mdbook-mermaid --locked
mdbook serve docs/wiki --open

Release notes

Consumer-visible changes are tracked in the root CHANGELOG.md.