Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
20353d3
feat(vroom-303): fusaka devnet
AlexandrMov Jul 19, 2025
381db49
feat(vroom-303): working configuration
AlexandrMov Jul 22, 2025
4e385ff
feat(vroom-303): fusaka3
AlexandrMov Jul 29, 2025
8d405ae
feat: some improvements, added k8s support, added command extensions …
infloop Aug 27, 2025
434718a
feat: more improvements, splitting services
infloop Aug 28, 2025
4920e02
feat: splitting into different packages
infloop Aug 28, 2025
be1ef74
feat: re-factoring
infloop Aug 28, 2025
66c3d74
feat: re-factoring #2
infloop Aug 28, 2025
c51af26
feat: re-factoring #3, added helm
infloop Aug 28, 2025
b9ab7b7
feat: added helm charts, and blockscout make examples
infloop Aug 29, 2025
838d7fc
feat: updated README
infloop Aug 29, 2025
62f3609
feat: updated README #2
infloop Aug 29, 2025
6517c9f
feat: updated blockscout commands
infloop Aug 30, 2025
34d0cd1
feat: added working blockscout and docker-registry
infloop Sep 1, 2025
fbcdbad
feat: docker-registry fixes
infloop Sep 1, 2025
2f4a431
feat: separated lido core extensions and state
infloop Sep 1, 2025
a05c596
feat: WIP on docker images pushing to registry
infloop Sep 1, 2025
f0087fb
feat: WIP docker registry auth
infloop Sep 1, 2025
b482d0f
feat: WIP strict types and more separation of kurtosis
infloop Sep 2, 2025
f47d3c3
feat: commands can now return data
infloop Sep 2, 2025
45f2906
chore: cleaning up
infloop Sep 2, 2025
aa22672
fix: order of commands and idempotence
infloop Sep 2, 2025
f9a521b
fix: csm deploy
infloop Sep 2, 2025
6dcfa94
fix: Helm chart fixes
infloop Sep 3, 2025
42d333d
fix: Helm chart fixes #2
infloop Sep 3, 2025
6fa005b
fix: various fixes
infloop Sep 3, 2025
c6f8f22
feat: docker-registry finally works
infloop Sep 4, 2025
7828432
feat: fusaka specific lido cli branch
infloop Sep 4, 2025
ea2fc58
feat: KAPI container building
infloop Sep 4, 2025
4225591
fix: various fixes
infloop Sep 4, 2025
0cbb6c8
chore: cleanup for chain, dora and blockscout
infloop Sep 5, 2025
5b03c1d
fix: CSM deploy fixes
infloop Sep 5, 2025
8883939
feat: Fusaka devnet changes, add gas limit to lido deploy
infloop Sep 5, 2025
67bcb5a
feat: Fusaka devnet preset changes
infloop Sep 5, 2025
3322218
feat: configs update
infloop Sep 5, 2025
6d01bfc
feat: CSM module fix
infloop Sep 5, 2025
76860ce
feat: CSM module deploy small change
infloop Sep 5, 2025
e5f1409
feat: KAPI is running, WIP for oracles
infloop Sep 10, 2025
a4119da
chore: Cleanup
infloop Sep 10, 2025
0dda9f3
chore: Cleanup #2
infloop Sep 10, 2025
1bc0e7a
chore: Cleanup #3
infloop Sep 10, 2025
b00944b
chore: Cleanup #4
infloop Sep 10, 2025
28f9d90
chore: Helm dependencies
infloop Sep 10, 2025
b0cb992
fix: yarn rc file
infloop Sep 10, 2025
ff746fa
chore: Kurtosis version update in README
infloop Sep 10, 2025
d631d2c
fix: devnet utils in state package
infloop Sep 10, 2025
3a4ac52
feat: oracle commands update and devnet name feature
infloop Sep 10, 2025
31a6394
chore: update readme
infloop Sep 10, 2025
f2dc89d
chore: cleanup
infloop Sep 15, 2025
2fe81de
chore: cleanup #2
infloop Sep 15, 2025
06e369f
chore: cleanup #4
infloop Sep 15, 2025
30b534d
fix: nodes ingress fix
infloop Sep 15, 2025
023b1ef
feat: kurtosis gateway automatic launch
infloop Sep 15, 2025
1764374
feat: new chart with pvs for lido apps
infloop Sep 15, 2025
171a29f
feat: new chart with pvs for lido apps #2
infloop Sep 16, 2025
c2d6604
feat: council daemon helm charts
infloop Sep 16, 2025
c7909b2
feat: dsm-bots helm chart
infloop Sep 16, 2025
80dbc1f
feat: k8s context update
infloop Sep 16, 2025
eb66f95
fix: dms bot fixes + kubo
infloop Sep 16, 2025
227ef18
feat: kubo WIP
infloop Sep 16, 2025
2e375ce
feat: ssh helpers
infloop Sep 16, 2025
007c146
chore: cleanup
infloop Sep 16, 2025
10cbbff
chore: cleanup #2
infloop Sep 16, 2025
30a9c93
feat: csm and lido activation states
infloop Sep 16, 2025
960ab49
fix: lido & csm activation fix
infloop Sep 16, 2025
63c1351
fix: various fixes for docker-registry and services
infloop Sep 16, 2025
3390f06
fix: council healthcheck fix
infloop Sep 17, 2025
dbcd3e7
chore: cleanup
infloop Sep 17, 2025
1146e4b
feat: ssh tunnel command and other things
infloop Sep 17, 2025
bebecb9
fix: various typos
infloop Sep 17, 2025
1ed60f0
feat: kubo teardown
infloop Sep 17, 2025
8f0ea9b
feat: services states
infloop Sep 17, 2025
971ef45
chore: refactoring helm workspaces into services workspaces
infloop Sep 18, 2025
d22c4dc
feat: updated README
infloop Sep 18, 2025
9651c9c
chore: updated README - fixed comamnds and added more information
infloop Sep 18, 2025
b2c41ca
feat: no widget backend helm + code
infloop Sep 18, 2025
5c0021f
feat: no widget backend deps
infloop Sep 18, 2025
2f888b5
fix: fixes for kubo and kapi
infloop Sep 18, 2025
fc7da01
fix: no widget backend commands
infloop Sep 18, 2025
c27341c
fix: no widget backend params
infloop Sep 18, 2025
432f29f
feat: no widget added
infloop Sep 18, 2025
7028e7c
feat: add support for exec readiness and healthcheck probes
infloop Sep 25, 2025
b85732d
feat: add support for exec readiness and healthcheck probes #2
infloop Sep 25, 2025
fdaa0b1
feat: remove unnecessary oracle Dockerfile
infloop Sep 25, 2025
4827e82
feat: add ability to run oracles from original images
infloop Sep 25, 2025
259aee2
fix: Kubo host address fix
infloop Sep 25, 2025
b7e3192
fix: Fusaka deploy branch fix
infloop Sep 25, 2025
97b3676
feat: fusaka new deploy
infloop Sep 25, 2025
b002fe3
feat: added small fusaka-zk-test devnet
infloop Sep 26, 2025
1b9324a
fix: git checkout fix and csm oracle kubo fix
infloop Sep 29, 2025
2dc9ea3
fix: fusaka devnet fix
infloop Sep 29, 2025
cf79c94
fix: git checkout quick fix
infloop Sep 29, 2025
7169e56
fix: docker build architecture
infloop Sep 30, 2025
3f0245c
feat(vroom-337): late-prover-bot k8s support
AlexandrMov Oct 1, 2025
daebaf6
feat(vroom-337): TX_SIGNER_PRIVATE_KEY
AlexandrMov Oct 2, 2025
3c6b41e
feat(vroom-337): late prover bot support in k8s
AlexandrMov Oct 3, 2025
c5f58b2
revert no-backend changes
AlexandrMov Oct 3, 2025
086c68a
revert no-backend changes
AlexandrMov Oct 3, 2025
ccafc45
Merge pull request #63 from lidofinance/feature/vroom-337-fusaka-late…
infloop Oct 3, 2025
5f35ec9
feat(vroom-358): csm prover bot
AlexandrMov Oct 4, 2025
40d137f
Merge pull request #64 from lidofinance/feature/vroom-358-fusaka-csm-…
AlexandrMov Oct 14, 2025
d28da55
fix: fusaka stand adjustments
AlexandrMov Oct 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .aiignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
artifacts
59 changes: 59 additions & 0 deletions .env.sample
Original file line number Diff line number Diff line change
@@ -1 +1,60 @@
# devnet name, optional (default `my-devnet`)
DEVNET_NAME=

