Skip to content

Commit ae93597

Browse files
OP Succinct: Making changes to the derivation pipeline (#293)
* Document how to make changes to the kona repository and propagate them. * Reference new docker images for the op-succinct proposer and challenger.
1 parent fc3e44c commit ae93597

File tree

4 files changed

+164
-3
lines changed

4 files changed

+164
-3
lines changed

README_ESPRESSO.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Note: For deployment configuration, read `README_ESPRESSO_DEPLOY_CONFIG.md`.
2222
```
2323

2424

25-
## Docker
25+
## Local devnet
2626

2727
In order to download the docker images required by this project you may need to authenticate using a PAT.
2828

@@ -397,3 +397,51 @@ and the proposer services if running with the TEE.
397397
```console
398398
./shutdown.sh
399399
```
400+
401+
# OP Succinct Lite dependencies
402+
403+
## Repositories
404+
405+
There are three types of repositories:
406+
1. Kona implements the OP stack in Rust.
407+
2. Celo-Kona is a wrapper of Kona with Celo specific changes.
408+
3. OP Succinct: uses Kona and in our case also Celo-Kona in order to compute zk proofs for an OP rollup state change which is used in the challenger and proposer services.
409+
410+
The diagram below shows the relationship between the repositories.
411+
Note importantly that OP Succinct (both in the case of Celo and Espresso) import not only Celo-Kona but also Kona.
412+
413+
The OP Succinct repository for Espresso generates using Github actions the docker images for the challenger and proposer services.
414+
415+
416+
![image](docs/op-succinct-repos.svg)
417+
418+
The table below is more specific regarding which branches of these repositories are used.
419+
420+
421+
| External | Celo (rep/branch) | Espresso (rep/branch)|
422+
| :-------: | :----: | :------:|
423+
| [kona](https://github.com/op-rs/kona) | [Celo/kona](https://github.com/celo-org/kona)/[palango/kona-1.1.7-celo](https://github.com/celo-org/kona/tree/palango/kona-1.1.7-celo) | [Espresso/kona-celo-fork](https://github.com/EspressoSystems/kona-celo-fork)/[espresso-integration](https://github.com/EspressoSystems/kona-celo-fork/tree/espresso-integration) |
424+
| | [Celo/celo-kona](https://github.com/celo-org/celo-kona)/[main](https://github.com/celo-org/celo-kona/tree/main) | [Espresso/celo-kona](https://github.com/EspressoSystems/celo-kona)/[espresso-integration](https://github.com/EspressoSystems/celo-kona/tree/espresso-integration) |
425+
| [op-succinct](https://github.com/succinctlabs/op-succinct) | [Celo/op-succinct](https://github.com/celo-org/op-succinct)/[develop](https://github.com/celo-org/op-succinct/tree/develop) | [Espresso/op-succinct](https://github.com/EspressoSystems/op-succinct)/[espresso-integration](https://github.com/EspressoSystems/op-succinct/tree/espresso-integration)|
426+
427+
428+
## Making a change to the derivation pipeline and propagating it to the relevant repositories.
429+
430+
In our setting changes to the derivation pipeline are made in the [kona](https://github.com/EspressoSystems/kona/tree/espresso-integration-v1.1.7) repository. Then these changes need to be propagated to the [celo-kona](https://github.com/EspressoSystems/celo-kona) and [op-succinct](https://github.com/EspressoSystems/op-succinct) repositories, generate the docker images for the challenger and proposer, and use these images in [optimism-espresso-integration](https://github.com/EspressoSystems/optimism-espresso-integration) as follows.
431+
432+
433+
1. Merge your PR into [kona-celo-fork](https://github.com/EspressoSystems/kona-celo-fork/tree/espresso-integration). This PR contains some changes to the derivation pipeline. E.g.: [bfabb62](https://github.com/EspressoSystems/kona-celo-fork/commit/bfabb62754bc53317ecb93442bb09d347cd6aad9).
434+
435+
1. Create a PR against [celo-kona](https://github.com/EspressoSystems/celo-kona/tree/espresso-integration). This PR will edit the `Cargo.toml` file to reference the updated kona version, e.g: [a94b317](https://github.com/EspressoSystems/celo-kona/commit/a94b3172b1248a7cd650d692226c9d17b832eec9).
436+
437+
1. Create a PR in [op-succinct](https://github.com/EspressoSystems/op-succinct) and merge it into the branch [espresso-integration](https://github.com/EspressoSystems/op-succinct/tree/espresso-integration). This PR will edit the `Cargo.toml` file to reference the updated kona and celo-kona version, e.g: [41780a3](https://github.com/EspressoSystems/op-succinct/pull/3/commits/41780a339bb1e177281957fcfe0383dfa41eff15).
438+
439+
1. After running CI, check for new images of the succinct proposer and challenger services at
440+
* [containers/op-succinct-lite-proposer-celo](https://github.com/espressosystems/op-succinct/pkgs/container/op-succinct%2Fop-succinct-lite-proposer-celo)
441+
* [containers/op-succinct-lite-challenger-celo](https://github.com/espressosystems/op-succinct/pkgs/container/op-succinct%2Fop-succinct-lite-challenger-celo)
442+
* These images should be updated in the [docker-compose.yml](https://github.com/EspressoSystems/optimism-espresso-integration/blob/b73ee83611418cd6ce3aa2d27e00881d9df7e012/espresso/docker-compose.yml) file when new versions are available. See for example [bd90858](https://github.com/EspressoSystems/optimism-espresso-integration/pull/293/commits/bd90858b0f871441785d4ac6437ff78b76d4b1f8).
443+
444+
445+
Note that periodically we need to merge upstream changes in the `kona`, `celo-kona`, and `op-succinct` repositories to keep our integration branches up to date. This ensures that our custom modifications don't drift too far from the upstream codebase and that we can easily incorporate bug fixes and new features from the upstream projects.
446+
447+

docs/op-succinct-repos.puml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
@startuml
2+
3+
package "External Dependencies" {
4+
[ Kona ] as KonaExternal
5+
[OP Succinct] as OPSuccinctExternal
6+
}
7+
8+
package "Celo" {
9+
[Kona] as KonaCelo
10+
[Celo Kona] as CeloKonaCelo
11+
[OP Succinct] as OPSuccinctCelo
12+
}
13+
14+
package "Espresso" {
15+
[Kona] as KonaEspresso
16+
[Celo Kona] as CeloKonaEspresso
17+
[OP Succinct] as OPSuccinctEspresso
18+
[OP Integration] as OpIntegration
19+
}
20+
21+
22+
KonaExternal--> CeloKonaCelo: imports
23+
24+
KonaCelo --> CeloKonaCelo: imports
25+
CeloKonaCelo--> OPSuccinctCelo : imports
26+
KonaExternal--> OPSuccinctExternal : imports
27+
KonaExternal --> OPSuccinctCelo: imports
28+
29+
OPSuccinctExternal --> OPSuccinctCelo: fork
30+
CeloKonaCelo --> CeloKonaEspresso: fork
31+
OPSuccinctCelo --> OPSuccinctEspresso: fork
32+
KonaExternal --> KonaEspresso: fork
33+
34+
OpIntegration --> OPSuccinctEspresso : docker images
35+
KonaEspresso --> CeloKonaEspresso: imports
36+
CeloKonaEspresso --> OPSuccinctEspresso : imports
37+
KonaEspresso --> OPSuccinctEspresso : imports
38+
39+
40+
@enduml

0 commit comments

Comments
 (0)