diff --git a/README.md b/README.md index 8548862af..81c569513 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/src/package_io/constants.star b/src/package_io/constants.star index d99d6006b..131deb262 100644 --- a/src/package_io/constants.star +++ b/src/package_io/constants.star @@ -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"] diff --git a/src/shared_utils/shared_utils.star b/src/shared_utils/shared_utils.star index 16dde5799..58b073322 100644 --- a/src/shared_utils/shared_utils.star +++ b/src/shared_utils/shared_utils.star @@ -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)