From 3384f7af44029aea1fe1f48add21ebd4abc8700f Mon Sep 17 00:00:00 2001 From: dappnodedev Date: Fri, 6 Sep 2024 15:45:45 +0200 Subject: [PATCH 1/3] Add network config JSON --- config/config.json | 111 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 config/config.json diff --git a/config/config.json b/config/config.json new file mode 100644 index 0000000..08059a5 --- /dev/null +++ b/config/config.json @@ -0,0 +1,111 @@ +{ + "ports": { + "executionHttpRpc": 8545, + "executionWsRpc": 8546, + "executionEngine": 8551, + "beaconApi": 3500, + "validatorApi": 3500, + "signerApi": 9000, + "brainApi": 3000 + }, + "clientConfig": { + "prysm": { + "validatorApiToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" + }, + "lighthouse": { + "validatorApiToken": "api-token-0x0200e6ce18e26fd38caca7ae1bfb9e2bba7efb20ed2746ad17f2f6dda44603152d" + }, + "teku": { + "validatorApiToken": "cd4892ca35d2f5d3e2301a65fc7aa660" + }, + "lodestar": { + "validatorApiToken": "api-token-0x7fd16fff6453982a5d8bf14617e7823b68cd18ade59985befe64e0a659300e7d" + }, + "nimbus": { + "validatorApiToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" + } + }, + "networkConfig": { + "mainnet": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000001", + "packages": { + "execution": [ + "geth.dnp.dappnode.eth", + "nethermind.public.dappnode.eth", + "besu.public.dappnode.eth", + "erigon.dnp.dappnode.eth", + "reth.dnp.dappnode.eth" + ], + "consensus": [ + "prysm.dnp.dappnode.eth", + "lighthouse.dnp.dappnode.eth", + "teku.dnp.dappnode.eth", + "lodestar.dnp.dappnode.eth", + "nimbus.dnp.dappnode.eth" + ], + "signer": ["web3signer.dnp.dappnode.eth"], + "mevBoost": ["mev-boost.dnp.dappnode.eth"] + } + }, + "holesky": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000004268", + "packages": { + "execution": [ + "holesky-geth.dnp.dappnode.eth", + "holesky-nethermind.dnp.dappnode.eth", + "holesky-besu.dnp.dappnode.eth", + "holesky-erigon.dnp.dappnode.eth", + "holesky-reth.dnp.dappnode.eth" + ], + "consensus": [ + "prysm-holesky.dnp.dappnode.eth", + "lighthouse-holesky.dnp.dappnode.eth", + "teku-holesky.dnp.dappnode.eth", + "lodestar-holesky.dnp.dappnode.eth", + "nimbus-holesky.dnp.dappnode.eth" + ], + "signer": ["web3signer-holesky.dnp.dappnode.eth"], + "mevBoost": ["mev-boost-holesky.dnp.dappnode.eth"] + } + }, + "gnosis": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000064", + "packages": { + "execution": [ + "nethermind-xdai.dnp.dappnode.eth", + "gnosis-erigon.dnp.dappnode.eth" + ], + "consensus": [ + "gnosis-beacon-chain-prysm.dnp.dappnode.eth", + "lighthouse-gnosis.dnp.dappnode.eth", + "teku-gnosis.dnp.dappnode.eth", + "lodestar-gnosis.dnp.dappnode.eth", + "nimbus-gnosis.dnp.dappnode.eth" + ], + "signer": ["web3signer-gnosis.dnp.dappnode.eth"], + "mevBoost": [] + } + }, + "lukso": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e400000002a", + "packages": { + "execution": ["lukso-geth.dnp.dappnode.eth"], + "consensus": [ + "prysm-lukso.dnp.dappnode.eth", + "teku-lukso.dnp.dappnode.eth" + ], + "signer": ["web3signer-lukso.dnp.dappnode.eth"], + "mevBoost": [] + } + }, + "sepolia": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000aa36a7", + "packages": { + "execution": ["sepolia-geth.dnp.dappnode.eth"], + "consensus": ["prysm-sepolia.dnp.dappnode.eth"], + "signer": [], + "mevBoost": [] + } + } + } +} From caa890bcd7032c5f2c4b3cf12f308adf7171585f Mon Sep 17 00:00:00 2001 From: dappnodedev Date: Wed, 11 Sep 2024 09:47:56 +0200 Subject: [PATCH 2/3] Example for mainnet --- config/config.json | 305 +++++++++++++++++++++++++++++---------------- 1 file changed, 201 insertions(+), 104 deletions(-) diff --git a/config/config.json b/config/config.json index 08059a5..c085c0e 100644 --- a/config/config.json +++ b/config/config.json @@ -1,111 +1,208 @@ { - "ports": { - "executionHttpRpc": 8545, - "executionWsRpc": 8546, - "executionEngine": 8551, - "beaconApi": 3500, - "validatorApi": 3500, - "signerApi": 9000, - "brainApi": 3000 + "mainnet": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000001", + "packages": { + "execution": { + "geth.dnp.dappnode.eth": { + "apis": { + "httpRpc": { + "port": 8545 + }, + "wsRpc": { + "port": 8546 + }, + "engine": { + "port": 8551 + } + } + }, + "nethermind.public.dappnode.eth": { + "apis": { + "httpRpc": { + "port": 8545 + }, + "wsRpc": { + "port": 8546 + }, + "engine": { + "port": 8551 + } + } + }, + "besu.public.dappnode.eth": { + "apis": { + "httpRpc": { + "port": 8545 + }, + "wsRpc": { + "port": 8546 + }, + "engine": { + "port": 8551 + } + } + }, + "erigon.dnp.dappnode.eth": { + "apis": { + "httpRpc": { + "port": 8545 + }, + "wsRpc": { + "port": 8546 + }, + "engine": { + "port": 8551 + } + } + }, + "reth.dnp.dappnode.eth": { + "apis": { + "httpRpc": { + "port": 8545 + }, + "wsRpc": { + "port": 8546 + }, + "engine": { + "port": 8551 + } + } + } + }, + "consensus": { + "prysm.dnp.dappnode.eth": { + "apis": { + "beacon": { + "port": 3500 + }, + "validator": { + "port": 3500, + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" + } + } + }, + "lighthouse.dnp.dappnode.eth": { + "apis": { + "beacon": { + "port": 3500 + }, + "validator": { + "port": 3500, + "token": "api-token-0x0200e6ce18e26fd38caca7ae1bfb9e2bba7efb20ed2746ad17f2f6dda44603152d" + } + } + }, + "teku.dnp.dappnode.eth": { + "apis": { + "beacon": { + "port": 3500 + }, + "validator": { + "port": 3500, + "token": "cd4892ca35d2f5d3e2301a65fc7aa660" + } + } + }, + "lodestar.dnp.dappnode.eth": { + "apis": { + "beacon": { + "port": 3500 + }, + "validator": { + "port": 3500, + "token": "api-token-0x7fd16fff6453982a5d8bf14617e7823b68cd18ade59985befe64e0a659300e7d" + } + } + }, + "nimbus.dnp.dappnode.eth": { + "apis": { + "beacon": { + "port": 3500 + }, + "validator": { + "port": 3500, + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" + } + } + } + }, + "signer": { + "web3signer.dnp.dappnode.eth": { + "apis": { + "signer": { + "port": 9000 + }, + "brain": { + "port": 3000 + } + } + } + }, + "mevBoost": { + "mev-boost.dnp.dappnode.eth": { + "apis": { "mevBoost": { "port": 18550 } } + } + } + } }, - "clientConfig": { - "prysm": { - "validatorApiToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" - }, - "lighthouse": { - "validatorApiToken": "api-token-0x0200e6ce18e26fd38caca7ae1bfb9e2bba7efb20ed2746ad17f2f6dda44603152d" - }, - "teku": { - "validatorApiToken": "cd4892ca35d2f5d3e2301a65fc7aa660" - }, - "lodestar": { - "validatorApiToken": "api-token-0x7fd16fff6453982a5d8bf14617e7823b68cd18ade59985befe64e0a659300e7d" - }, - "nimbus": { - "validatorApiToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" + "holesky": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000004268", + "packages": { + "execution": [ + "holesky-geth.dnp.dappnode.eth", + "holesky-nethermind.dnp.dappnode.eth", + "holesky-besu.dnp.dappnode.eth", + "holesky-erigon.dnp.dappnode.eth", + "holesky-reth.dnp.dappnode.eth" + ], + "consensus": [ + "prysm-holesky.dnp.dappnode.eth", + "lighthouse-holesky.dnp.dappnode.eth", + "teku-holesky.dnp.dappnode.eth", + "lodestar-holesky.dnp.dappnode.eth", + "nimbus-holesky.dnp.dappnode.eth" + ], + "signer": ["web3signer-holesky.dnp.dappnode.eth"], + "mevBoost": ["mev-boost-holesky.dnp.dappnode.eth"] } }, - "networkConfig": { - "mainnet": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000001", - "packages": { - "execution": [ - "geth.dnp.dappnode.eth", - "nethermind.public.dappnode.eth", - "besu.public.dappnode.eth", - "erigon.dnp.dappnode.eth", - "reth.dnp.dappnode.eth" - ], - "consensus": [ - "prysm.dnp.dappnode.eth", - "lighthouse.dnp.dappnode.eth", - "teku.dnp.dappnode.eth", - "lodestar.dnp.dappnode.eth", - "nimbus.dnp.dappnode.eth" - ], - "signer": ["web3signer.dnp.dappnode.eth"], - "mevBoost": ["mev-boost.dnp.dappnode.eth"] - } - }, - "holesky": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000004268", - "packages": { - "execution": [ - "holesky-geth.dnp.dappnode.eth", - "holesky-nethermind.dnp.dappnode.eth", - "holesky-besu.dnp.dappnode.eth", - "holesky-erigon.dnp.dappnode.eth", - "holesky-reth.dnp.dappnode.eth" - ], - "consensus": [ - "prysm-holesky.dnp.dappnode.eth", - "lighthouse-holesky.dnp.dappnode.eth", - "teku-holesky.dnp.dappnode.eth", - "lodestar-holesky.dnp.dappnode.eth", - "nimbus-holesky.dnp.dappnode.eth" - ], - "signer": ["web3signer-holesky.dnp.dappnode.eth"], - "mevBoost": ["mev-boost-holesky.dnp.dappnode.eth"] - } - }, - "gnosis": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000064", - "packages": { - "execution": [ - "nethermind-xdai.dnp.dappnode.eth", - "gnosis-erigon.dnp.dappnode.eth" - ], - "consensus": [ - "gnosis-beacon-chain-prysm.dnp.dappnode.eth", - "lighthouse-gnosis.dnp.dappnode.eth", - "teku-gnosis.dnp.dappnode.eth", - "lodestar-gnosis.dnp.dappnode.eth", - "nimbus-gnosis.dnp.dappnode.eth" - ], - "signer": ["web3signer-gnosis.dnp.dappnode.eth"], - "mevBoost": [] - } - }, - "lukso": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e400000002a", - "packages": { - "execution": ["lukso-geth.dnp.dappnode.eth"], - "consensus": [ - "prysm-lukso.dnp.dappnode.eth", - "teku-lukso.dnp.dappnode.eth" - ], - "signer": ["web3signer-lukso.dnp.dappnode.eth"], - "mevBoost": [] - } - }, - "sepolia": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000aa36a7", - "packages": { - "execution": ["sepolia-geth.dnp.dappnode.eth"], - "consensus": ["prysm-sepolia.dnp.dappnode.eth"], - "signer": [], - "mevBoost": [] - } + "gnosis": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000064", + "packages": { + "execution": [ + "nethermind-xdai.dnp.dappnode.eth", + "gnosis-erigon.dnp.dappnode.eth" + ], + "consensus": [ + "gnosis-beacon-chain-prysm.dnp.dappnode.eth", + "lighthouse-gnosis.dnp.dappnode.eth", + "teku-gnosis.dnp.dappnode.eth", + "lodestar-gnosis.dnp.dappnode.eth", + "nimbus-gnosis.dnp.dappnode.eth" + ], + "signer": ["web3signer-gnosis.dnp.dappnode.eth"], + "mevBoost": [] + } + }, + "lukso": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e400000002a", + "packages": { + "execution": ["lukso-geth.dnp.dappnode.eth"], + "consensus": [ + "prysm-lukso.dnp.dappnode.eth", + "teku-lukso.dnp.dappnode.eth" + ], + "signer": ["web3signer-lukso.dnp.dappnode.eth"], + "mevBoost": [] + } + }, + "sepolia": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000aa36a7", + "packages": { + "execution": ["sepolia-geth.dnp.dappnode.eth"], + "consensus": ["prysm-sepolia.dnp.dappnode.eth"], + "signer": [], + "mevBoost": [] } } } From 33050d0f4f5e80dd5a7021b95e5122b5c9454998 Mon Sep 17 00:00:00 2001 From: dappnodedev Date: Wed, 11 Sep 2024 11:38:31 +0200 Subject: [PATCH 3/3] Add validation --- .github/workflows/validate-config-schema.yml | 34 ++ config/config.json | 312 +++++++------------ config/config.schema.json | 260 ++++++++++++++++ 3 files changed, 409 insertions(+), 197 deletions(-) create mode 100644 .github/workflows/validate-config-schema.yml create mode 100644 config/config.schema.json diff --git a/.github/workflows/validate-config-schema.yml b/.github/workflows/validate-config-schema.yml new file mode 100644 index 0000000..f0b5884 --- /dev/null +++ b/.github/workflows/validate-config-schema.yml @@ -0,0 +1,34 @@ +name: Validate JSON Schema + +on: + push: + branches: + - main + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + validate_json: + runs-on: ubuntu-latest + + steps: + # Checkout the repository code + - name: Checkout code + uses: actions/checkout@v4 + + # Set up Node.js to install ajv-cli + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: "18.x" + + # Install ajv-cli globally + - name: Install ajv-cli + run: npm install -g ajv-cli + + # Validate JSON against schema + - name: Validate config.json with schema.json + run: | + ajv validate -s config/config.schema.json -d config/config.json --strict=true diff --git a/config/config.json b/config/config.json index c085c0e..3299e8e 100644 --- a/config/config.json +++ b/config/config.json @@ -1,208 +1,126 @@ { - "mainnet": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000001", - "packages": { - "execution": { - "geth.dnp.dappnode.eth": { - "apis": { - "httpRpc": { - "port": 8545 - }, - "wsRpc": { - "port": 8546 - }, - "engine": { - "port": 8551 - } - } - }, - "nethermind.public.dappnode.eth": { - "apis": { - "httpRpc": { - "port": 8545 - }, - "wsRpc": { - "port": 8546 - }, - "engine": { - "port": 8551 - } - } - }, - "besu.public.dappnode.eth": { - "apis": { - "httpRpc": { - "port": 8545 - }, - "wsRpc": { - "port": 8546 - }, - "engine": { - "port": 8551 - } - } - }, - "erigon.dnp.dappnode.eth": { - "apis": { - "httpRpc": { - "port": 8545 - }, - "wsRpc": { - "port": 8546 - }, - "engine": { - "port": 8551 - } - } - }, - "reth.dnp.dappnode.eth": { - "apis": { - "httpRpc": { - "port": 8545 - }, - "wsRpc": { - "port": 8546 - }, - "engine": { - "port": 8551 - } - } - } + "apis": { + "execution": { + "httpRpc": { + "port": 8545 }, - "consensus": { - "prysm.dnp.dappnode.eth": { - "apis": { - "beacon": { - "port": 3500 - }, - "validator": { - "port": 3500, - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" - } - } - }, - "lighthouse.dnp.dappnode.eth": { - "apis": { - "beacon": { - "port": 3500 - }, - "validator": { - "port": 3500, - "token": "api-token-0x0200e6ce18e26fd38caca7ae1bfb9e2bba7efb20ed2746ad17f2f6dda44603152d" - } - } - }, - "teku.dnp.dappnode.eth": { - "apis": { - "beacon": { - "port": 3500 - }, - "validator": { - "port": 3500, - "token": "cd4892ca35d2f5d3e2301a65fc7aa660" - } - } - }, - "lodestar.dnp.dappnode.eth": { - "apis": { - "beacon": { - "port": 3500 - }, - "validator": { - "port": 3500, - "token": "api-token-0x7fd16fff6453982a5d8bf14617e7823b68cd18ade59985befe64e0a659300e7d" - } - } - }, - "nimbus.dnp.dappnode.eth": { - "apis": { - "beacon": { - "port": 3500 - }, - "validator": { - "port": 3500, - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" - } - } - } + "wsRpc": { + "port": 8546 }, - "signer": { - "web3signer.dnp.dappnode.eth": { - "apis": { - "signer": { - "port": 9000 - }, - "brain": { - "port": 3000 - } - } - } + "engine": { + "port": 8551 + } + }, + "consensus": { + "beacon": { + "port": 3500 }, - "mevBoost": { - "mev-boost.dnp.dappnode.eth": { - "apis": { "mevBoost": { "port": 18550 } } + "validator": { + "port": 3500, + "auth": { + "prysm": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg", + "lighthouse": "api-token-0x0200e6ce18e26fd38caca7ae1bfb9e2bba7efb20ed2746ad17f2f6dda44603152d", + "teku": "cd4892ca35d2f5d3e2301a65fc7aa660", + "lodestar": "api-token-0x7fd16fff6453982a5d8bf14617e7823b68cd18ade59985befe64e0a659300e7d", + "nimbus": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg" } } + }, + "signer": { + "web3signer": { + "port": 9000 + }, + "brain": { + "port": 3000 + } + }, + "mev-boost": { + "mev-boost": { + "port": 18550 + } } }, - "holesky": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000004268", - "packages": { - "execution": [ - "holesky-geth.dnp.dappnode.eth", - "holesky-nethermind.dnp.dappnode.eth", - "holesky-besu.dnp.dappnode.eth", - "holesky-erigon.dnp.dappnode.eth", - "holesky-reth.dnp.dappnode.eth" - ], - "consensus": [ - "prysm-holesky.dnp.dappnode.eth", - "lighthouse-holesky.dnp.dappnode.eth", - "teku-holesky.dnp.dappnode.eth", - "lodestar-holesky.dnp.dappnode.eth", - "nimbus-holesky.dnp.dappnode.eth" - ], - "signer": ["web3signer-holesky.dnp.dappnode.eth"], - "mevBoost": ["mev-boost-holesky.dnp.dappnode.eth"] - } - }, - "gnosis": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000064", - "packages": { - "execution": [ - "nethermind-xdai.dnp.dappnode.eth", - "gnosis-erigon.dnp.dappnode.eth" - ], - "consensus": [ - "gnosis-beacon-chain-prysm.dnp.dappnode.eth", - "lighthouse-gnosis.dnp.dappnode.eth", - "teku-gnosis.dnp.dappnode.eth", - "lodestar-gnosis.dnp.dappnode.eth", - "nimbus-gnosis.dnp.dappnode.eth" - ], - "signer": ["web3signer-gnosis.dnp.dappnode.eth"], - "mevBoost": [] - } - }, - "lukso": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e400000002a", - "packages": { - "execution": ["lukso-geth.dnp.dappnode.eth"], - "consensus": [ - "prysm-lukso.dnp.dappnode.eth", - "teku-lukso.dnp.dappnode.eth" - ], - "signer": ["web3signer-lukso.dnp.dappnode.eth"], - "mevBoost": [] - } - }, - "sepolia": { - "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000aa36a7", - "packages": { - "execution": ["sepolia-geth.dnp.dappnode.eth"], - "consensus": ["prysm-sepolia.dnp.dappnode.eth"], - "signer": [], - "mevBoost": [] + "networks": { + "mainnet": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000001", + "packages": { + "execution": [ + "geth.dnp.dappnode.eth", + "nethermind.public.dappnode.eth", + "besu.public.dappnode.eth", + "erigon.dnp.dappnode.eth", + "reth.dnp.dappnode.eth" + ], + "consensus": [ + "prysm.dnp.dappnode.eth", + "lighthouse.dnp.dappnode.eth", + "teku.dnp.dappnode.eth", + "lodestar.dnp.dappnode.eth", + "nimbus.dnp.dappnode.eth" + ], + "signer": ["web3signer.dnp.dappnode.eth"], + "mev-boost": ["mev-boost.dnp.dappnode.eth"] + } + }, + "holesky": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000004268", + "packages": { + "execution": [ + "holesky-geth.dnp.dappnode.eth", + "holesky-nethermind.dnp.dappnode.eth", + "holesky-besu.dnp.dappnode.eth", + "holesky-erigon.dnp.dappnode.eth", + "holesky-reth.dnp.dappnode.eth" + ], + "consensus": [ + "prysm-holesky.dnp.dappnode.eth", + "lighthouse-holesky.dnp.dappnode.eth", + "teku-holesky.dnp.dappnode.eth", + "lodestar-holesky.dnp.dappnode.eth", + "nimbus-holesky.dnp.dappnode.eth" + ], + "signer": ["web3signer-holesky.dnp.dappnode.eth"], + "mev-boost": ["mev-boost-holesky.dnp.dappnode.eth"] + } + }, + "gnosis": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000000064", + "packages": { + "execution": [ + "nethermind-xdai.dnp.dappnode.eth", + "gnosis-erigon.dnp.dappnode.eth" + ], + "consensus": [ + "gnosis-beacon-chain-prysm.dnp.dappnode.eth", + "lighthouse-gnosis.dnp.dappnode.eth", + "teku-gnosis.dnp.dappnode.eth", + "lodestar-gnosis.dnp.dappnode.eth", + "nimbus-gnosis.dnp.dappnode.eth" + ], + "signer": ["web3signer-gnosis.dnp.dappnode.eth"], + "mev-boost": [] + } + }, + "lukso": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e400000002a", + "packages": { + "execution": ["lukso-geth.dnp.dappnode.eth"], + "consensus": [ + "prysm-lukso.dnp.dappnode.eth", + "teku-lukso.dnp.dappnode.eth" + ], + "signer": ["web3signer-lukso.dnp.dappnode.eth"], + "mev-boost": [] + } + }, + "sepolia": { + "jwt": "7ad9cfdec75eceb662f5e48f5765701c17f51a5233a60fbcfa5f9e4000aa36a7", + "packages": { + "execution": ["sepolia-geth.dnp.dappnode.eth"], + "consensus": ["prysm-sepolia.dnp.dappnode.eth"], + "signer": [], + "mev-boost": [] + } } } } diff --git a/config/config.schema.json b/config/config.schema.json new file mode 100644 index 0000000..01a44ea --- /dev/null +++ b/config/config.schema.json @@ -0,0 +1,260 @@ +{ + "type": "object", + "properties": { + "apis": { + "type": "object", + "properties": { + "execution": { + "type": "object", + "properties": { + "httpRpc": { + "type": "object", + "properties": { + "port": { "type": "integer" } + }, + "required": ["port"] + }, + "wsRpc": { + "type": "object", + "properties": { + "port": { "type": "integer" } + }, + "required": ["port"] + }, + "engine": { + "type": "object", + "properties": { + "port": { "type": "integer" } + }, + "required": ["port"] + } + }, + "required": ["httpRpc", "wsRpc", "engine"] + }, + "consensus": { + "type": "object", + "properties": { + "beacon": { + "type": "object", + "properties": { + "port": { "type": "integer" } + }, + "required": ["port"] + }, + "validator": { + "type": "object", + "properties": { + "port": { "type": "integer" }, + "auth": { + "type": "object", + "properties": { + "prysm": { "type": "string" }, + "lighthouse": { "type": "string" }, + "teku": { "type": "string" }, + "lodestar": { "type": "string" }, + "nimbus": { "type": "string" } + }, + "required": [ + "prysm", + "lighthouse", + "teku", + "lodestar", + "nimbus" + ] + } + }, + "required": ["port", "auth"] + } + }, + "required": ["beacon", "validator"] + }, + "signer": { + "type": "object", + "properties": { + "web3signer": { + "type": "object", + "properties": { + "port": { "type": "integer" } + }, + "required": ["port"] + }, + "brain": { + "type": "object", + "properties": { + "port": { "type": "integer" } + }, + "required": ["port"] + } + }, + "required": ["web3signer", "brain"] + }, + "mev-boost": { + "type": "object", + "properties": { + "mev-boost": { + "type": "object", + "properties": { + "port": { "type": "integer" } + }, + "required": ["port"] + } + }, + "required": ["mev-boost"] + } + }, + "required": ["execution", "consensus", "signer", "mev-boost"] + }, + "networks": { + "type": "object", + "properties": { + "mainnet": { + "type": "object", + "properties": { + "jwt": { "type": "string" }, + "packages": { + "type": "object", + "properties": { + "execution": { + "type": "array", + "items": { "type": "string" } + }, + "consensus": { + "type": "array", + "items": { "type": "string" } + }, + "signer": { + "type": "array", + "items": { "type": "string" } + }, + "mev-boost": { + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["execution", "consensus", "signer", "mev-boost"] + } + }, + "required": ["jwt", "packages"] + }, + "holesky": { + "type": "object", + "properties": { + "jwt": { "type": "string" }, + "packages": { + "type": "object", + "properties": { + "execution": { + "type": "array", + "items": { "type": "string" } + }, + "consensus": { + "type": "array", + "items": { "type": "string" } + }, + "signer": { + "type": "array", + "items": { "type": "string" } + }, + "mev-boost": { + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["execution", "consensus", "signer", "mev-boost"] + } + }, + "required": ["jwt", "packages"] + }, + "gnosis": { + "type": "object", + "properties": { + "jwt": { "type": "string" }, + "packages": { + "type": "object", + "properties": { + "execution": { + "type": "array", + "items": { "type": "string" } + }, + "consensus": { + "type": "array", + "items": { "type": "string" } + }, + "signer": { + "type": "array", + "items": { "type": "string" } + }, + "mev-boost": { + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["execution", "consensus", "signer", "mev-boost"] + } + }, + "required": ["jwt", "packages"] + }, + "lukso": { + "type": "object", + "properties": { + "jwt": { "type": "string" }, + "packages": { + "type": "object", + "properties": { + "execution": { + "type": "array", + "items": { "type": "string" } + }, + "consensus": { + "type": "array", + "items": { "type": "string" } + }, + "signer": { + "type": "array", + "items": { "type": "string" } + }, + "mev-boost": { + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["execution", "consensus", "signer", "mev-boost"] + } + }, + "required": ["jwt", "packages"] + }, + "sepolia": { + "type": "object", + "properties": { + "jwt": { "type": "string" }, + "packages": { + "type": "object", + "properties": { + "execution": { + "type": "array", + "items": { "type": "string" } + }, + "consensus": { + "type": "array", + "items": { "type": "string" } + }, + "signer": { + "type": "array", + "items": { "type": "string" } + }, + "mev-boost": { + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["execution", "consensus", "signer", "mev-boost"] + } + }, + "required": ["jwt", "packages"] + } + }, + "required": ["mainnet", "holesky", "gnosis", "lukso", "sepolia"] + } + }, + "required": ["apis", "networks"] +}