-
Notifications
You must be signed in to change notification settings - Fork 290
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2495 from mitchpolygon/main
v2 of addressing Arnau's comments from previous PR
- Loading branch information
Showing
2 changed files
with
26 additions
and
89 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,51 @@ | ||
<!-- # Pessimistic proofs (PP) --> | ||
Developers can use the CDK stack to build layer 2 chains that are natively connected to the AggLayer (**CDK sovereign chains**). | ||
|
||
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. | ||
|
||
Developers can, for instance, configure their chains to use provers that are outside the Polygon zkEVM stack. | ||
|
||
Specifically, instead of deploying a Polygon zkEVM prover, developers can configure their CDK sovereign chains to utilize Succinct's SP1 prover. | ||
|
||
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. | ||
Out of the box, CDK sovereign chains are built to connect to the AggLayer, and so they rely on a type of ZK-proof called a _pessimistic proof_ to finalize transactions. | ||
|
||
## What is a pessimistic proof? | ||
|
||
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. | ||
A *pessimistic proof* (PP) is a zero-knowledge proof attesting to the correctness of a chain’s bridge transitions and the collateralization of all withdrawals. | ||
|
||
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. | ||
These proofs enable CDK sovereign chains that interoperate via the [unified bridge](../../zkEVM/architecture/unified-LxLy/index.md) to achieve trustless cross-chain security. | ||
|
||
Pessimistic proofs allow CDK sovereign chains connected to the [AggLayer](../../agglayer/overview.md) interoperate securely. | ||
Pessimistic proofs ensure that CDK sovereign chains connected to the [AggLayer](../../agglayer/overview.md) interoperate securely, providing a robust mechanism for cross-chain interactions. | ||
|
||
We henceforth refer to CDK sovereign chains as CDK PP chains. | ||
--- | ||
|
||
## CDK PP stack | ||
## CDK sovereign chain components | ||
|
||
Next, we detail the architectural components of the CDK PP chains. | ||
The architectural components of CDK sovereign chains are detailed in the table below: | ||
|
||
The table below lists the components of a CDK PP chain and where you can find them. | ||
|
||
| Component | CDK PP stack | Notes | | ||
| Component | CDK Stack | Notes | | ||
| ------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | ||
| Node = RPC and sequencer | [cdk-erigon](https://github.com/0xPolygonHermez/cdk-erigon) | Customizable, commonly:<br/>\- Sequencer = 1 node<br/>\- RPC = multiple nodes | | ||
| Contracts | <a href=https://github.com/0xPolygonHermez/zkevm-contracts>zkevm-contracts</a> | | | ||
| Contracts | <a href=https://github.com/0xPolygonHermez/zkevm-contracts>zkevm-contracts</a> | Includes L1 contracts for functionality | | ||
| CLI | [cdk](https://github.com/0xPolygon/cdk) | Included in [CDK](https://github.com/0xPolygon/cdk) repo | | ||
| AggSender | <a href=https://github.com/0xPolygon/cdk>cdk</a> | Included in [CDK](https://github.com/0xPolygon/cdk) repo | | ||
| Tx pool manager | <a href=https://github.com/0xPolygon/zkevm-pool-manager> zkevm-pool-manager</a> | | | ||
| AggSender | <a href=https://github.com/0xPolygon/cdk>cdk</a> | A sub-component of the CDK client that sends certificates to the AggLayer node | | ||
| Tx pool manager | <a href=https://github.com/0xPolygon/zkevm-pool-manager>zkevm-pool-manager</a> | Manages transaction storage | | ||
|
||
--- | ||
|
||
## Component descriptions | ||
|
||
Here are brief descriptions for each CDK FEP component. | ||
Here are brief descriptions of the key CDK components: | ||
|
||
- CDK Erigon node, a fork of [erigon](https://github.com/ledgerwatch/erigon), that manages the following: | ||
- Multiple RPC nodes that provide common APIs for sending transactions. | ||
- Sequencer for executing transactions, and creating blocks and batches. | ||
- Contracts: Various smart contracts deployed on L1 for the full implementation and complete functionality of the Polygon zkEVM protocol: | ||
- **CDK Erigon Node**: A fork of [Erigon](https://github.com/ledgerwatch/erigon), providing: | ||
- Multiple RPC nodes for transaction submission. | ||
- A sequencer for executing transactions, and creating blocks and batches. | ||
- **Contracts**: Smart contracts deployed on L1 to ensure full implementation and functionality: | ||
- `PolygonRollupManager` | ||
- `PolygonZkEVMBridgeV2` | ||
- `PolygonZkEVMGlobalExitRootV2` | ||
- `FflonkVerifier` | ||
- `PolygonZkEVMDeployer` | ||
- `PolygonZkEVMTimelock` | ||
- CLI tool: A single command line interface tool for abstracting away the complexity of deploying or configuring CDK components. | ||
- 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. | ||
- Transaction pool manager: For storing transactions submitted by users. | ||
|
||
### AggLayer-side components | ||
|
||
- Succinct's SP1 prover: A simplified cryptographic tool designed to take Rust-written inputs in order to generate ZK-proofs. | ||
|
||
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. | ||
|
||
- JSON-RPC API: A component provided by the AggLayer to interface between the CDK PP chain and the SP1 prover. | ||
- **CLI tool**: A command-line tool that simplifies deploying and configuring CDK components. | ||
- **AggSender**: A functionality within the CDK client that aggregates necessary data and sends certificates to the AggLayer node for proof generation. It works in conjunction with other sub-components, such as the bridge syncer. | ||
- **Transaction pool manager**: Handles storage of user-submitted transactions. | ||
- **Succinct's SP1 prover**: A cryptographic tool that generates ZK-proofs using Rust-based inputs. The prover resides in the AggLayer and is not directly connected to CDK sovereign chains. | ||
- **AggLayer node**: A critical component of the AggLayer that interfaces between CDK sovereign chains and the SP1 prover. It handles certificate validation and proof requests. | ||
|
||
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. | ||
The AggSender within the CDK client communicates with the AggLayer node to facilitate proof generation and finalization of transactions. | ||
|
||
See the high level view of the CDK PP chain architecture [here](../architecture/high-level-views.md) | ||
See the high level view of the architecture [here](../architecture/cdk-pp-highlevel-arch.md) |
This file was deleted.
Oops, something went wrong.