ethereum-optimism/monitorism

GitHub: ethereum-optimism/monitorism

一套面向 OP Stack 链的监控与主动响应工具集,解决链上异常事件的实时检测与自动化处置问题。

Stars: 38 | Forks: 34

- [Monitorism](#monitorism) - [Docker 镜像](#docker-images) - [监控组件](#monitors-components) - [全局事件监控器](#global-events-monitor) - [活跃度过期监控器](#liveness-expiration-monitor) - [提款监控器](#withdrawals-monitor) - [余额监控器](#balances-monitor) - [故障监控器](#fault-monitor) - [Multisig 监控器](#multisig-monitor) - [Drippie 监控器](#drippie-monitor) - [Secrets 监控器](#secrets-monitor) - [交易监控器](#transaction-monitor) - [ETH 保留监控器](#eth-conservation-monitor) - [Faultproof 提款](#faultproof-withdrawal) - [Defender 组件](#defender-components) - [HTTP API PSP Executor 服务](#http-api-psp-executor-service) - [CLI 与文档](#cli--docs) - [Bootstrap](#bootstrap) - [命令行选项](#command-line-options) # Monitorism _Monitorism_ 是一个工具套件,用于支持 OP Stack 链的监控和主动修复操作。 该套件由两个主要组件组成:`op-monitorism` 和 `op-defender`,它们可以一起使用,也可以单独使用,详情请参阅下文。 ## Docker 镜像 ### Op-Monitorism Op-Monitorism 的 Docker 镜像会随每次发布和构建发布,确保您可以获得最新的功能和修复。 适用于 linux/amd64 的最新发布版本可以在[发布说明](https://github.com/ethereum-optimism/monitorism/releases)中找到。 要拉取最新的 Docker 镜像,请运行: ``` docker pull --platform linux/amd64 us-docker.pkg.dev/oplabs-tools-artifacts/images/op-monitorism:latest ``` 要拉取特定的发布版本,请运行 ``` docker pull --platform linux/amd64 us-docker.pkg.dev/oplabs-tools-artifacts/images/op-monitorism:v0.0.4 ``` 注意:对于搭载 ARM 芯片的 Mac 电脑,必须使用 `--platform` 标志以确保与 linux/amd64 架构的兼容性。 要在本地构建 Docker 镜像,请执行以下命令: ``` docker build -t op-monitorism ./op-monitorism ``` 使用“-t op-monitorism”为镜像打上 op-monitorism 的标签,以便于引用。 ## 监控组件 `monitors` 是一种被动安全服务,可为 OP Stack 提供自动化监控。 这些组件旨在对 OP Stack 进行监控,并对可能预示着安全事件的特定活动发出警报。 目前内置于 `op-monitorism` 的所有监控器列表如下。 ### 全局事件监控器 ![df2b94999628ce8eee98fb60f45667e54be9b13db82add6aa77888f355137329](https://static.pigsec.cn/wp-content/uploads/repos/cas/21/21a2244a2583c360997fadd7b32d10e2e5c74e2aa97a6ff5e0d83492f61450e1.png) 全局事件监控器旨在将 YAML 规则作为配置,并监控链上发出的事件。 | `op-monitorism/global_events` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/global_events/README.md) | | ----------------------------- | --------------------------------------------------------------------------------------------------------- | ### 活跃度过期监控器 ![ab27497cea05fbd51b7b1c2ecde5bc69307ac0f27349f6bba4f3f21423116071](https://github.com/ethereum-optimism/monitorism/assets/23560242/af7a7e29-fff5-4df3-82f0-94c2f28fde84) 活跃度过期监控器用于监控 Safe 上的活跃度过期情况。 | `op-monitorism/liveness_expiration` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/liveness_expiration/README.md) | | ----------------------------------- | --------------------------------------------------------------------------------------------------------------- | ### 提款监控器 ![6d5477f5585cb49ff2f8bd147c2e7037772de6a1dd128ce4331596b011ce6ea9](https://static.pigsec.cn/wp-content/uploads/repos/cas/81/81227af8e9392f275da1b2ddb61dcf52079eaf1b0b16269ca3332cbe5e34bc0a.png) 提款监控器用于检查已向 `OptimismPortal` 合约证明的新提款。 每笔提款都会根据 `L2ToL1MessagePasser` 合约进行检查。 | `op-monitorism/withdrawals` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/withdrawals/README.md) | | --------------------------- | ------------------------------------------------------------------------------------------------------- | ### 余额监控器 ![5cd47a6e0f2fb7d921001db9eea24bb62bb892615011d03f275e02a147823827](https://static.pigsec.cn/wp-content/uploads/repos/cas/9d/9df75201be59fc8391fa724e3538556c192dc795dc5517d9846bb1ad72e72436.png) 余额监控器仅会发出一个指标,报告所配置账户的余额情况。 | `op-monitorism/balances` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/balances/README.md) | | ------------------------ | ---------------------------------------------------------------------------------------------------- | ### 故障监控器 148f61f4600327b94b55be39ca42c58c797d70d7017dbb7d56dbefa208cc7164 故障监控器会检查发布到 `L2OutputOracle` 合约的输出根的变更情况。 发生变更时,它会从受信任的 L2 源重新构建输出根,并查找匹配项。 | `op-monitorism/fault` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/fault/README.md) | | --------------------- | ------------------------------------------------------------------------------------------------- | ### Multisig 监控器 ![7dab260ee38122980274fee27b114c590405cff2e5a68e6090290ecb786b68f2](https://static.pigsec.cn/wp-content/uploads/repos/cas/64/64b948ee9ee1d0f86b4b9f1d533109e4c645e488971d3443bb8fabdb293d08b1.png) Multisig 监控器会报告 `OptimismPortal` 合约的暂停状态。 如果已设置,还会报告所配置的 `Safe` 地址的最新 nonce。此外,如果已设置,还会报告存储在 1Password 中的最新预签名 nonce。 通过查找所配置保管库中符合 `ready-.json` 名称格式的条目,可以识别出最新的预签名 nonce。 它将报告此条目名称格式中最高的 nonce。 | `op-monitorism/multisig` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/multisig/README.md) | | ------------------------ | ---------------------------------------------------------------------------------------------------- | ### Drippie 监控器 Drippie 监控器用于追踪 Drippie 合约内 drip 的执行情况及可执行性。 | `op-monitorism/drippie` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/drippie/README.md) | | ----------------------- | --------------------------------------------------------------------------------------------------- | ### Secrets 监控器 Secrets 监控器将 Drippie 合约作为参数,监控该合约内任何使用 CheckSecrets dripcheck 合约的 drip。CheckSecrets 是一种 dripcheck,允许在特定 secret 被泄露(经过一段延迟期后)后开始 drip,如果第二个 secret 被泄露,则取消该 drip。监控这些 secret 是否被泄露非常重要,因为这可能表明 secret 存储平台已遭到入侵,且有人正试图窃取由该 drip 控制的 ETH。 | `op-monitorism/secrets` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/secrets/README.md) | | ----------------------- | --------------------------------------------------------------------------------------------------- | ### 交易监控器 交易监控器接收一个 YAML 配置来运行,并监控由特定地址发送的交易,同时跟踪已发送的累计 ETH 数量,以及用于特定警报的可调阈值。它还可以通过配置来支持针对工厂合约的操作,目前仅支持 `FaultDisputeGame` 工厂,以确保这些地址仅与有效的故障争议游戏进行交互。 | `op-monitorism/transaction_monitor` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/transaction_monitor/README.md) | | ----------------------------------- | --------------------------------------------------------------------------------------------------------------- | ### ETH 保留监控器 ETH 保留监控器会追踪 L2 区块,并断言它们遵守 L2 ETH 保留不变式。 | `op-monitorism/conservation_monitor` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/conservation_monitor/README.md) | | ----------------------------------- | --------------------------------------------------------------------------------------------------------------- | ### Faultproof 提款 Faultproof 提款组件监控 [OptimismPortal](https://github.com/ethereum-optimism/superchain-registry/blob/d454618b6cf885417aa8cc8c760bd9ed0429c131/superchain/configs/mainnet/op.toml#L50) 合约上的 ProvenWithdrawals 事件,并执行检查以检测链上是否存在违反不变式条件的情况。如果检测到违规情况,它会记录该问题并为该事件设置 Prometheus 指标。 此组件专为已经使用 [Fault Proofs 系统](https://docs.optimism.io/stack/protocol/fault-proofs/explainer)的链而设计。 这是已弃用的 [chain-mon faultproof-wd-mon](https://github.com/ethereum-optimism/optimism/tree/chain-mon/v1.2.1/packages/chain-mon/src/faultproof-wd-mon) 的新版本。 有关组件工作原理及所用算法的详细信息,请参阅组件的 README。 | `op-monitorism/faultproof_withdrawals` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-monitorism/faultproof_withdrawals/README.md) | | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ## Defender 组件 _defenders_ 是一项主动安全服务,允许为 OP Stack 提供自动化防御。 这些组件旨在采取链上/链下的即时行动来保护资产。 目前内置于 `op-defender` 的所有 defender 列表如下。 ### HTTP API PSP Executor 服务 ![f112841bad84c59ea3ed1ca380740f5694f553de8755b96b1a40ece4d1c26f81](https://static.pigsec.cn/wp-content/uploads/repos/cas/d0/d0d86566e50084db76cb3c63a2c4507f6f9963b625d4f8299028d790b4c1556c.png) PSP Executor 服务旨在更快地在链上执行 PSP,以提高我们在事件响应中的准备状态和速度。 | `op-defender/psp_executor` | [README](https://github.com/ethereum-optimism/monitorism/blob/main/op-defender/psp_executor/README.md) | | -------------------------- | ------------------------------------------------------------------------------------------------------ | ## CLI 与文档 ### Bootstrap 克隆后,请运行 `./bootstrap.sh` 以正确设置开发环境。 ### 命令行选项 CLI 能够为各种活动启动监控器,每个监控器都会发出用于设置警报的指标。 ``` 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 ``` 每个监控器都有一些通用的配置,可通过 CLI 或环境变量进行配置,并带有默认值。 ``` 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) ```
标签:EVTX分析, OP Stack, Web3, 事件响应, 以太坊, 区块链, 监控工具, 运维