chain-metrics

command module
v0.0.0-...-0a96533 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2024 License: MIT Imports: 39 Imported by: 0

README

Chain metrics

experimental, this is not prod-ready yet

Onchain time-series metrics service.

Supported chains:

  • Ethereum
  • OP Stack

PRs for alt-chains are welcome if dependencies are kept minimal, please first open an issue to propose changes.

Config file

Data sources and targets are defined in a YAML config file:

db:
  # VictoriaMetrics API endpoint
  victoria:

# Chains, more can be added
# Note that some L2 chains rely on L1 chain entries
chains:
  eth_mainnet:
    beacon_era:
    beacon_api:
    eth_rpc:
    type: ethereum
    min_time:  # TODO Merge time
  eth_goerli:
    beacon_era:
    beacon_api:
    eth_rpc:
    type: ethereum
    min_time:  # TODO Merge time
  op_mainnet:
    eth_rpc:
    op_rpc:
    type: opstack
    l1: eth_mainnet
    min_time:  # TODO Bedrock upgrade time
  op_goerli:
    eth_rpc:
    op_rpc:
    type: opstack
    l1: eth_goerli
    min_time:  # TODO Bedrock upgrade time
  base_goerli:
    eth_rpc:
    op_rpc:
    type: opstack
    l1: eth_goerli
    min_time: # TODO genesis time
  # ...

Types:

  • ethereum: Ethereum Beacon-chain
  • opstack: OP-stack chain, an L2 if l1 attribute is specified.

A min_time can be specified to enforce a lower-bound range, to ignore any legacy / unavailable history.

beacon_era (planned)

An Era-store may optionally be used to quickly read L1 chain-data, instead of fetching the blocks through eth_rpc and beacon_api. This is recommended when backfilling historical data.

beacon_api (planned)

A Beacon-API may be used for ethereum

eth_rpc

A JSON-RPC source is required for receipts-related chain metrics. Some metrics rely on receipts data. debug_getRawReceipts should be open to read receipts efficiently.

op_rpc

Used to retrieve the rollup-config of the OP chain.

CSV backfill into VictoriaMetrics (planned)

Historical data can be generated and inserted into victoria metrics:

chain-metrics backfill --start-time=... --end-time=...

This happens in batches, through the CSV data-insertion endpoint. https://github.com/VictoriaMetrics/VictoriaMetrics#how-to-import-csv-data

CSV dump (planned)

chain-metrics csv --start-time=... --end-time=...

Live update into VictoriaMetrics (planned)

chain-metrics live
Reorg handling

Time-series data is labeled with timestamp / (60*60): mh ("metrics hour") If a reorg is detected, the invalidated data can be deleted by selecting by mh. VictoriaMetrics does support merging/deletion of time-series, but not partial merges/deletion.

To avoid high-cardinality, finalized data can be merged into a single time-series.

A retention-period can be configured in VictoriaMetrics to prune old data, even though only a partial time-series.

License

MIT, see LICENSE file.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL