Network
A network names one feed to watch: an id, a chain tag, and a source
module selection (Network, crates/blockwatcher-types/src/resource.rs). It
is written through PUT /networks/{id} on the HTTP API or
as one JSON file under a seed directory’s networks/ subdirectory. Writing a
network always restarts that network’s pipeline; the restart is cheap because
the checkpoint survives it, per
Resources § Lifecycle.
A complete network resource. The example below is an EVM evm-rpc
network; other families’ source.config shapes are on the
family page. The source.config object is
registry_examples/evm_rpc.json from crates/blockwatcher-evm/src/,
copied verbatim from the same file the crate’s family-completeness test
constructs (the resource envelope around it precludes a literal include);
any change to that file updates this example in the same change, per the
wiki-parity rule:
{
"id": "eth-mainnet",
"chain": "evm",
"source": {
"module": "evm-rpc",
"config": {
"start_block": 18000000,
"endpoints": [
{
"name": "alchemy",
"url_secret": "env:BLOCKWATCHER_EXAMPLE_EVM_RPC_URL",
"priority": "high",
"rate_limit": { "rps": 25 }
},
{
"name": "public",
"url_secret": "env:BLOCKWATCHER_EXAMPLE_EVM_RPC_URL_FALLBACK",
"priority": "low"
}
],
"confirmations": 12
}
}
}
Fields
Network rejects an unrecognized field (#[serde(deny_unknown_fields)]), so
a typo’d key fails the write rather than being silently ignored.
| Key | Type | Default | Meaning |
|---|---|---|---|
id | string | none (required) | The network’s name, referenced by every monitor’s network field. |
chain | string | none (required) | The chain family tag. The write refuses a chain with no loaded decoder. |
source | object | none (required) | A ModuleSel: which source module feeds this network, plus that module’s own config. |
source is the universal module envelope (ModuleSel, resource.rs):
| Key | Type | Default | Meaning |
|---|---|---|---|
module | string | none (required) | The source module’s name, as listed by GET /catalog. |
config | object | none (required) | The named module’s own config. Its shape is family-owned; see the family page. |
Write-time validation constructs the named module with the given config, so
every refusal quoted below is raised at the write (as a 422) or at seed
validation, never discovered later at runtime. Updating an existing network
additionally recompiles every monitor already stored for it against the
incoming chain, refusing a chain reassignment that would strand them, per
put_network (crates/blockwatcher-core/src/control/writes.rs).
Family-owned source.config field tables, including each family’s
endpoint vocabulary, live on that family’s page under
Chain families.