diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7a33002bb..378d9d2fa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [v1.2.2] - 2023-07-24
+
+### Changed
+
+- Update client images to Shapella-ready version for Gnosis.
+
+### Fixed
+
+- Issue in Chiado templates with checkpoint sync
+- Fix show error when using containers tags.
+- Fix chiado checkpoint sync url.
+
## [v1.2.1] - 2023-06-22
### Changed
@@ -33,8 +45,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Change validator blocker container image to [busybox](https://hub.docker.com/_/busybox).
-- Erigon command line flags.
-
+- Erigon command line flags.
+
## [v1.1.0] - 2023-04-07
### Added
@@ -81,8 +93,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Rename sedge data directory name to `sedge-data` instead of `docker-compose-scripts`.
- Update mev-boost relay URLs.
- Fixed validator restart failure. Validator never restarts, but has a better and safer start-up method:
- - Validator waits a grace period (2 epochs) before starting.
- - Validator waits for the consensus sync to finish: verifying that the `/eth/v1/node/health` consensus endpoint returns with the HTTP code 200 in the newly added `validator-blocker` docker-compose service. This replace the older track sync method.
+ - Validator waits a grace period (2 epochs) before starting.
+ - Validator waits for the consensus sync to finish: verifying that the `/eth/v1/node/health` consensus endpoint
+ returns with the HTTP code 200 in the newly added `validator-blocker` docker-compose service. This replace the
+ older track sync method.
- Updated installation script for docker and docker compose in Linux flavours.
- Updated Checkpoint Sync Url for Goerli.
- Use new created action for JWT secret handling.
diff --git a/cli/actions/getContainers.go b/cli/actions/getContainers.go
index fa101faed..d99e45e69 100644
--- a/cli/actions/getContainers.go
+++ b/cli/actions/getContainers.go
@@ -18,9 +18,11 @@ package actions
import (
"context"
"fmt"
+ "strings"
"github.com/NethermindEth/sedge/internal/pkg/generate"
"github.com/docker/docker/api/types"
+ "github.com/docker/docker/api/types/network"
log "github.com/sirupsen/logrus"
)
@@ -93,8 +95,13 @@ type ContainerData struct {
func getContainerData(containerData types.ContainerJSON) (ContainerData, error) {
data := ContainerData{}
- sedgeNetwork, ok := containerData.NetworkSettings.Networks["sedge-network"] // FIXME: fix in case of network data renaming
- if !ok {
+ var sedgeNetwork *network.EndpointSettings = nil
+ for networkName, networkSettings := range containerData.NetworkSettings.Networks {
+ if strings.HasPrefix(networkName, "sedge-network") {
+ sedgeNetwork = networkSettings
+ }
+ }
+ if sedgeNetwork == nil {
return ContainerData{}, fmt.Errorf("failed to get sedge-network for container %s", containerData.Name)
}
diff --git a/cli/actions/getContainers_test.go b/cli/actions/getContainers_test.go
index 726993a16..4b2f38e9f 100644
--- a/cli/actions/getContainers_test.go
+++ b/cli/actions/getContainers_test.go
@@ -20,6 +20,7 @@ import (
"errors"
"os"
"path/filepath"
+ "strings"
"testing"
"github.com/NethermindEth/sedge/cli/actions"
@@ -65,11 +66,20 @@ type getContainersTestCase struct {
logsOutput bytes.Buffer
isErr bool
expectedErrMsg string
+ containersTag string
+}
+
+func nameWithTag(
+ name,
+ tag string,
+) string {
+ return strings.Join([]string{name, tag}, "-")
}
func buildGetContainersDataTestCase(
t *testing.T,
- name string,
+ name,
+ containersTag,
caseDataDir string,
isErr bool,
expectedErrMsg string,
@@ -92,17 +102,23 @@ func buildGetContainersDataTestCase(
getContainersDataOptions: actions.GetContainersDataOptions{
DockerComposePath: testCaseFinalDockerComposeFilePath,
},
- expected: expected,
- logsOutput: bytes.Buffer{},
- isErr: isErr,
+ expected: expected,
+ logsOutput: bytes.Buffer{},
+ isErr: isErr,
+ containersTag: containersTag,
}
}
func buildInspectResults(
+ containersTag,
containerName,
containerImage,
containerIp string,
) types.ContainerJSON {
+ networkName := "sedge-network" // May change in templates
+ if containersTag != "" {
+ networkName = nameWithTag(networkName, containersTag)
+ }
return types.ContainerJSON{
ContainerJSONBase: &types.ContainerJSONBase{
Name: containerName,
@@ -112,7 +128,7 @@ func buildInspectResults(
},
NetworkSettings: &types.NetworkSettings{
Networks: map[string]*network.EndpointSettings{
- "sedge-network": { // FIXME: fix in case of network data renaming
+ networkName: {
IPAddress: containerIp,
},
},
@@ -120,7 +136,10 @@ func buildInspectResults(
}
}
-func getMockActions(t *testing.T) actions.SedgeActions {
+func getMockActions(
+ t *testing.T,
+ tc getContainersTestCase,
+) actions.SedgeActions {
ctrl := gomock.NewController(t)
dockerClient := sedge_mocks.NewMockAPIClient(ctrl)
t.Cleanup(
@@ -129,30 +148,18 @@ func getMockActions(t *testing.T) actions.SedgeActions {
},
)
- // execution container
- dockerClient.EXPECT().ContainerInspect(gomock.Any(), executionContainerName).Return(buildInspectResults(
- executionContainerName,
- executionContainerImage,
- executionContainerIp,
- ), nil).AnyTimes()
- // consensus container
- dockerClient.EXPECT().ContainerInspect(gomock.Any(), consensusContainerName).Return(buildInspectResults(
- consensusContainerName,
- consensusContainerImage,
- consensusContainerIp,
- ), nil).AnyTimes()
- // validator container
- dockerClient.EXPECT().ContainerInspect(gomock.Any(), validatorContainerName).Return(buildInspectResults(
- validatorContainerName,
- validatorContainerImage,
- validatorContainerIp,
- ), nil).AnyTimes()
- // mev boost container
- dockerClient.EXPECT().ContainerInspect(gomock.Any(), mevBoostContainerName).Return(buildInspectResults(
- mevBoostContainerName,
- mevBoostContainerImage,
- mevBoostContainerIp,
- ), nil).AnyTimes()
+ for _, container := range tc.expected.Containers {
+ dockerClient.EXPECT().ContainerInspect(gomock.Any(), container.Name).Return(
+ buildInspectResults(
+ tc.containersTag,
+ container.Name,
+ container.Image,
+ container.Ip,
+ ),
+ nil,
+ ).Times(1)
+ }
+
// not found containers
dockerClient.EXPECT().ContainerInspect(gomock.Any(), executionNotFoundContainerName).Return(types.ContainerJSON{}, errors.New(executionNotFoundErrorMsg)).AnyTimes()
dockerClient.EXPECT().ContainerInspect(gomock.Any(), consensusNotFoundContainerName).Return(types.ContainerJSON{}, errors.New(consensusNotFoundErrorMsg)).AnyTimes()
@@ -173,6 +180,7 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"Full Node",
+ "",
"case_fullNode",
false,
"",
@@ -201,9 +209,42 @@ func TestGetContainersData(t *testing.T) {
},
},
),
+ buildGetContainersDataTestCase(
+ t,
+ "Full Node with Tags",
+ "tag",
+ "case_fullNodeTag",
+ false,
+ "",
+ actions.ContainersData{
+ Containers: []actions.ContainerData{
+ {
+ Name: nameWithTag(executionContainerName, "tag"),
+ Image: executionContainerImage,
+ Ip: executionContainerIp,
+ },
+ {
+ Name: nameWithTag(mevBoostContainerName, "tag"),
+ Image: mevBoostContainerImage,
+ Ip: mevBoostContainerIp,
+ },
+ {
+ Name: nameWithTag(consensusContainerName, "tag"),
+ Image: consensusContainerImage,
+ Ip: consensusContainerIp,
+ },
+ {
+ Name: nameWithTag(validatorContainerName, "tag"),
+ Image: validatorContainerImage,
+ Ip: validatorContainerIp,
+ },
+ },
+ },
+ ),
buildGetContainersDataTestCase(
t,
"Execution Only",
+ "",
"case_executionOnly",
false,
"",
@@ -220,6 +261,7 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"Consensus Only",
+ "",
"case_consensusOnly",
false,
"",
@@ -236,6 +278,7 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"Validator Only",
+ "",
"case_validatorOnly",
false,
"",
@@ -252,6 +295,7 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"No Execution",
+ "",
"case_noExecution",
false,
"",
@@ -278,6 +322,7 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"No Consensus",
+ "",
"case_noConsensus",
false,
"",
@@ -304,6 +349,7 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"No Mev Boost",
+ "",
"case_noMev",
false,
"",
@@ -330,6 +376,7 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"No Validator",
+ "",
"case_noValidator",
false,
"",
@@ -356,32 +403,35 @@ func TestGetContainersData(t *testing.T) {
buildGetContainersDataTestCase(
t,
"Execution Not Found",
+ "",
"case_executionNF",
true,
executionNotFoundErrorMsg,
- actions.ContainersData{Containers: []actions.ContainerData{{}}},
+ actions.ContainersData{Containers: []actions.ContainerData{}},
),
buildGetContainersDataTestCase(
t,
"Consensus Not Found",
+ "",
"case_consensusNF",
true,
consensusNotFoundErrorMsg,
- actions.ContainersData{Containers: []actions.ContainerData{{}}},
+ actions.ContainersData{Containers: []actions.ContainerData{}},
),
buildGetContainersDataTestCase(
t,
"Validator Not Found",
+ "",
"case_validatorNF",
true,
validatorNotFoundErrorMsg,
- actions.ContainersData{Containers: []actions.ContainerData{{}}},
+ actions.ContainersData{Containers: []actions.ContainerData{}},
),
}
- actions := getMockActions(t)
for _, tc := range tcs {
t.Run(tc.name, func(t *testing.T) {
+ actions := getMockActions(t, tc)
log.SetOutput(&tc.logsOutput)
containersData, err := actions.GetContainersData(tc.getContainersDataOptions)
if tc.isErr {
diff --git a/cli/actions/testdata/getContainers_tests/case_fullNodeTag/docker-compose.yml b/cli/actions/testdata/getContainers_tests/case_fullNodeTag/docker-compose.yml
new file mode 100644
index 000000000..6a7703e20
--- /dev/null
+++ b/cli/actions/testdata/getContainers_tests/case_fullNodeTag/docker-compose.yml
@@ -0,0 +1,148 @@
+version: "3.9"
+services:
+ execution:
+ stop_grace_period: 30s
+ container_name: sedge-execution-client-tag
+ restart: unless-stopped
+ image: ${EC_IMAGE_VERSION}
+ networks:
+ - sedge
+ volumes:
+ - ${EC_DATA_DIR}:/nethermind/data
+ - ${EC_JWT_SECRET_PATH}:/tmp/jwt/jwtsecret
+ ports:
+ - 30303:30303/tcp
+ - 30303:30303/udp
+ - 8008:8008
+ - 8545:8545
+ - 8551:8551
+ expose:
+ - 8545
+ - 8551
+ command:
+ - --config=${NETWORK}
+ - --datadir=/nethermind/data
+ - --log=${NETHERMIND_LOG_LEVEL}
+ - --Sync.SnapSync=${EC_SNAP_SYNC_ENABLED}
+ - --JsonRpc.Enabled=true
+ - --JsonRpc.Host=0.0.0.0
+ - --JsonRpc.Port=8545
+ - --JsonRpc.EnabledModules=${EC_ENABLED_MODULES}
+ - --JsonRpc.JwtSecretFile=/tmp/jwt/jwtsecret
+ - --JsonRpc.EngineHost=0.0.0.0
+ - --JsonRpc.EnginePort=8551
+ - --Network.DiscoveryPort=30303
+ - --Network.Bootnodes=enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303,enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303,enode://8499da03c47d637b20eee24eec3c356c9a2e6148d6fe25ca195c7949ab8ec2c03e3556126b0d7ed644675e78c4318b08691b7b57de10e5f0d40d05b09238fa0a@52.187.207.27:30303,enode://103858bdb88756c71f15e9b5e09b56dc1be52f0a5021d46301dbbfb7e130029cc9d0d6f73f693bc29b665770fff7da4d34f3c6379fe12721b5d7a0bcb5ca1fc1@191.234.162.198:30303,enode://715171f50508aba88aecd1250af392a45a330af91d7b90701c436b618c86aaa1589c9184561907bebbb56439b8f8787bc01f49a7c77276c58c1b09822d75e8e8@52.231.165.108:30303,enode://5d6d7cd20d6da4bb83a1d28cadb5d409b64edf314c0335df658c1a54e32c7c4a7ab7823d57c39b6a757556e68ff1df17c748b698544a55cb488b52479a92b60f@104.42.217.25:30303,enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303,enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303
+ - --Discovery.Bootnodes=enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303,enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303,enode://8499da03c47d637b20eee24eec3c356c9a2e6148d6fe25ca195c7949ab8ec2c03e3556126b0d7ed644675e78c4318b08691b7b57de10e5f0d40d05b09238fa0a@52.187.207.27:30303,enode://103858bdb88756c71f15e9b5e09b56dc1be52f0a5021d46301dbbfb7e130029cc9d0d6f73f693bc29b665770fff7da4d34f3c6379fe12721b5d7a0bcb5ca1fc1@191.234.162.198:30303,enode://715171f50508aba88aecd1250af392a45a330af91d7b90701c436b618c86aaa1589c9184561907bebbb56439b8f8787bc01f49a7c77276c58c1b09822d75e8e8@52.231.165.108:30303,enode://5d6d7cd20d6da4bb83a1d28cadb5d409b64edf314c0335df658c1a54e32c7c4a7ab7823d57c39b6a757556e68ff1df17c748b698544a55cb488b52479a92b60f@104.42.217.25:30303,enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303,enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303
+ - --Network.StaticPeers=enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303,enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303,enode://8499da03c47d637b20eee24eec3c356c9a2e6148d6fe25ca195c7949ab8ec2c03e3556126b0d7ed644675e78c4318b08691b7b57de10e5f0d40d05b09238fa0a@52.187.207.27:30303,enode://103858bdb88756c71f15e9b5e09b56dc1be52f0a5021d46301dbbfb7e130029cc9d0d6f73f693bc29b665770fff7da4d34f3c6379fe12721b5d7a0bcb5ca1fc1@191.234.162.198:30303,enode://715171f50508aba88aecd1250af392a45a330af91d7b90701c436b618c86aaa1589c9184561907bebbb56439b8f8787bc01f49a7c77276c58c1b09822d75e8e8@52.231.165.108:30303,enode://5d6d7cd20d6da4bb83a1d28cadb5d409b64edf314c0335df658c1a54e32c7c4a7ab7823d57c39b6a757556e68ff1df17c748b698544a55cb488b52479a92b60f@104.42.217.25:30303,enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303,enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303
+ - --HealthChecks.Enabled=true
+ - --Pruning.CacheMb=${NETHERMIND_PRUNING_CACHEMB}
+ - --Metrics.Enabled=true
+ - --Metrics.ExposePort=8008
+ mev-boost:
+ image: flashbots/mev-boost:latest
+ networks:
+ - sedge
+ container_name: sedge-mev-boost-tag
+ restart: on-failure
+ entrypoint:
+ - /app/mev-boost
+ - -addr
+ - 0.0.0.0:18550
+ - -${NETWORK}
+ - -relay-check
+ - -relays
+ - ${RELAY_URLS}
+ consensus:
+ stop_grace_period: 30s
+ container_name: sedge-consensus-client-tag
+ restart: unless-stopped
+ image: ${CC_IMAGE_VERSION}
+ depends_on:
+ mev-boost:
+ condition: service_started
+ networks:
+ - sedge
+ volumes:
+ - ${CC_DATA_DIR}:/var/lib/lighthouse
+ - ${CC_JWT_SECRET_PATH}:/tmp/jwt/jwtsecret
+ ports:
+ - 9000:9000/tcp
+ - 9000:9000/udp
+ - 5054:5054/tcp
+ - 4000:4000
+ expose:
+ - 4000
+ command:
+ - lighthouse
+ - bn
+ - --disable-upnp
+ - --datadir=/var/lib/lighthouse
+ - --port=9000
+ - --http
+ - --http-address=0.0.0.0
+ - --http-port=4000
+ - --network=${NETWORK}
+ - --target-peers=${CC_PEER_COUNT}
+ - --execution-endpoints=${EC_AUTH_URL}
+ - --execution-jwt=/tmp/jwt/jwtsecret
+ - --eth1-endpoints=${EC_API_URL}
+ - --debug-level=${CC_LOG_LEVEL}
+ - --suggested-fee-recipient=${FEE_RECIPIENT}
+ - --validator-monitor-auto
+ - --subscribe-all-subnets
+ - --import-all-attestations
+ - --metrics
+ - --metrics-port=5054
+ - --metrics-address=0.0.0.0
+ - --checkpoint-sync-url=https://beaconstate.ethstaker.cc
+ - --builder=http://mev-boost:18550
+ validator-blocker:
+ container_name: sedge-validator-blocker-tag
+ image: yauritux/busybox-curl:latest
+ networks:
+ - sedge
+ command: |-
+ sh -c "
+ echo 'Waiting 420 seconds of grace period before starting the validator';
+ sleep 420;
+ echo 'Done';
+ while true; do
+ response=$$(curl -s -o /dev/null -w \"%{http_code}\" ${CC_API_URL}/eth/v1/node/health)
+ if [ $$response -eq 200 ]; then
+ echo 'Endpoint is up!'
+ break
+ else
+ echo 'Endpoint is down, waiting 30 seconds before checking again...'
+ sleep 30
+ fi
+ done
+ "
+ validator:
+ container_name: sedge-validator-client-tag
+ image: ${VL_IMAGE_VERSION}
+ depends_on:
+ validator-blocker:
+ condition: service_completed_successfully
+ networks:
+ - sedge
+ ports:
+ - 5056:5056
+ volumes:
+ - ${VL_DATA_DIR}:/data
+ command:
+ - lighthouse
+ - vc
+ - --network=${NETWORK}
+ - --beacon-nodes=${CC_API_URL}
+ - --graffiti=${GRAFFITI}
+ - --debug-level=${VL_LOG_LEVEL}
+ - --validators-dir=/data/validators
+ - --suggested-fee-recipient=${FEE_RECIPIENT}
+ - --metrics
+ - --metrics-port=5056
+ - --metrics-address=0.0.0.0
+ - --builder-proposals
+networks:
+ sedge:
+ name: sedge-network-tag
diff --git a/configs/client_images.yaml b/configs/client_images.yaml
index 42e24be6e..d752b6875 100644
--- a/configs/client_images.yaml
+++ b/configs/client_images.yaml
@@ -4,36 +4,36 @@ execution:
version: v1.12.0
besu:
name: hyperledger/besu
- version: 23.4.1
+ version: 23.4.4
nethermind:
name: nethermind/nethermind
- version: 1.19.2
+ version: 1.20.1
erigon:
name: thorax/erigon
- version: v2.46.0
+ version: v2.48.1
consensus:
lighthouse:
name: sigp/lighthouse
- version: v4.2.0
+ version: v4.3.0
lodestar:
name: chainsafe/lodestar
- version: v1.9.0
+ version: v1.9.2
teku:
name: consensys/teku
- version: 23.6.0
+ version: 23.6.2
prysm:
name: gcr.io/prysmaticlabs/prysm/beacon-chain
- version: v4.0.6
+ version: v4.0.7
validator:
lighthouse:
name: sigp/lighthouse
- version: v4.2.0
+ version: v4.3.0
lodestar:
name: chainsafe/lodestar
- version: v1.9.0
+ version: v1.9.2
teku:
name: consensys/teku
- version: 23.6.0
+ version: 23.6.2
prysm:
name: gcr.io/prysmaticlabs/prysm/validator
- version: v4.0.6
+ version: v4.0.7
diff --git a/docs/docs/quickstart/complete-guide.mdx b/docs/docs/quickstart/complete-guide.mdx
index 54d55d784..702e23ffe 100644
--- a/docs/docs/quickstart/complete-guide.mdx
+++ b/docs/docs/quickstart/complete-guide.mdx
@@ -34,21 +34,21 @@ The hardware specifications of the machine we are going to use are:
### 1. Download and install Sedge on a new brand Linux machine
First open a console in the Home directory. Then use `curl` or `wget` to download a binary from the releases page
-(we will be using the `1.2.1` version). Check the [installation guide](install-guide) for more information or if you
+(we will be using the `1.0.0` version). Check the [installation guide](install-guide) for more information or if you
want to use another installation method:
```
- curl -L https://github.com/NethermindEth/sedge/releases/download/v1.2.1/sedge-v1.2.1-linux-amd64 --output sedge
+ curl -L https://github.com/NethermindEth/sedge/releases/download/v1.2.2/sedge-v1.2.2-linux-amd64 --output sedge
```
```
- wget https://github.com/NethermindEth/sedge/releases/download/v1.2.1/sedge-v1.2.1-linux-amd64 -O sedge
+ wget https://github.com/NethermindEth/sedge/releases/download/v1.2.2/sedge-v1.2.2-linux-amd64 -O sedge
```
diff --git a/docs/docs/quickstart/install-guide.mdx b/docs/docs/quickstart/install-guide.mdx
index 8e39fd1c0..647bf11e7 100644
--- a/docs/docs/quickstart/install-guide.mdx
+++ b/docs/docs/quickstart/install-guide.mdx
@@ -37,7 +37,7 @@ Downloading any binary from the internet risks downloading files that malicious,
- > Replace `` with the desired version number, e.g 1.2.1; `` with your OS, e.g linux; and `` with your architecture, e.g amd64.
+ > Replace `` with the desired version number, e.g 1.2.2; `` with your OS, e.g linux; and `` with your architecture, e.g amd64.
2. Open a console or terminal instance on the directory you downloaded the binary.
3. Set binary as executable executing `chmod +x ` in the Terminal. Replace `` with the name of the downloaded binary.
diff --git a/docs/package-lock.json b/docs/package-lock.json
index e6ecd9a46..1b8cd540a 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -229,9 +229,9 @@
}
},
"node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -303,9 +303,9 @@
}
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -362,9 +362,9 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -1615,9 +1615,9 @@
}
},
"node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -1827,9 +1827,9 @@
}
},
"node_modules/@babel/preset-env/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -2982,9 +2982,9 @@
}
},
"node_modules/@mdx-js/mdx/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@@ -4192,9 +4192,9 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -7889,9 +7889,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -8517,9 +8517,9 @@
}
},
"node_modules/package-json/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -10081,9 +10081,9 @@
}
},
"node_modules/remark-mdx/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@@ -10518,9 +10518,9 @@
}
},
"node_modules/semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -10543,9 +10543,9 @@
}
},
"node_modules/semver-diff/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -12864,9 +12864,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -12921,9 +12921,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -12964,9 +12964,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -13777,9 +13777,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -13934,9 +13934,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -14838,9 +14838,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"source-map": {
"version": "0.5.7",
@@ -15782,9 +15782,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -18432,9 +18432,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -18866,9 +18866,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -19963,9 +19963,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"source-map": {
"version": "0.5.7",
@@ -20278,9 +20278,9 @@
}
},
"semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -20294,9 +20294,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
diff --git a/templates/envs/chiado/consensus/lighthouse.tmpl b/templates/envs/chiado/consensus/lighthouse.tmpl
index 16aaa2f9a..e17651f04 100644
--- a/templates/envs/chiado/consensus/lighthouse.tmpl
+++ b/templates/envs/chiado/consensus/lighthouse.tmpl
@@ -9,6 +9,7 @@ CC_INSTANCE_NAME=Lighthouse
CC_IMAGE_VERSION={{.CcImage}}
CC_DATA_DIR={{.CcDataDir}}
CC_JWT_SECRET_PATH={{.JWTSecretPath}}
+{{if .CheckpointSyncUrl}}CHECKPOINT_SYNC_URL={{.CheckpointSyncUrl}}{{end}}
{{ end }}
diff --git a/templates/envs/chiado/consensus/lodestar.tmpl b/templates/envs/chiado/consensus/lodestar.tmpl
index 1ef66d911..da3dd980a 100644
--- a/templates/envs/chiado/consensus/lodestar.tmpl
+++ b/templates/envs/chiado/consensus/lodestar.tmpl
@@ -10,4 +10,5 @@ CC_IMAGE_VERSION={{.CcImage}}
CC_DATA_DIR={{.CcDataDir}}
CC_JWT_SECRET_PATH={{.JWTSecretPath}}
CC_LODESTAR_PRESET=gnosis
+{{if .CheckpointSyncUrl}}CHECKPOINT_SYNC_URL={{.CheckpointSyncUrl}}{{end}}
{{ end }}
diff --git a/templates/envs/chiado/consensus/teku.tmpl b/templates/envs/chiado/consensus/teku.tmpl
index 6db6e126a..d7a0560f3 100644
--- a/templates/envs/chiado/consensus/teku.tmpl
+++ b/templates/envs/chiado/consensus/teku.tmpl
@@ -9,4 +9,5 @@ CC_INSTANCE_NAME=Teku
CC_IMAGE_VERSION={{.CcImage}}
CC_DATA_DIR={{.CcDataDir}}
CC_JWT_SECRET_PATH={{.JWTSecretPath}}
+{{if .CheckpointSyncUrl}}CHECKPOINT_SYNC_URL={{.CheckpointSyncUrl}}{{end}}
{{ end }}