Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
f1680ad
test vectors ssz
turuslan Mar 17, 2026
143677a
test vectors verify signatures
turuslan Mar 17, 2026
d35b605
test vectors state transition
turuslan Mar 17, 2026
6bbd0e8
test vectors fork choice
turuslan Mar 17, 2026
d7ba5be
fixtures
turuslan Mar 17, 2026
e604c0c
split ssz test
turuslan Mar 18, 2026
23cb4f0
split verify signatures test
turuslan Mar 18, 2026
78bd31d
split state transition test
turuslan Mar 18, 2026
c5510bb
split fork choice test
turuslan Mar 18, 2026
192c227
try fix ci
turuslan Mar 18, 2026
5a85ae5
fix ci
turuslan Mar 18, 2026
12e5888
fork choice mutex
turuslan Mar 18, 2026
ee6b13e
log hash
turuslan Mar 24, 2026
8584aa0
xmss sk ssz
turuslan Mar 25, 2026
1f78502
fix "Address already in use"
turuslan Mar 26, 2026
6dfa262
build out dir
turuslan Apr 3, 2026
18b7212
simplify interval tick
turuslan Apr 3, 2026
d2a1eba
fix proposer attestation justified
turuslan Apr 7, 2026
4bfba25
remove proposer attestation
turuslan Apr 8, 2026
a982b8a
update leanSig leanMultisig
turuslan Apr 8, 2026
5e31450
hashsig yaml
turuslan Apr 13, 2026
3ac0ef7
update proposal and aggregation
turuslan Apr 13, 2026
39b3d6b
fix genesis
turuslan Apr 13, 2026
212bbb0
don't skip slot 0
turuslan Apr 13, 2026
aa3f227
fix tests
turuslan Apr 13, 2026
a322453
update leanMultisig
turuslan Apr 13, 2026
b62d670
update leanMultisig
turuslan Apr 14, 2026
f2db04f
update leanMultisig
turuslan Apr 14, 2026
cd84ea6
LEAN-INTEROP-TEST log
turuslan Apr 16, 2026
528d8ed
simplify flags, annotated_validators.yaml
turuslan Apr 16, 2026
6c6999c
fix log
turuslan Apr 16, 2026
05762de
fix test
turuslan Apr 16, 2026
1cdd89b
gossip 12345678
turuslan Apr 17, 2026
1da3780
fix http server
turuslan Apr 17, 2026
d687e32
fix most of test vectors
turuslan Apr 20, 2026
8847c7d
/lean/v0/admin/aggregator
turuslan Apr 20, 2026
c425cfd
devnet4 metrics
turuslan Apr 20, 2026
c9eca32
fix git version
turuslan Apr 22, 2026
a54e5f5
fix cmake
turuslan Apr 22, 2026
26b7e35
fake multisig
turuslan Apr 24, 2026
a6ac7be
link static executable
turuslan Apr 27, 2026
1db743d
bypass module loader
turuslan Apr 27, 2026
36d20ee
remove unused modules
turuslan Apr 27, 2026
837bf13
remove --modules-dir
turuslan Apr 27, 2026
33c5e19
fix docker static exe
turuslan Apr 27, 2026
a2e937f
docker mkdir
turuslan Apr 28, 2026
c25082a
fix semicolon
turuslan Apr 28, 2026
196631c
fix makefile
turuslan Apr 28, 2026
a89536a
/lean/v0/health service
turuslan May 12, 2026
b9cdc2d
enr verify original payload
turuslan May 12, 2026
4d93aad
fix mock
turuslan May 12, 2026
141e93b
todo failing test vectors
turuslan May 12, 2026
98e3d13
try fix ci
turuslan May 12, 2026
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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakConstructorInitializers: BeforeColon
BreakConstructorInitializersBeforeComma: false
BreakStringLiterals: true
BreakStringLiterals: false
ColumnLimit: 80
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ContinuationIndentWidth: 4
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ endif ()
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API ON)
set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE)

# Reconfigure cmake when vcpkg-overlay files change
file(GLOB_RECURSE vcpkg_overlay_files "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg-overlay/*")
Expand Down
2 changes: 1 addition & 1 deletion DOCKER_BUILD.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ make docker_build

**Library not found in runtime**
```bash
docker run --rm qlean-mini:latest ldd /usr/local/bin/qlean
docker run --rm qlean-mini:latest ldd /opt/qlean/bin/qlean
```