# k8s global

## (optional) ssh tunnel helpers (see `ssh tunnel` command)
SSH_HOST=
# ssh user (optional)
SSH_USER=
# ssh private key (optional)
SSH_PRIVATE_KEY=
SSH_TUNNEL_REMOTE_ADDRESS=127.0.0.1:16443
SSH_TUNNEL_LOCAL_PORT=16444

## cluster name from kubeconfig file
K8S_KUBECTL_CLUSTER_NAME=

## cluster context name from kubeconfig file
K8S_KUBECTL_DEFAULT_CONTEXT=
## global ingress hostname prefix for all ingresses for devnet, for keeping domains secret (example: `somesecret`)
GLOBAL_INGRESS_HOST_PREFIX=

# nodes
ETH_NODES_INGRESS_HOSTNAME=$(DEVNET_NAME).devnet.local

# dora ingress hostname (without http://)
DORA_INGRESS_HOSTNAME=dora.$(DEVNET_NAME).devnet.local

# blockscout ingress hostnames (without http://)
BLOCKSCOUT_BACKEND_INGRESS_HOSTNAME=blockscout-backend.$(DEVNET_NAME).devnet.local
BLOCKSCOUT_FRONTEND_INGRESS_HOSTNAME=blockscout.$(DEVNET_NAME).devnet.local

