MCPcopy Index your code
hub / github.com/ethereum-optimism/monitorism

github.com/ethereum-optimism/monitorism @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
2,832 symbols 5,149 edges 77 files 2,608 documented · 92%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Monitorism

Monitorism is a tooling suite that supports monitoring and alerting for the OP Stack chain.

The suite is composed of op-monitorism; see below for more details.

Docker images

Op-Monitorism

Op-Monitorism Docker images are published with each release and build, ensuring you have access to the latest features and fixes.

The latest release version for linux/amd64 can be found in the release notes

To pull the latest Docker image, run:

docker pull --platform linux/amd64 us-docker.pkg.dev/oplabs-tools-artifacts/images/op-monitorism:latest

To pull a specific release version

docker pull --platform linux/amd64 us-docker.pkg.dev/oplabs-tools-artifacts/images/op-monitorism:v0.0.4

Note: The --platform flag is necessary for Mac computers with ARM chips to ensure compatibility with the linux/amd64 architecture.

To build the Docker image locally, execute the following command:

docker build -t op-monitorism ./op-monitorism

Use "-t op-monitorism" to tag the image with the name op-monitorism for easier reference.

Monitors Components

The monitors are passive security services that provide automated monitoring for the OP Stack. There are components that are designed to make monitoring of the OP stack and alerting on specific events, that could be a sign of a security incident.

The list of all the monitors currently built into op-monitorism is below.

Global Events Monitor

df2b94999628ce8eee98fb60f45667e54be9b13db82add6aa77888f355137329

The Global Events Monitor is made for to taking YAML rules as configuration and monitoring the events that are emitted on the chain.

op-monitorism/global_events README

Liveness Expiration Monitor

ab27497cea05fbd51b7b1c2ecde5bc69307ac0f27349f6bba4f3f21423116071

The Liveness Expiration Monitor is made for monitoring the liveness expiration on Safes.

op-monitorism/liveness_expiration README

Withdrawals Monitor

6d5477f5585cb49ff2f8bd147c2e7037772de6a1dd128ce4331596b011ce6ea9

The withdrawals monitor checks for new withdrawals that have been proven to the OptimismPortal contract. Each withdrawal is checked against the L2ToL1MessagePasser contract.

op-monitorism/withdrawals README

Balances Monitor

5cd47a6e0f2fb7d921001db9eea24bb62bb892615011d03f275e02a147823827

The balances monitor simply emits a metric reporting the balances for the configured accounts.

op-monitorism/balances README

Fault Monitor

148f61f4600327b94b55be39ca42c58c797d70d7017dbb7d56dbefa208cc7164

The fault monitor checks for changes in output roots posted to the L2OutputOracle contract. On change, reconstructing the output root from a trusted L2 source and looking for a match.

op-monitorism/fault README

Multisig Monitor

7dab260ee38122980274fee27b114c590405cff2e5a68e6090290ecb786b68f2

The multisig monitor reports the paused status of the OptimismPortal contract. If set, the latest nonce of the configured Safe address. And also if set, the latest presigned nonce stored in One Password. The latest presigned nonce is identified by looking for items in the configured vault that follow a ready-<nonce>.json name. The highest nonce of this item name format is reported.

op-monitorism/multisig README

Drippie Monitor

The drippie monitor tracks the execution and executability of drips within a Drippie contract.

op-monitorism/drippie README

Secrets Monitor

The secrets monitor takes a Drippie contract as a parameter and monitors for any drips within that contract that use the CheckSecrets dripcheck contract. CheckSecrets is a dripcheck that allows a drip to begin once a specific secret has been revealed (after a delay period) and cancels the drip if a second secret is revealed. It's important to monitor for these secrets being revealed as this could be a sign that the secret storage platform has been compromised and someone is attempting to exfiltrate the ETH controlled by that drip.

op-monitorism/secrets README

Transaction Monitor

The transaction monitor takes in a yaml config in order to run, and monitors transaction sent by a specific address, tracking both cumulative eth sent, as well as tunable thresholds for specific alerts. It is also configurable to support working against factory contracts, right now just the FaultDisputeGame factory to ensure the addresses are only interacting with valid fault dispute games.

op-monitorism/transaction_monitor README

ETH Conservation Monitor

The ETH conservation monitor traces L2 blocks and asserts that they adhere to the L2 ETH conservation invariant.

op-monitorism/conservation_monitor README

Faultproof Withdrawal

The Faultproof Withdrawal component monitors ProvenWithdrawals events on the OptimismPortal contract and performs checks to detect any violations of invariant conditions on the chain. If a violation is detected, it logs the issue and sets a Prometheus metric for the event.

This component is designed to work exclusively with chains that are already utilizing the Fault Proofs system. This is a new version of the deprecated chain-mon faultproof-wd-mon. For detailed information on how the component works and the algorithms used, please refer to the component README.

op-monitorism/faultproof_withdrawals README

CLI & Docs

Bootstrap