**Check image sizes**
Expand Down
35 changes: 7 additions & 28 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,12 @@ RUN --mount=type=cache,target=/qlean-mini/.vcpkg,id=vcpkg-full \
make configure; \
make build; \
# Collect artifacts
mkdir -p /opt/artifacts/bin /opt/artifacts/modules /opt/artifacts/lib /opt/artifacts/vcpkg; \
# Copy executable
cp -v ${BUILD}/src/executable/qlean /opt/artifacts/bin/; \
# Copy all module .so files
find ${BUILD}/src/modules -type f -name "*_module.so" -exec cp -v {} /opt/artifacts/modules/ \; || true; \
# Copy all other project .so libraries (app, utils, etc)
find ${BUILD}/src -type f -name "*.so" ! -name "*_module.so" -exec cp -v {} /opt/artifacts/lib/ \; || true; \
# Copy vcpkg installed libraries
if [ -d "${BUILD}/vcpkg_installed" ]; then \
cp -R ${BUILD}/vcpkg_installed /opt/artifacts/vcpkg/installed; \
fi; \
# Copy statically linked executable
mkdir -p /opt/artifacts/out/bin; \
cp -r -v ${BUILD}/out/bin/qlean /opt/artifacts/out/bin/qlean; \
# List collected artifacts
echo "=== Collected artifacts ==="; \
ls -lh /opt/artifacts/bin/; \
ls -lh /opt/artifacts/modules/ || true; \
ls -lh /opt/artifacts/lib/ || true
ls -lh /opt/artifacts/out/bin/qlean

