|
| 1 | +<!-- # Pessimistic proofs (PP) --> |
| 2 | + |
| 3 | +Developers can use CDK to configure custom ZK-rollups by choosing which components should run the Polygon zkEVM protocol. We refer to these chains as CDK sovereign chains. |
| 4 | + |
| 5 | +Developers can, for instance, configure their chains to use provers that are outside the Polygon zkEVM stack. |
| 6 | + |
| 7 | +Specifically, instead of deploying a Polygon zkEVM prover, developers can configure their CDK sovereign chains to utilize Succinct's SP1 prover. |
| 8 | + |
| 9 | +Since CDK sovereign chains are designed to easily connect to the AggLayer, they use a type of ZK-proof called a _pessimistic proof_ to reach finality of transactions. |
| 10 | + |
| 11 | +## What is a pessimistic proof? |
| 12 | + |
| 13 | +A *pessimistic proof* (PP) is a zero-knowledge proof attesting to the fact that a chain's bridge transitions were correctly executed and that all withdrawals are collateralized. |
| 14 | + |
| 15 | +Therefore, pessimistic proofs enable CDK-built chains that interoperate via the [unified bridge](../../zkEVM/architecture/unified-LxLy/index.md) to achieve trustless cross-chain security. |
| 16 | + |
| 17 | +Pessimistic proofs allow CDK sovereign chains connected to the [AggLayer](../../agglayer/overview.md) interoperate securely. |
| 18 | + |
| 19 | +We henceforth refer to CDK sovereign chains as CDK PP chains. |
| 20 | + |
| 21 | +## CDK PP stack |
| 22 | + |
| 23 | +Next, we detail the architectural components of the CDK PP chains. |
| 24 | + |
| 25 | +The table below lists the components of a CDK PP chain and where you can find them. |
| 26 | + |
| 27 | +| Component | CDK PP stack | Notes | |
| 28 | +| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | |
| 29 | +| Node = RPC and sequencer | [cdk-erigon](https://github.com/0xPolygonHermez/cdk-erigon) | Customizable, commonly:<br/>\- Sequencer = 1 node<br/>\- RPC = multiple nodes | |
| 30 | +| Contracts | <a href=https://github.com/0xPolygonHermez/zkevm-contracts>zkevm-contracts</a> | | |
| 31 | +| CLI | [cdk](https://github.com/0xPolygon/cdk) | Included in [CDK](https://github.com/0xPolygon/cdk) repo | |
| 32 | +| AggSender | <a href=https://github.com/0xPolygon/cdk>cdk</a> | Included in [CDK](https://github.com/0xPolygon/cdk) repo | |
| 33 | +| Tx pool manager | <a href=https://github.com/0xPolygon/zkevm-pool-manager> zkevm-pool-manager</a> | | |
| 34 | + |
| 35 | +## Component descriptions |
| 36 | + |
| 37 | +Here are brief descriptions for each CDK FEP component. |
| 38 | + |
| 39 | +- CDK Erigon node, a fork of [erigon](https://github.com/ledgerwatch/erigon), that manages the following: |
| 40 | + - Multiple RPC nodes that provide common APIs for sending transactions. |
| 41 | + - Sequencer for executing transactions, and creating blocks and batches. |
| 42 | +- Contracts: Various smart contracts deployed on L1 for the full implementation and complete functionality of the Polygon zkEVM protocol: |
| 43 | + - `PolygonRollupManager` |
| 44 | + - `PolygonZkEVMBridgeV2` |
| 45 | + - `PolygonZkEVMGlobalExitRootV2` |
| 46 | + - `FflonkVerifier` |
| 47 | + - `PolygonZkEVMDeployer` |
| 48 | + - `PolygonZkEVMTimelock` |
| 49 | +- CLI tool: A single command line interface tool for abstracting away the complexity of deploying or configuring CDK components. |
| 50 | +- AggSender is the CDK PP component that accumulates all necessary info in order to generate certificates, which are sent to the SP1 prover via the JSON-RPC API for the generation of pessimistic proofs. |
| 51 | +- Transaction pool manager: For storing transactions submitted by users. |
| 52 | + |
| 53 | +### AggLayer-side components |
| 54 | + |
| 55 | +- Succinct's SP1 prover: A simplified cryptographic tool designed to take Rust-written inputs in order to generate ZK-proofs. |
| 56 | + |
| 57 | + Unlike in the CDK FEP chain, the prover in a CDK PP chain is not directly connected to the chain. It in fact resides in the AggLayer. |
| 58 | + |
| 59 | +- JSON-RPC API: A component provided by the AggLayer to interface between the CDK PP chain and the SP1 prover. |
| 60 | + |
| 61 | + In reality, the AggSender sends certificates to the JSON-RPC API, which in turn requests the SP1 prover to generate ZK-proofs. On receipt of the ZK-proofs, it sends the ZK-proofs to L1. |
| 62 | + |
| 63 | + See the high level view of the CDK PP chain architecture [here](../architecture/high-level-views.md) |
0 commit comments