|
1 |
| -# MCR - Multi-Commit Rollup |
| 1 | +# MCR (Multi Commit Rollup) |
2 | 2 |
|
3 |
| -**MCR** implements a staking-based settlement where validators commit L2-blocks on Layer 1 (L1). |
| 3 | +This directory contains the implementation of the MCR protocol, which handles rollup commitment aggregation. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +**MCR** implements a staking-based settlement where validators commit L2-blocks on Layer 1 (L1). MCR is responsible for aggregating multiple commitments into a single commitment. It provides: |
| 8 | + |
| 9 | +The distinguishing feature is that there is only one type of actor, which is the attester. |
4 | 10 |
|
5 | 11 | Validators stake tokens to participate in block validation. They commit to L2-blocks on L1, and the contract on L1 tracks block commitments, epochs, and stake. The contracts also manage validators and custodian staking and unstaking. The contract validates if commitments have reached two-thirds supermajority stake, and rewards or slashes validators based on their actions.
|
6 | 12 |
|
7 | 13 | For further details see the [RFC for MCR](https://github.com/movementlabsxyz/rfcs/pull/29) and the [MIP-34](https://github.com/movementlabsxyz/MIP/blob/main/MIP/mip-34).
|
8 | 14 |
|
9 | 15 | ## Architecture
|
10 | 16 |
|
11 |
| -- [Contracts](./contracts/README.md): Includes settlement contracts for block commitments, staking contracts for validator management, token contracts for custody. |
12 |
| -- **Manager**: Manages block commitments by batching and submitting them, interacts with clients, and processes commitment events (acceptance or rejection) for the settlement system. |
| 17 | +- [`cli/`](cli/) - Command line interface tools |
| 18 | + - [`client/`](cli/client/) - Client implementation for interacting with the protocol. Handles interaction with the protocol by posting block commitments, streaming commitment data, and managing Ethereum blockchain interactions. |
| 19 | + - [`deployer/`](cli/deployer/) - Tools for deploying the protocol contracts |
| 20 | + - [`protocol/`](cli/protocol/) - Core protocol implementation |
| 21 | + |
| 22 | +- [`clients/`](clients/) - Protocol client implementations |
| 23 | + - [`eth/`](clients/eth/) - Ethereum client implementation |
| 24 | + - [`mock/`](clients/mock/) - Mock client for testing |
| 25 | + - [`util/`](clients/util/) - Shared utilities for clients |
| 26 | + |
| 27 | +- [`dlu/`](dlu/) - Deployment and Lifecycle Utilities |
| 28 | + - [`eth/`](dlu/eth/) - Ethereum-specific deployment tools |
| 29 | + - [`contracts/`](dlu/eth/contracts/) - Smart contract implementations. Includes settlement contracts for block commitments, staking contracts for validator management, token contracts for custody. |
| 30 | + - [`deployer-core/`](dlu/eth/deployer-core/) - Core deployment logic |
| 31 | + - [`anvil/`](dlu/eth/anvil/) - Local testnet configuration |
| 32 | + |
| 33 | +- [`manager/`](manager/) - Protocol management and orchestration. Manages block commitments by batching and submitting them, interacts with clients, and processes commitment events (acceptance or rejection) for the settlement system. |
| 34 | + |
| 35 | +- [`util/`](util/) - Shared utilities |
| 36 | + - [`config/`](util/config/) - Configuration management |
| 37 | + - [`types/`](util/types/) - Common type definitions |
| 38 | + |
| 39 | +----- |
| 40 | + |
| 41 | +TODO: remove once we have used this content at the correct place |
| 42 | + |
13 | 43 | - **Setup**: Prepares local environments or deploys contracts, manages configuration for local and deployment setups, and ensures contract deployment when needed.
|
14 | 44 | - **Runner**: Orchestrates the setup and execution of configuration tasks, applies setup steps, and logs processes for debugging.
|
15 |
| -- **Client**: Handles interaction with the MCR system by posting block commitments, streaming commitment data, and managing Ethereum blockchain interactions. |
| 45 | + |
0 commit comments