# docker registry
## registry type (local | external)
DOCKER_REGISTRY_TYPE=external

## registry ingress hostnames (without http://)
DOCKER_REGISTRY_LOCAL_INGRESS_HOSTNAME=container-registry-ui.devnet.local
DOCKER_REGISTRY_LOCAL_INGRESS_UI_HOSTNAME=container-registry-ui.devnet.local

DOCKER_REGISTRY_EXTERNAL_HOSTNAME=container-registry-ui.devnet.local
DOCKER_REGISTRY_EXTERNAL_UI_HOSTNAME=container-registry-ui.devnet.local
DOCKER_REGISTRY_USERNAME=
DOCKER_REGISTRY_PASSWORD=

# kapi ingress hostname (without http://)
KAPI_INGRESS_HOSTNAME=keys-api.$(DEVNET_NAME).devnet.local

# ipfs kubo
KUBO_INGRESS_HOSTNAME=ipfs.$(DEVNET_NAME).devnet.local

# no widget backend
NO_WIDGET_BACKEND_INGRESS_HOSTNAME=no-widget-backend.$(DEVNET_NAME).devnet.local

# no widget backend
NO_WIDGET_INGRESS_HOSTNAME=operators-widget.$(DEVNET_NAME).devnet.local

# oracles (optional)
PINATA_JWT=
CSM_ORACLE_PINATA_JWT=
21 changes: 21 additions & 0 deletions IMPROVEMENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

# List of features to improve
* Make the lido-local-devnet easily extensible
* Idempotence for all commands
* Merge services, state, artifacts into a new entity called "project"
* the devnet is a root project
* kapi, lido-core, lido-cli are subprojects
* each subproject has
* commands
* templates
* services
* artifacts
* has optional git repo
* workspace
* patches
* constants
* Add the ability to patch docker images with files, having special `pathes` folder
* Add the ability to patch git repos with files, having special `pathes` folder
* Improve artifact store to use NFS or S3 or Minio
* Improve artifact store to upload it to the k8s storage with password-credentials
* Look at cdk8s
97 changes: 76 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,44 +23,97 @@ Lido Local DevNet is a powerful tool for deploying and testing the Lido protocol
- **npm** ([Install npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm))
- **Docker** 27+ ([Install Docker](https://www.docker.com/))
- **Docker Compose** V2 ([Install Docker Compose](https://docs.docker.com/compose/))
- **Kurtosis** ([Install Kurtosis](https://www.kurtosistech.com/))
- **Kurtosis 1.11.1+** ([Install Kurtosis](https://www.kurtosistech.com/))
- **Foundry tools** ([Install Foundry](https://book.getfoundry.sh/getting-started/installation))
- **Just** ([Install Just](https://github.com/casey/just))
- **Make** 4+ (Install Make - Linux: `sudo apt-get install build-essential`)
- **Kubectl** v1.30.+ (for k8s deployments) ([Install Kubectl](https://kubernetes.io/docs/tasks/tools/))`
- **Helm** 3.12+ (for k8s deployments) ([Install Helm](https://helm.sh/docs/intro/install/))`

---

## Getting Started
## Getting Started (with k8s integration)

Follow these steps to set up the DevNet:
Original docs are located in `https://docs.kurtosis.com/k8s/`

### 1. Start Kurtosis
Kurtosis is required to launch Ethereum nodes:
### 1. Install dependencies
```sh
kurtosis engine start
yarn && yarn build:all
```

### 2. Install dependencies
### 2. Create `.env` file and fill it with the required values
```sh
yarn && yarn build:all
cp .env.sample .env
```

### 3. (Optional) Turn on SSH Tunnel to the machine with k8s cluster
```sh
./bin/run.js ssh tunnel
```

### 4. Set the current context to the k8s cluster (if you have multiple clusters)

Contexts can be found by running: `kubectl config get-contexts`

```sh
kubectl config use-context <cluster context> # or whatever your k8s context is
```

### 3. Launch the environment and deploy Lido smart contracts
Below is an example for launching the `pectra` test stand. If you need a different setup, refer to the [test stands documentation](./docs/commands/stands.md).
### 5. Ensure that you are connected to the k8s cluster

The cluster can be accessible via SSH Tunnel.

```sh
./bin/run.js stands pectra --full
kubectl cluster-info
```

### 6. Change kurtosis config to work with the k8s cluster

Update once your kurtosis config at `echo $(kurtosis config path)` location

```yaml
config-version: 6
should-send-metrics: false
kurtosis-clusters:
docker:
type: "docker"
cloud:
type: "kubernetes"
config:
kubernetes-cluster-name: "<cluster name from kubectl>" # change the cluster name if needed
storage-class: "ssd-hostpath"
enclave-size-in-megabytes: 256
```

### 7. Point kurtosis to the cluster
```sh
# tell kurtosis to work with k8s cluster
kurtosis cluster set cloud # or whatever your kurtosis cluster is
```

### 8. Start Kurtosis
Kurtosis is required to launch Ethereum nodes
```sh
kurtosis engine start
```

### 9. Launch the environment and deploy Lido smart contracts
Below is an example for launching the `fusaka` test stand.
If you need a different setup, refer to the [test stands documentation](./docs/commands/stands.md).

```sh
./bin/run.js stands <stand-name> # (fusaka) or any other test stand name
```
For contract verification, use the `--verify` flag:
```sh
./bin/run.js stands pectra --full --verify
./bin/run.js stands <stand-name> --verify
```
For a full DSM infrastructure deployment, add the `--dsm` flag:
```sh
./bin/run.js stands pectra --full --verify --dsm
./bin/run.js stands <stand-name> --verify --dsm
```

### 4. Interaction with Voting scripts

### 10. (Optional) Interaction with Voting scripts

Since voting scripts require Python and Brownie, install the necessary dependencies:
```sh
Expand All @@ -85,7 +138,7 @@ After adding an account, proceed with the voting process. See the [voting docume
./bin/run.js voting enact-after-pectra
```

### 5. Done!
### 11. Done!
The network, infrastructure, and protocol have been successfully launched.

---
Expand All @@ -100,13 +153,15 @@ To stop the DevNet and remove all services, run:

## Running Multiple Environments

To run multiple environments on a single machine, use the `--network <custom-network-name>` flag:
To run multiple devnets on a single cluster, change the `DEVNET_NAME=<another_devnet>` variable in `.env` file
All the commands will be executed in the context of the current devnet.
---

## DevNet info
To get the latest information on available services, run:
```sh
./bin/run.js stands pectra --full --network test-pectra1
./bin/run.js chain info
```
> **Note:** The `--network test-pectra1` flag must be used with all subsequent commands to interact with the specified environment.

---

## Available Services
To get the latest information on available services, run:
Expand Down
4 changes: 3 additions & 1 deletion bin/dev.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/usr/bin/env -S node --loader ts-node/esm --disable-warning=ExperimentalWarning

// eslint-disable-next-line n/shebang
import {execute} from '@oclif/core'
import {execute} from '@oclif/core';
import * as dotenv from 'dotenv';
dotenv.config({ path: '.env' });

await execute({development: true, dir: import.meta.url})
4 changes: 3 additions & 1 deletion bin/run.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/usr/bin/env node

import {execute} from '@oclif/core'
import {execute} from '@oclif/core';
import * as dotenv from 'dotenv';
dotenv.config({ path: '.env' });

await execute({dir: import.meta.url})
Loading