# ==================== Stage 2: Runtime ====================
FROM ${BASE_IMAGE} AS runtime
Expand All @@ -86,25 +76,14 @@ RUN apt-get update && \
ca-certificates && \
rm -rf /var/lib/apt/lists/*

# Environment variables for runtime
ENV LD_LIBRARY_PATH=/opt/qlean/lib:/opt/qlean/vcpkg/installed/x64-linux/lib:/opt/qlean/vcpkg/installed/x64-linux-dynamic/lib:/opt/qlean/vcpkg/installed/lib:/usr/local/lib
ENV QLEAN_MODULES_DIR=/opt/qlean/modules

WORKDIR /work

# Copy artifacts from builder
COPY --from=builder /opt/artifacts/bin/qlean /usr/local/bin/qlean
COPY --from=builder /opt/artifacts/lib/ /opt/qlean/lib/
COPY --from=builder /opt/artifacts/modules/ /opt/qlean/modules/
COPY --from=builder /opt/artifacts/vcpkg/installed/ /opt/qlean/vcpkg/installed/
COPY --from=builder /opt/artifacts/out/bin/qlean /opt/qlean/bin/qlean

# Verify artifacts
RUN echo "=== Runtime image contents ===" && \
ls -lh /usr/local/bin/qlean && \
echo "=== Project libraries ===" && \
ls -lh /opt/qlean/lib/ || true && \
echo "=== Modules ===" && \
ls -lh /opt/qlean/modules/ || true
ls -lh /opt/qlean/bin/qlean

# OCI Image Spec annotations
# https://github.com/opencontainers/image-spec/blob/main/annotations.md
Expand All @@ -120,5 +99,5 @@ LABEL org.opencontainers.image.revision=$GIT_COMMIT
LABEL org.opencontainers.image.ref.name=$GIT_BRANCH
LABEL org.opencontainers.image.base.name=$BASE_IMAGE

ENTRYPOINT ["qlean", "--modules-dir", "/opt/qlean/modules"]
ENTRYPOINT ["/opt/qlean/bin/qlean"]
CMD ["--help"]
20 changes: 4 additions & 16 deletions Dockerfile.builder
Original file line number Diff line number Diff line change
Expand Up @@ -70,23 +70,11 @@ RUN set -eux; \
-B ${BUILD} \
${PROJECT}; \
cmake --build ${BUILD} --parallel; \
mkdir -p /opt/artifacts/bin /opt/artifacts/modules /opt/artifacts/lib /opt/artifacts/vcpkg; \
cp -v ${BUILD}/src/executable/qlean /opt/artifacts/bin/; \
strip /opt/artifacts/bin/qlean; \
find ${BUILD}/src/modules -type f -name "*_module.so" -exec cp -v {} /opt/artifacts/modules/ \; || true; \
find /opt/artifacts/modules/ -name "*.so" -exec strip {} \; || true; \
find ${BUILD}/src -type f -name "*.so" ! -name "*_module.so" -exec cp -v {} /opt/artifacts/lib/ \; || true; \
find /opt/artifacts/lib/ -name "*.so" -exec strip {} \; || true; \
if [ -d "${BUILD}/vcpkg_installed" ]; then \
echo "Collecting only runtime .so libraries from vcpkg..."; \
find ${BUILD}/vcpkg_installed -name "*.so*" -type f -exec cp -v {} /opt/artifacts/vcpkg/ \; 2>/dev/null || true; \
find /opt/artifacts/vcpkg/ -name "*.so*" -exec strip {} \; 2>/dev/null || true; \
fi; \
mkdir -p /opt/artifacts/out/bin; \
cp -r -v ${BUILD}/out/bin/qlean /opt/artifacts/out/bin/qlean; \
strip /opt/artifacts/out/bin/qlean; \
echo "=== Artifacts ==="; \
ls -lh /opt/artifacts/bin/; \
ls -lh /opt/artifacts/modules/ || true; \
ls -lh /opt/artifacts/lib/ || true; \
echo "Vcpkg libraries: $(find /opt/artifacts/vcpkg/ -name '*.so*' | wc -l) files"
ls -lh /opt/artifacts/out/bin/qlean

# OCI Image Spec annotations
# https://github.com/opencontainers/image-spec/blob/main/annotations.md
Expand Down
16 changes: 3 additions & 13 deletions Dockerfile.runtime
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,14 @@ RUN apt-get update && \
ca-certificates && \
rm -rf /var/lib/apt/lists/*

ENV LD_LIBRARY_PATH=/opt/qlean/lib:/opt/qlean/vcpkg:/usr/local/lib
ENV QLEAN_MODULES_DIR=/opt/qlean/modules

WORKDIR /work

# Copy artifacts from builder (binaries are already stripped)
COPY --from=builder /opt/artifacts/bin/qlean /usr/local/bin/qlean
COPY --from=builder /opt/artifacts/lib/ /opt/qlean/lib/
COPY --from=builder /opt/artifacts/modules/ /opt/qlean/modules/
COPY --from=builder /opt/artifacts/vcpkg/ /opt/qlean/vcpkg/
COPY --from=builder /opt/artifacts/out/bin/qlean /opt/qlean/bin/qlean

# Verify runtime image
RUN echo "=== Runtime image contents ===" && \
echo "Binary:" && ls -lh /usr/local/bin/qlean && \
echo "" && echo "Project libraries:" && ls -lh /opt/qlean/lib/ 2>/dev/null || echo " (none)" && \
echo "" && echo "Modules:" && ls -lh /opt/qlean/modules/ 2>/dev/null || echo " (none)" && \
echo "" && echo "Vcpkg libraries:" && ls /opt/qlean/vcpkg/ | wc -l && echo " files" && \
echo "" && echo "Total image libraries:" && find /opt/qlean -name "*.so*" | wc -l && echo " .so files"
echo "Binary:" && ls -lh /opt/qlean/bin/qlean

# OCI Image Spec annotations
# https://github.com/opencontainers/image-spec/blob/main/annotations.md
Expand All @@ -53,5 +43,5 @@ LABEL org.opencontainers.image.revision=$GIT_COMMIT
LABEL org.opencontainers.image.ref.name=$GIT_BRANCH
LABEL org.opencontainers.image.base.name=$BASE_IMAGE

ENTRYPOINT ["qlean", "--modules-dir", "/opt/qlean/modules"]
ENTRYPOINT ["/opt/qlean/bin/qlean"]
CMD ["--help"]
37 changes: 6 additions & 31 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,6 @@ docker_build_ci:
docker_run:
@echo "=== Running Docker image $(DOCKER_IMAGE_RUNTIME) ==="
@echo "Platform: $(DOCKER_PLATFORM)"
@echo "Note: --modules-dir is already set in ENTRYPOINT"
@echo ""
@echo "Usage examples:"
@echo " make docker_run # Show help"
Expand Down Expand Up @@ -272,44 +271,20 @@ docker_verify:
@echo "Image: $(DOCKER_IMAGE_RUNTIME)"
@echo "Platform: $(DOCKER_PLATFORM)"
@echo ""
@echo "[1/7] Testing help command..."
@echo "[1/4] Testing help command..."
@docker run --rm --platform $(DOCKER_PLATFORM) $(DOCKER_IMAGE_RUNTIME) --help > /dev/null && echo " ✓ Help works" || (echo " ✗ Help failed" && exit 1)
@echo ""
@echo "[2/7] Testing version command..."
@echo "[2/4] Testing version command..."
@docker run --rm --platform $(DOCKER_PLATFORM) $(DOCKER_IMAGE_RUNTIME) --version && echo " ✓ Version works" || (echo " ✗ Version failed" && exit 1)
@echo ""
@echo "[3/7] Checking binary dependencies..."
@echo "[3/4] Checking binary dependencies..."
@docker run --rm --platform $(DOCKER_PLATFORM) --entrypoint /bin/bash $(DOCKER_IMAGE_RUNTIME) -c '\
apt-get update -qq && apt-get install -y -qq file > /dev/null 2>&1 && \
echo "Binary info:" && file /usr/local/bin/qlean && \
echo "Binary info:" && file /opt/qlean/bin/qlean && \
echo "" && echo "Checking for missing libraries..." && \
ldd /usr/local/bin/qlean | grep "not found" && exit 1 || echo " ✓ All binary dependencies OK"'
ldd /opt/qlean/bin/qlean | grep "not found" && exit 1 || echo " ✓ All binary dependencies OK"'
@echo ""
@echo "[4/7] Checking modules..."
@docker run --rm --platform $(DOCKER_PLATFORM) --entrypoint /bin/bash $(DOCKER_IMAGE_RUNTIME) -c '\
echo "Modules:" && ls -lh /opt/qlean/modules/ && \
echo "" && echo "Checking module dependencies..." && \
for mod in /opt/qlean/modules/*.so; do \
echo "Checking $$(basename $$mod)..."; \
ldd $$mod | grep "not found" && exit 1 || echo " ✓ OK"; \
done'
@echo ""
@echo "[5/7] Checking environment variables..."
@docker run --rm --platform $(DOCKER_PLATFORM) --entrypoint /bin/bash $(DOCKER_IMAGE_RUNTIME) -c '\
echo "LD_LIBRARY_PATH=$$LD_LIBRARY_PATH" && \
echo "QLEAN_MODULES_DIR=$$QLEAN_MODULES_DIR" && \
echo "" && echo "Verifying paths exist:" && \
ls -ld $$QLEAN_MODULES_DIR > /dev/null && echo " ✓ Modules dir exists" || (echo " ✗ Modules dir missing" && exit 1) && \
ls -d /opt/qlean/lib > /dev/null && echo " ✓ Lib dir exists" || (echo " ✗ Lib dir missing" && exit 1)'
@echo ""
@echo "[6/7] Checking project libraries..."
@docker run --rm --platform $(DOCKER_PLATFORM) --entrypoint /bin/bash $(DOCKER_IMAGE_RUNTIME) -c '\
apt-get update -qq && apt-get install -y -qq file > /dev/null 2>&1 && \
echo "Project libraries:" && ls /opt/qlean/lib/ && \
echo "" && echo "Checking libapplication.so dependencies..." && \
ldd /opt/qlean/lib/libapplication.so | grep "not found" && exit 1 || echo " ✓ All project libraries OK"'
@echo ""
@echo "[7/7] Checking OCI labels (https://github.com/opencontainers/image-spec/blob/main/annotations.md)"
@echo "[4/4] Checking OCI labels (https://github.com/opencontainers/image-spec/blob/main/annotations.md)"
@docker inspect $(DOCKER_IMAGE_RUNTIME) --format '{{range $$k, $$v := .Config.Labels}}{{$$k}}={{$$v}}{{"\n"}}{{end}}' | \
awk -F= ' \
/^org.opencontainers.image.title=/ { title=$$2 } \
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,13 +245,13 @@ See [.github/workflows/README.md](.github/workflows/README.md) for CI/CD documen

This will:
- Configure the project into `./build/`
- Build the main node executable at `./build/src/executable/qlean`
- Build the main node executable at `./build/out/qlean`

### 3) Ensure build was successful
Print help:

```bash
./build/src/executable/qlean --help
./build/out/qlean --help
```

## Run the node
Expand All @@ -264,7 +264,7 @@ For step-by-step instructions to run a local single-node devnet, see `example/0-
The binary includes a helper subcommand to generate a node key and corresponding PeerId:

```bash
./build/src/executable/qlean key generate-node-key
./build/out/qlean key generate-node-key
```

This prints two lines:
Expand Down
9 changes: 3 additions & 6 deletions example/0-single/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ sed -i '' "s/GENESIS_TIME: .*/GENESIS_TIME: $future_time/" example/0-single/gene
Example CLI command:

```bash
./build/src/executable/qlean \
--modules-dir ./build/src/modules \
./build/out/qlean \
--bootnodes example/0-single/genesis/nodes.yaml \
--validator-registry-path example/0-single/genesis/validators.yaml \
--node-id node_0 \
Expand All @@ -35,8 +34,6 @@ Example CLI command:

## What each flag means

- `--modules-dir ./build/src/modules`
- Where the node looks for loadable modules built by this repository. The default build places them under `./build/src/modules`.
- `--bootnodes example/0-single/genesis/nodes.yaml`
- A YAML file with a list of peers (ENRs or multiaddrs) used for initial connectivity.
- `--validator-registry-path example/0-single/genesis/validators.yaml`
Expand All @@ -49,12 +46,12 @@ Example CLI command:
- Hex-encoded libp2p private key. Using a fixed key gives a stable PeerId across restarts. You can generate one with:

```bash
./build/src/executable/qlean key generate-node-key
./build/out/qlean key generate-node-key
```
- `--listen-addr /ip4/0.0.0.0/udp/9000/quic-v1`
- libp2p multiaddress to bind the QUIC transport. Adjust the port if `9000` is taken, or bind to `127.0.0.1` if you want local-only access.

## Tips

- If the binary cannot find modules, double-check you built the project and the `--modules-dir` path is correct.
- If the binary cannot find modules, double-check you built the project.
- You can run multiple nodes by copying this command and changing `--node-id`, `--node-key`, ports in `--listen-addr`, and using appropriate bootnodes.
12 changes: 4 additions & 8 deletions example/1-network/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ Open four terminals (or run in background) and launch each node with its own key
Node 0:

```bash
./build/src/executable/qlean \
--modules-dir ./build/src/modules \
./build/out/qlean \
--base-path data/node_0 \
--bootnodes example/1-network/genesis/nodes.yaml \
--genesis example/1-network/genesis/config.yaml \
Expand All @@ -47,8 +46,7 @@ Node 0:
Node 1:

```bash
./build/src/executable/qlean \
--modules-dir ./build/src/modules \
./build/out/qlean \
--base-path data/node_1 \
--bootnodes example/1-network/genesis/nodes.yaml \
--genesis example/1-network/genesis/config.yaml \
Expand All @@ -65,8 +63,7 @@ Node 1:
Node 2:

```bash
./build/src/executable/qlean \
--modules-dir ./build/src/modules \
./build/out/qlean \
--base-path data/node_2 \
--bootnodes example/1-network/genesis/nodes.yaml \
--genesis example/1-network/genesis/config.yaml \
Expand All @@ -83,8 +80,7 @@ Node 2:
Node 3:

```bash
./build/src/executable/qlean \
--modules-dir ./build/src/modules \
./build/out/qlean \
--base-path data/node_3 \
--bootnodes example/1-network/genesis/nodes.yaml \
--genesis example/1-network/genesis/config.yaml \
Expand Down
30 changes: 30 additions & 0 deletions scripts/build_version_cpp.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/sh -eu
#
# Copyright Quadrivium LLC
# All Rights Reserved
# SPDX-License-Identifier: Apache-2.0
#

path="$1"
script_dir=$(dirname "$0")
if [ -e "$path" ]; then
actual="$(cat "$path")"
else
actual=""
fi
version=$("$script_dir/get_version.sh")
expected=$(cat <<EOF
// Auto-generated file
#include <string>

namespace lean {
const std::string &buildVersion() {
static const std::string buildVersion("$version");
return buildVersion;
}
} // namespace lean
EOF
)
if [ "$actual" != "$expected" ]; then
echo "$expected" > "$path"
fi
15 changes: 3 additions & 12 deletions scripts/gen_shadow_yaml.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
# -u UDP_BASE Base UDP port for --listen-addr (default: 9000)
# -p PROM_BASE Base Prometheus port (default: 9100)
# -i IP_BASE_LAST_OCTET Base last octet for IPs starting at 10.0.0.X (default: 10)
# -x QLEAN_PATH Path to qlean executable (default: <repo_root>/build/src/executable/qlean)
# -m MODULES_DIR Path to modules dir (default: <repo_root>/build/src/modules)
# -x QLEAN_PATH Path to qlean executable (default: <repo_root>/build/out/qlean)
# -r PROJECT_ROOT Project root to use for defaults (default: parent dir of this script)
# -G GRAPH_FILE Path to GML graph file (default: atlas_v201801.shadow_v2.gml.xz)
# -b MAX_BOOTNODES Max bootnodes to pass to each node (short for --max-bootnodes)
Expand Down Expand Up @@ -39,10 +38,8 @@ IP_BASE_LAST_OCTET=10
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT_DEFAULT="$(cd "$SCRIPT_DIR/.." && pwd)"
PROJECT_ROOT="$PROJECT_ROOT_DEFAULT"
QLEAN_PATH_DEFAULT="$PROJECT_ROOT/build/src/executable/qlean"
MODULES_DIR_DEFAULT="$PROJECT_ROOT/build/src/modules"
QLEAN_PATH_DEFAULT="$PROJECT_ROOT/build/out/qlean"
QLEAN_PATH="$QLEAN_PATH_DEFAULT"
MODULES_DIR="$MODULES_DIR_DEFAULT"
GENESIS_DIR=""
GRAPH_FILE="atlas_v201801.shadow_v2.gml.xz"
USE_INLINE_GRAPH=false
Expand All @@ -63,8 +60,7 @@ while getopts ":g:o:t:u:p:i:x:m:r:G:b:h-:" opt; do
p) PROM_BASE="$OPTARG" ;;
i) IP_BASE_LAST_OCTET="$OPTARG" ;;
x) QLEAN_PATH="$OPTARG" ;;
m) MODULES_DIR="$OPTARG" ;;
r) PROJECT_ROOT="$OPTARG" ; QLEAN_PATH_DEFAULT="$PROJECT_ROOT/build/src/executable/qlean"; MODULES_DIR_DEFAULT="$PROJECT_ROOT/build/src/modules" ;;
r) PROJECT_ROOT="$OPTARG" ; QLEAN_PATH_DEFAULT="$PROJECT_ROOT/build/out/qlean" ;;
G) GRAPH_FILE="$OPTARG" ;;
b) MAX_BOOTNODES="$OPTARG" ;;
h) print_usage; exit 0 ;;
Expand All @@ -89,9 +85,6 @@ if [[ "$QLEAN_PATH" == "$QLEAN_PATH_DEFAULT" && ! -x "$QLEAN_PATH_DEFAULT" ]]; t
# Keep default even if not built yet; just warn
echo "Warning: qlean not found at $QLEAN_PATH_DEFAULT; ensure you build it or pass -x" >&2
fi
if [[ "$MODULES_DIR" == "$MODULES_DIR_DEFAULT" && ! -d "$MODULES_DIR_DEFAULT" ]]; then
echo "Warning: modules dir not found at $MODULES_DIR_DEFAULT; ensure you build modules or pass -m" >&2
fi

# Validate genesis dir
if [[ -z "$GENESIS_DIR" ]]; then
Expand All @@ -115,7 +108,6 @@ PY
GENESIS_DIR_ABS="$(py_abspath "$GENESIS_DIR")"
PROJECT_ROOT_ABS="$(py_abspath "$PROJECT_ROOT")"
QLEAN_PATH_ABS="$(py_abspath "$QLEAN_PATH")"
MODULES_DIR_ABS="$(py_abspath "$MODULES_DIR")"
OUTPUT_YAML_ABS="$(py_abspath "$(dirname "$OUTPUT_YAML")")/$(basename "$OUTPUT_YAML")"
GRAPH_FILE_ABS="$(py_abspath "$GRAPH_FILE")"

Expand Down Expand Up @@ -312,7 +304,6 @@ mkdir -p "$(dirname "$OUTPUT_YAML_ABS")"
# Build args string
args_str=(
"--base-path" "$PROJECT_ROOT_ABS/data/node_${i}"
"--modules-dir" "$MODULES_DIR_ABS"
"--bootnodes" "$NODES_YAML"
"--genesis" "$CONFIG_YAML"
"--validator-registry-path" "$VALIDATORS_YAML"
Expand Down
Loading
Loading