|
| 1 | +Developers can use CDK to configure chains that run the Polygon zkEVM protocol in either rollup or validium mode. We refer to these chains, in either mode, as a CDK FEP. |
| 2 | + |
| 3 | +As part of its finality mechanism, a CDK rollup or validium configured with this mode utilizes the type of ZK-proofs referred to as *full execution proofs*. |
| 4 | + |
| 5 | +## What is a full execution proof? |
| 6 | + |
| 7 | +A *full execution proof* (FEP) is a zero-knowledge proof attesting to the correctness of the chain's full state transition. |
| 8 | + |
| 9 | +That is, an FEP attests to the fact that the underlying VM (such as the Polygon zkEVM, Succinct's zkVM, or MoveVM) has executed all state transitions in accordance with specifications. |
| 10 | + |
| 11 | +## CDK FEP components |
| 12 | + |
| 13 | +Next, we detail the architectural components of the CDK FEP mode. |
| 14 | + |
| 15 | +The table below lists the CDK FEP components and where you can find them. |
| 16 | + |
| 17 | +| Component | CDK FEP stack | Notes | |
| 18 | +|------------------------------------------|------------------------------------------------------------------------------------------|-------------------------------------------------------------| |
| 19 | +| Node = RPC and sequencer | <a href=https://github.com/0xPolygonHermez/cdk-erigon/releases>cdk-erigon:v2.1.x</a> | Customizable, commonly: <br/>- Sequencer = 1 node</br>- RPC = multiple nodes | |
| 20 | +| Data availability | <a href=https://github.com/0xPolygon/cdk-data-availability>cdk-data-availability</a> | **Only** for validium mode | |
| 21 | +| Contracts | <a href=https://github.com/0xPolygonHermez/zkevm-contracts>zkevm-contracts</a> | | |
| 22 | +| CLI | <a href=https://github.com/0xPolygon/cdk/releases>cdk:v0.3.x<a> | Included in CDK repo | |
| 23 | +| Sequence sender | <a href=https://github.com/0xPolygon/cdk/releases>cdk:v0.3.x</a> | Included in CDK repo | |
| 24 | +| Aggregator | <a href=https://github.com/0xPolygon/cdk/releases>cdk:v0.3.x</a> | Included in CDK repo | |
| 25 | +| Tx pool manager | <a href=https://github.com/0xPolygon/zkevm-pool-manager> zkevm-pool-manager</a> | | |
| 26 | +| Prover | <a href=https://github.com/0xPolygonHermez/zkevm-prover>zkevm-prover</a> | | |
| 27 | + |
| 28 | +## Component descriptions |
| 29 | + |
| 30 | +Here are brief descriptions of each CDK FEP component. |
| 31 | + |
| 32 | +- CDK Erigon node, a fork of [erigon](https://github.com/ledgerwatch/erigon), that manages the following: |
| 33 | + - Multiple RPC nodes that provide common APIs for sending transactions. |
| 34 | + - Sequencer for executing transactions, and creating blocks and batches. |
| 35 | +- DAC: The Data Availability Committee, specifically for validium mode, is a set of *trusted actors* who keep custody of all transaction data, including monitoring and validating hash values the sequencer sender proposes to publish on L1. |
| 36 | +- Contracts: Various smart contracts deployed on L1 for the full implementation and complete functionality of the Polygon zkEVM protocol: |
| 37 | + - `PolygonRollupManager` |
| 38 | + - `PolygonZkEVMBridgeV2` |
| 39 | + - `PolygonZkEVMGlobalExitRootV2` |
| 40 | + - `FflonkVerifier` |
| 41 | + - `PolygonZkEVMDeployer` |
| 42 | + - `PolygonZkEVMTimelock` |
| 43 | +- CLI tool: A single command line interface tool for abstracting away the complexity of deploying or configuring CDK components. |
| 44 | +- Sequence sender: For sequencing batches. |
| 45 | + - In the case of a rollup, the sequence sender sends batch data and the `sequenceBatches` transaction to L1. |
| 46 | + - In the case of a validium, the sequence sender sends batch data to the Data Availability Committee (DAC), requests for signatures from the DAC, and sends the `sequenceBatchesValidium` transaction to L1. |
| 47 | +- Aggregator: For facilitating proving and verification, fetching and providing batch data and witness to the prover. |
| 48 | +- Transaction pool manager: For storing transactions submitted by users. |
| 49 | +- Prover: A complex cryptographic tool capable of producing ZK-proofs of hundreds of batches, and aggregating these into a single ZK-proof which is published as the validity proof. |
| 50 | + |
| 51 | +## Support services |
| 52 | + |
| 53 | +[Bridge service](https://github.com/0xPolygonHermez/zkevm-bridge-service): A backend service for enabling clients like the [web UI](https://github.com/0xPolygonHermez/zkevm-bridge-ui) to interact with the [bridge smart contract](https://github.com/0xPolygonHermez/zkevm-contracts) by providing Merkle proofs. |
| 54 | + |
| 55 | +[Bridge UI](https://portal.polygon.technology/): The Polygon bridge portal which abstracts away the backend operations involved in bridge deposits and withdrawals. |
| 56 | + |
| 57 | +Recommended explorer service: <a href=https://github.com/0xPolygonHermez/blockscout>Blockscout</a>, which is an application that allows you to view, confirm, and inspect transactions on EVM chains, optimistic rollups and zk rollups. |
| 58 | + |
| 59 | +However, users may opt to use a different explorer service. |
0 commit comments