From 656e67ff0380dc92669d88bbd7deb9b199336fd8 Mon Sep 17 00:00:00 2001 From: prathamesh0 Date: Mon, 14 Aug 2023 11:22:21 +0530 Subject: [PATCH 1/4] Use ip utility to get the required miner node multiaddr --- app/data/config/fixturenet-lotus/setup-miner.sh | 3 +-- app/data/container-build/cerc-lotus/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/data/config/fixturenet-lotus/setup-miner.sh b/app/data/config/fixturenet-lotus/setup-miner.sh index 6c065b52..8b0a22d6 100644 --- a/app/data/config/fixturenet-lotus/setup-miner.sh +++ b/app/data/config/fixturenet-lotus/setup-miner.sh @@ -33,8 +33,7 @@ echo "Daemon started." cp /devgen.car /root/.lotus-shared # publish bootnode peer info to shared volume -# TODO: Improve exporting public address to shared volume -lotus net listen | awk 'NR==4{print}' > /root/.lotus-shared/miner.addr +lotus net listen | grep "$(ip addr | grep inet | grep -v '127.0.0.1' | sort | head -1 | awk '{print $2}' | cut -d '/' -f1)" | head -1 > /root/.lotus-shared/miner.addr # if miner not already initialized if [ ! -d $LOTUS_MINER_PATH ]; then diff --git a/app/data/container-build/cerc-lotus/Dockerfile b/app/data/container-build/cerc-lotus/Dockerfile index 0d43077a..01e252b2 100644 --- a/app/data/container-build/cerc-lotus/Dockerfile +++ b/app/data/container-build/cerc-lotus/Dockerfile @@ -99,7 +99,7 @@ CMD ["-help"] FROM lotus-base AS lotus-all-in-one # Install netcat for healthcheck -RUN apt-get update && apt-get install -y netcat +RUN apt-get update && apt-get install -y netcat && apt-get install -y iproute2 ENV FILECOIN_PARAMETER_CACHE /var/tmp/filecoin-proof-parameters ENV LOTUS_MINER_PATH /var/lib/lotus-miner -- 2.45.2 From 55a72bb4c9d25e1a119129e2e4c245e38f833a74 Mon Sep 17 00:00:00 2001 From: prathamesh0 Date: Mon, 14 Aug 2023 11:26:25 +0530 Subject: [PATCH 2/4] Persist lotus node data to support restarts --- .../docker-compose-fixturenet-lotus.yml | 6 +++++ .../config/fixturenet-lotus/lotus-env.env | 4 ++-- .../config/fixturenet-lotus/setup-miner.sh | 19 +++++++-------- .../config/fixturenet-lotus/setup-node.sh | 23 ++++++++----------- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/app/data/compose/docker-compose-fixturenet-lotus.yml b/app/data/compose/docker-compose-fixturenet-lotus.yml index a1d2d290..ff54e897 100644 --- a/app/data/compose/docker-compose-fixturenet-lotus.yml +++ b/app/data/compose/docker-compose-fixturenet-lotus.yml @@ -11,6 +11,7 @@ services: - ../config/fixturenet-lotus/fund-account.sh:/fund-account.sh - lotus_miner_params:/var/tmp/filecoin-proof-parameters - lotus-shared:/root/.lotus-shared + - lotus_miner_data:/root/data entrypoint: ["sh", "/docker-entrypoint-scripts.d/setup-miner.sh"] ports: - "1234" @@ -30,6 +31,7 @@ services: - ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh - lotus_node_1_params:/var/tmp/filecoin-proof-parameters - lotus-shared:/root/.lotus-shared + - lotus_node_1_data:/root/data healthcheck: test: ["CMD", "nc", "-vz", "localhost", "1234"] interval: 30s @@ -57,6 +59,7 @@ services: - ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh - lotus_node_2_params:/var/tmp/filecoin-proof-parameters - lotus-shared:/root/.lotus-shared + - lotus_node_2_data:/root/data healthcheck: test: ["CMD", "nc", "-vz", "localhost", "1234"] interval: 30s @@ -77,3 +80,6 @@ volumes: lotus_node_1_params: lotus_node_2_params: lotus-shared: + lotus_miner_data: + lotus_node_1_data: + lotus_node_2_data: diff --git a/app/data/config/fixturenet-lotus/lotus-env.env b/app/data/config/fixturenet-lotus/lotus-env.env index 9ffd8e85..2fffed4c 100644 --- a/app/data/config/fixturenet-lotus/lotus-env.env +++ b/app/data/config/fixturenet-lotus/lotus-env.env @@ -1,5 +1,5 @@ -LOTUS_PATH=/root/.lotus-local-net -LOTUS_MINER_PATH=/root/.lotus-miner-local-net +LOTUS_PATH=/root/data/.lotus-local-net +LOTUS_MINER_PATH=/root/data/.lotus-miner-local-net LOTUS_SKIP_GENESIS_CHECK=_yes_ LOTUS_FEVM_ENABLEETHRPC=true CGO_CFLAGS_ALLOW="-D__BLST_PORTABLE__" diff --git a/app/data/config/fixturenet-lotus/setup-miner.sh b/app/data/config/fixturenet-lotus/setup-miner.sh index 8b0a22d6..4f8c168e 100644 --- a/app/data/config/fixturenet-lotus/setup-miner.sh +++ b/app/data/config/fixturenet-lotus/setup-miner.sh @@ -15,12 +15,16 @@ else echo "Existing proof params found" fi -lotus-seed pre-seal --sector-size 2KiB --num-sectors 2 -lotus-seed genesis new localnet.json -lotus-seed genesis add-miner localnet.json ~/.genesis-sectors/pre-seal-t01000.json +# if genesis is not already setup +if [ ! -f /root/data/localnet.json ]; then + lotus-seed --sector-dir /root/data/.genesis-sectors pre-seal --sector-size 2KiB --num-sectors 2 + lotus-seed --sector-dir /root/data/ genesis new /root/data/localnet.json + lotus-seed --sector-dir /root/data/ genesis add-miner /root/data/localnet.json /root/data/.genesis-sectors/pre-seal-t01000.json +fi # start daemon -nohup lotus daemon --lotus-make-genesis=devgen.car --profile=bootstrapper --genesis-template=localnet.json --bootstrap=false > /var/log/lotus.log 2>&1 & +# /root/.lotus-shared/devgen.car path +nohup lotus daemon --lotus-make-genesis=/root/.lotus-shared/devgen.car --profile=bootstrapper --genesis-template=/root/data/localnet.json --bootstrap=false > /var/log/lotus.log 2>&1 & # Loop until the daemon is started echo "Waiting for daemon to start..." @@ -29,21 +33,18 @@ while ! grep -q "started ChainNotify channel" /var/log/lotus.log ; do done echo "Daemon started." -# copy genesis file to shared volume -cp /devgen.car /root/.lotus-shared - # publish bootnode peer info to shared volume lotus net listen | grep "$(ip addr | grep inet | grep -v '127.0.0.1' | sort | head -1 | awk '{print $2}' | cut -d '/' -f1)" | head -1 > /root/.lotus-shared/miner.addr # if miner not already initialized if [ ! -d $LOTUS_MINER_PATH ]; then # initialize miner - lotus wallet import --as-default ~/.genesis-sectors/pre-seal-t01000.key + lotus wallet import --as-default /root/data/.genesis-sectors/pre-seal-t01000.key # fund a known account for usage /fund-account.sh - lotus-miner init --genesis-miner --actor=t01000 --sector-size=2KiB --pre-sealed-sectors=~/.genesis-sectors --pre-sealed-metadata=~/.genesis-sectors/pre-seal-t01000.json --nosync + lotus-miner init --genesis-miner --actor=t01000 --sector-size=2KiB --pre-sealed-sectors=/root/data/.genesis-sectors --pre-sealed-metadata=/root/data/.genesis-sectors/pre-seal-t01000.json --nosync fi # start miner diff --git a/app/data/config/fixturenet-lotus/setup-node.sh b/app/data/config/fixturenet-lotus/setup-node.sh index dc3392fe..49511c32 100644 --- a/app/data/config/fixturenet-lotus/setup-node.sh +++ b/app/data/config/fixturenet-lotus/setup-node.sh @@ -9,20 +9,17 @@ while [ ! -f /root/.lotus-shared/miner.addr ]; do done echo "Resuming..." -# if not already initialized -if [ ! -f $LOTUS_PATH/config.toml ]; then - # init node config - mkdir $LOTUS_PATH - lotus config default > $LOTUS_PATH/config.toml +# init node config +mkdir -p $LOTUS_PATH +lotus config default > $LOTUS_PATH/config.toml - # add bootstrap peer info if available - if [ -f /root/.lotus-shared/miner.addr ]; then - MINER_ADDR=\"$(cat /root/.lotus-shared/miner.addr)\" - # add bootstrap peer id to config file - sed -i "/^\[Libp2p\]/a \ \ BootstrapPeers = [$MINER_ADDR]" $LOTUS_PATH/config.toml - else - echo "Bootstrap peer info not found, unable to configure. Manual peering will be required." - fi +# add bootstrap peer info if available +if [ -f /root/.lotus-shared/miner.addr ]; then + MINER_ADDR=\"$(cat /root/.lotus-shared/miner.addr)\" + # add bootstrap peer id to config file + sed -i "/^\[Libp2p\]/a \ \ BootstrapPeers = [$MINER_ADDR]" $LOTUS_PATH/config.toml +else + echo "Bootstrap peer info not found, unable to configure. Manual peering will be required." fi # start node -- 2.45.2 From e4ab1133fc4e19c8b83a72e6cab5a9b36ef50a09 Mon Sep 17 00:00:00 2001 From: prathamesh0 Date: Mon, 14 Aug 2023 12:20:20 +0530 Subject: [PATCH 3/4] Add clean up steps to instructions --- app/data/stacks/azimuth/README.md | 2 +- app/data/stacks/fixturenet-lotus/README.md | 19 +++++++++++++++++++ app/data/stacks/mobymask-v2/README.md | 2 +- app/data/stacks/sushiswap/README.md | 4 +++- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/data/stacks/azimuth/README.md b/app/data/stacks/azimuth/README.md index c4e1671f..67f42b75 100644 --- a/app/data/stacks/azimuth/README.md +++ b/app/data/stacks/azimuth/README.md @@ -55,7 +55,7 @@ This should create the required docker images in the local image registry. ## Clean up -Stop all the services running in background run: +Stop all the services running in background: ```bash laconic-so --stack azimuth deploy-system down diff --git a/app/data/stacks/fixturenet-lotus/README.md b/app/data/stacks/fixturenet-lotus/README.md index 2e87e1b9..7d238347 100644 --- a/app/data/stacks/fixturenet-lotus/README.md +++ b/app/data/stacks/fixturenet-lotus/README.md @@ -14,6 +14,9 @@ $ laconic-so --stack fixturenet-lotus build-containers ``` $ laconic-so --stack fixturenet-lotus deploy --cluster lotus up ``` + +Note: When running for the first time (or after clean up), the services will take some time to start properly as the Lotus nodes download the proof params (which are persisted to volumes) + Correct operation should be verified by checking the container logs with: ``` $ laconic-so --stack fixturenet-lotus deploy --cluster lotus logs lotus-miner @@ -26,3 +29,19 @@ $ laconic-so --stack fixturenet-lotus deploy --cluster lotus exec lotus-miner "l $ laconic-so --stack fixturenet-lotus deploy --cluster lotus exec lotus-node-1 "lotus status" $ laconic-so --stack fixturenet-lotus deploy --cluster lotus exec lotus-node-2 "lotus status" ``` + +## 4. Clean up + +Stop all the services running in background: +``` +$ laconic-so --stack fixturenet-lotus deploy --cluster lotus down +``` + +Clear volumes created by this stack: +``` +# List all relevant volumes +$ docker volume ls -q --filter "name=lotus" + +# Remove all the listed volumes +$ docker volume rm $(docker volume ls -q --filter "name=lotus") +``` diff --git a/app/data/stacks/mobymask-v2/README.md b/app/data/stacks/mobymask-v2/README.md index dfbabd09..f4fc12e4 100644 --- a/app/data/stacks/mobymask-v2/README.md +++ b/app/data/stacks/mobymask-v2/README.md @@ -93,7 +93,7 @@ Follow the [demo](./demo.md) to try out the MobyMask app with L2 chain ## Clean up -Stop all the services running in background run: +Stop all the services running in background: ```bash laconic-so --stack mobymask-v2 deploy --cluster mobymask_v2 down 30 diff --git a/app/data/stacks/sushiswap/README.md b/app/data/stacks/sushiswap/README.md index 50450613..9d117f03 100644 --- a/app/data/stacks/sushiswap/README.md +++ b/app/data/stacks/sushiswap/README.md @@ -22,13 +22,15 @@ Deploy the stack: laconic-so --stack sushiswap deploy --cluster sushiswap up ``` +Note: When running for the first time (or after clean up), the services will take some time to start as Lotus nodes in the fixturenet download the proof params + ## Tests Follow [smoke-tests.md](./smoke-tests.md) to run smoke tests ## Clean up -Stop all the services running in background run: +Stop all the services running in background: ```bash laconic-so --stack sushiswap deploy --cluster sushiswap down -- 2.45.2 From 914b1e9a1cb5580f9307f78d5a359e1e77f2deb9 Mon Sep 17 00:00:00 2001 From: prathamesh0 Date: Mon, 14 Aug 2023 12:37:58 +0530 Subject: [PATCH 4/4] Fix lotus-seed sector-dir arg --- app/data/config/fixturenet-lotus/setup-miner.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/data/config/fixturenet-lotus/setup-miner.sh b/app/data/config/fixturenet-lotus/setup-miner.sh index 4f8c168e..de1cc4c2 100644 --- a/app/data/config/fixturenet-lotus/setup-miner.sh +++ b/app/data/config/fixturenet-lotus/setup-miner.sh @@ -18,8 +18,8 @@ fi # if genesis is not already setup if [ ! -f /root/data/localnet.json ]; then lotus-seed --sector-dir /root/data/.genesis-sectors pre-seal --sector-size 2KiB --num-sectors 2 - lotus-seed --sector-dir /root/data/ genesis new /root/data/localnet.json - lotus-seed --sector-dir /root/data/ genesis add-miner /root/data/localnet.json /root/data/.genesis-sectors/pre-seal-t01000.json + lotus-seed --sector-dir /root/data/.genesis-sectors genesis new /root/data/localnet.json + lotus-seed --sector-dir /root/data/.genesis-sectors genesis add-miner /root/data/localnet.json /root/data/.genesis-sectors/pre-seal-t01000.json fi # start daemon -- 2.45.2