Skip to content
36 changes: 20 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1256,34 +1256,38 @@ There are 4 custom labels that can be used to identify the nodes in the network.
Execution Layer (EL) nodes:

```sh
"com.kurtosistech.custom.ethereum-package-client": "geth",
"com.kurtosistech.custom.ethereum-package-client-image": "ethereum-client-go-latest",
"com.kurtosistech.custom.ethereum-package-client-type": "execution",
"com.kurtosistech.custom.ethereum-package-connected-client": "lighthouse",
"kurtosistech.com.custom/ethereum-package.client": "geth",
"kurtosistech.com.custom/ethereum-package.client-image": "ethereum-client-go-latest",
"kurtosistech.com.custom/ethereum-package.client-language:": "go",
"kurtosistech.com.custom/ethereum-package.client-type": "execution",
"kurtosistech.com.custom/ethereum-package.connected-client": "lighthouse",
```

Consensus Layer (CL) nodes - Beacon:

```sh
"com.kurtosistech.custom.ethereum-package-client": "lighthouse",
"com.kurtosistech.custom.ethereum-package-client-image": "sigp-lighthouse-latest",
"com.kurtosistech.custom.ethereum-package-client-type": "beacon",
"com.kurtosistech.custom.ethereum-package-connected-client": "geth",
"kurtosistech.com.custom/ethereum-package.client": "lighthouse",
"kurtosistech.com.custom/ethereum-package.client-image": "sigp-lighthouse-latest",
"kurtosistech.com.custom/ethereum-package.client-language:": "rust",
"kurtosistech.com.custom/ethereum-package.client-type": "beacon",
"kurtosistech.com.custom/ethereum-package.connected-client": "geth",
```

Consensus Layer (CL) nodes - Validator:

```sh
"com.kurtosistech.custom.ethereum-package-client": "lighthouse",
"com.kurtosistech.custom.ethereum-package-client-image": "sigp-lighthouse-latest",
"com.kurtosistech.custom.ethereum-package-client-type": "validator",
"com.kurtosistech.custom.ethereum-package-connected-client": "geth",
"kurtosistech.com.custom/ethereum-package.client": "lighthouse",
"kurtosistech.com.custom/ethereum-package.client-image": "sigp-lighthouse-latest",
"kurtosistech.com.custom/ethereum-package.client-language:": "rust",
"kurtosistech.com.custom/ethereum-package.client-type": "validator",
"kurtosistech.com.custom/ethereum-package.connected-client": "geth",
```

`ethereum-package-client` describes which client is running on the node.
`ethereum-package-client-image` describes the image that is used for the client.
`ethereum-package-client-type` describes the type of client that is running on the node (`execution`,`beacon` or `validator`).
`ethereum-package-connected-client` describes the CL/EL client that is connected to the EL/CL client.
* `ethereum-package.client` describes which client is running on the node.
* `ethereum-package.client-image` describes the image that is used for the client.
* `ethereum-package.client-type` describes the type of client that is running on the node (`execution`,`beacon` or `validator`).
* `ethereum-package.connected-client` describes the CL/EL client that is connected to the EL/CL client.
* `ethereum-package.client-language` describes the implementation language of the running service.

## Proposer Builder Separation (PBS) emulation

Expand Down
26 changes: 26 additions & 0 deletions src/package_io/constants.star
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,32 @@ VOLUME_SIZE = {
"grandine_volume_size": 100000, # 100GB
},
}
# Language mapping for client implementations
CLIENT_LANGUAGES = {
# Execution Layer (EL) clients
"geth": "go",
"erigon": "go",
"nethermind": "csharp",
"besu": "java",
"reth": "rust",
"reth-builder": "rust",
"ethereumjs": "javascript",
"nimbus": "nim",
# Consensus Layer (CL) clients
"lighthouse": "rust",
"teku": "java",
"prysm": "go",
"lodestar": "typescript",
"grandine": "rust",
# Validator Clients (VC) - inherit from CL clients
"vero": "python",
# Remote Signers
"web3signer": "java",
}

# Label key constant for client language
CLIENT_LANGUAGE_LABEL_KEY = "ethereum-package.client-language"

VOLUME_SIZE["mainnet-shadowfork"] = VOLUME_SIZE["mainnet"]
VOLUME_SIZE["sepolia-shadowfork"] = VOLUME_SIZE["sepolia"]
VOLUME_SIZE["holesky-shadowfork"] = VOLUME_SIZE["holesky"]
Expand Down
4 changes: 4 additions & 0 deletions src/shared_utils/shared_utils.star
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ def label_maker(
if supernode:
labels["ethereum-package.supernode"] = str(supernode)

# Automatically add client language label if client is known
if client in constants.CLIENT_LANGUAGES:
labels[constants.CLIENT_LANGUAGE_LABEL_KEY] = constants.CLIENT_LANGUAGES[client]

# Add extra_labels to the labels dictionary
labels.update(extra_labels)

Expand Down
Loading