After cloning, please run ./bootstrap.sh to set up the development environment correctly.

Command line Options

The cli has the ability to spin up a monitor for varying activities, each emitting metrics used to setup alerts.

COMMANDS:
   multisig                Monitors OptimismPortal pause status, Safe nonce, and Pre-Signed nonce stored in 1Password
   fault                   Monitors output roots posted on L1 against L2
   withdrawals             Monitors proven withdrawals on L1 against L2
   balances                Monitors account balances
   drippie                 Monitors Drippie contract
   secrets                 Monitors secrets revealed in the CheckSecrets dripcheck
   global_events           Monitors global events with YAML configuration
   liveness_expiration     Monitor the liveness expiration on Gnosis Safe.
   faultproof_withdrawals  Monitors withdrawals on the OptimismPortal in order to detect forgery. Note: Requires chains with Fault Proofs.
   version                 Show version
   help, h                 Shows a list of commands or help for one command

Each monitor has some common configuration, configurable both via cli or env with defaults.

OPTIONS:
   --log.level value           [$MONITORISM_LOG_LEVEL]           The lowest log level that will be output (default: INFO)
   --log.format value          [$MONITORISM_LOG_FORMAT]          Format the log output. Supported formats: 'text', 'terminal', 'logfmt', 'json', 'json-pretty', (default: text)
   --log.color                 [$MONITORISM_LOG_COLOR]           Color the log output if in terminal mode (default: false)
   --metrics.enabled           [$MONITORISM_METRICS_ENABLED]     Enable the metrics server (default: false)
   --metrics.addr value        [$MONITORISM_METRICS_ADDR]        Metrics listening address (default: "0.0.0.0")
   --metrics.port value        [$MONITORISM_METRICS_PORT]        Metrics listening port (default: 7300)
   --loop.interval.msec value  [$MONITORISM_LOOP_INTERVAL_MSEC]  Loop interval of the monitor in milliseconds (default: 60000)

Extension points exported contracts — how you extend this code

Defender (Interface)
(no doc) [13 implementers]
op-defender/defender.go
Monitor (Interface)
(no doc) [13 implementers]
op-monitorism/monitorism.go
BlockFetcher (Interface)
Needed so that we can mock the interface for tests [3 implementers]
op-monitorism/faultproof_withdrawals/validator/utils.go
Executor (Interface)
Executor is an interface that defines the FetchAndExecute method. [2 implementers]
op-defender/psp_executor/defender.go
TxProcessingFunc (FuncType)
TxProcessingFunc is the type for transaction processing functions
op-monitorism/processor/processor.go
CheckFunc (FuncType)
CheckFunc is a type for address verification functions
op-monitorism/transaction_monitor/checks.go
BlockProcessingFunc (FuncType)
TxProcessingFunc is the type for block processing functions
op-monitorism/processor/processor.go
ParamValidationFunc (FuncType)
ParamValidationFunc is a type for parameter validation functions
op-monitorism/transaction_monitor/checks.go

Core symbols most depended-on inside this repo

String
called by 99
op-monitorism/faultproof_withdrawals/state.go
Error
called by 62
op-monitorism/secrets/bindings/drippie.go
Call
called by 36
op-monitorism/transaction_monitor/bindings/dispute/DisputeGame.go
Call
called by 36
op-monitorism/withdrawals-v2/bindings/FaultDisputeGame.go
Call
called by 36
op-monitorism/faultproof_withdrawals/bindings/dispute/FaultDisputeGame.go
Error
called by 29
op-monitorism/faultproof_withdrawals/bindings/l1/OptimismPortal2.go
Call
called by 22
op-monitorism/multisig/bindings/L2OutputOracle.go
Call
called by 22
op-monitorism/fault/binding/L2OutputOracle.go

Shape

Method 2,103
Struct 456
Function 258
FuncType 5
Interface 4
TypeAlias 4
Class 2

Languages

Go99%
Python1%

Modules by API surface

op-monitorism/liveness_expiration/bindings/GnosisSafe.go240 symbols
op-monitorism/transaction_monitor/bindings/dispute/DisputeGame.go174 symbols
op-monitorism/withdrawals-v2/bindings/FaultDisputeGame.go173 symbols
op-monitorism/faultproof_withdrawals/bindings/dispute/FaultDisputeGame.go173 symbols
op-monitorism/faultproof_withdrawals/bindings/l1/OptimismPortal2.go172 symbols
op-monitorism/withdrawals-v2/bindings/OptimismPortal2.go171 symbols
op-monitorism/secrets/bindings/drippie.go144 symbols
op-monitorism/drippie/bindings/drippie.go144 symbols
op-monitorism/withdrawals/bindings/OptimismPortal.go119 symbols
op-monitorism/multisig/bindings/OptimismPortal.go119 symbols
op-monitorism/multisig/bindings/L2OutputOracle.go119 symbols
op-monitorism/fault/binding/OptimismPortal.go119 symbols

For agents

$ claude mcp add monitorism \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact