Persist lotus node data to support restarts

This commit is contained in:
Prathamesh Musale 2023-08-14 11:26:25 +05:30
parent 656e67ff03
commit 55a72bb4c9
4 changed files with 28 additions and 24 deletions

View File

@ -11,6 +11,7 @@ services:
- ../config/fixturenet-lotus/fund-account.sh:/fund-account.sh - ../config/fixturenet-lotus/fund-account.sh:/fund-account.sh
- lotus_miner_params:/var/tmp/filecoin-proof-parameters - lotus_miner_params:/var/tmp/filecoin-proof-parameters
- lotus-shared:/root/.lotus-shared - lotus-shared:/root/.lotus-shared
- lotus_miner_data:/root/data
entrypoint: ["sh", "/docker-entrypoint-scripts.d/setup-miner.sh"] entrypoint: ["sh", "/docker-entrypoint-scripts.d/setup-miner.sh"]
ports: ports:
- "1234" - "1234"
@ -30,6 +31,7 @@ services:
- ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh - ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh
- lotus_node_1_params:/var/tmp/filecoin-proof-parameters - lotus_node_1_params:/var/tmp/filecoin-proof-parameters
- lotus-shared:/root/.lotus-shared - lotus-shared:/root/.lotus-shared
- lotus_node_1_data:/root/data
healthcheck: healthcheck:
test: ["CMD", "nc", "-vz", "localhost", "1234"] test: ["CMD", "nc", "-vz", "localhost", "1234"]
interval: 30s interval: 30s
@ -57,6 +59,7 @@ services:
- ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh - ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh
- lotus_node_2_params:/var/tmp/filecoin-proof-parameters - lotus_node_2_params:/var/tmp/filecoin-proof-parameters
- lotus-shared:/root/.lotus-shared - lotus-shared:/root/.lotus-shared
- lotus_node_2_data:/root/data
healthcheck: healthcheck:
test: ["CMD", "nc", "-vz", "localhost", "1234"] test: ["CMD", "nc", "-vz", "localhost", "1234"]
interval: 30s interval: 30s
@ -77,3 +80,6 @@ volumes:
lotus_node_1_params: lotus_node_1_params:
lotus_node_2_params: lotus_node_2_params:
lotus-shared: lotus-shared:
lotus_miner_data:
lotus_node_1_data:
lotus_node_2_data:

View File

@ -1,5 +1,5 @@
LOTUS_PATH=/root/.lotus-local-net LOTUS_PATH=/root/data/.lotus-local-net
LOTUS_MINER_PATH=/root/.lotus-miner-local-net LOTUS_MINER_PATH=/root/data/.lotus-miner-local-net
LOTUS_SKIP_GENESIS_CHECK=_yes_ LOTUS_SKIP_GENESIS_CHECK=_yes_
LOTUS_FEVM_ENABLEETHRPC=true LOTUS_FEVM_ENABLEETHRPC=true
CGO_CFLAGS_ALLOW="-D__BLST_PORTABLE__" CGO_CFLAGS_ALLOW="-D__BLST_PORTABLE__"

View File

@ -15,12 +15,16 @@ else
echo "Existing proof params found" echo "Existing proof params found"
fi fi
lotus-seed pre-seal --sector-size 2KiB --num-sectors 2 # if genesis is not already setup
lotus-seed genesis new localnet.json if [ ! -f /root/data/localnet.json ]; then
lotus-seed genesis add-miner localnet.json ~/.genesis-sectors/pre-seal-t01000.json 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 # 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 # Loop until the daemon is started
echo "Waiting for daemon to start..." echo "Waiting for daemon to start..."
@ -29,21 +33,18 @@ while ! grep -q "started ChainNotify channel" /var/log/lotus.log ; do
done done
echo "Daemon started." echo "Daemon started."
# copy genesis file to shared volume
cp /devgen.car /root/.lotus-shared
# publish bootnode peer info to shared volume # 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 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 miner not already initialized
if [ ! -d $LOTUS_MINER_PATH ]; then if [ ! -d $LOTUS_MINER_PATH ]; then
# initialize miner # 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 a known account for usage
/fund-account.sh /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 fi
# start miner # start miner

View File

@ -9,20 +9,17 @@ while [ ! -f /root/.lotus-shared/miner.addr ]; do
done done
echo "Resuming..." echo "Resuming..."
# if not already initialized # init node config
if [ ! -f $LOTUS_PATH/config.toml ]; then mkdir -p $LOTUS_PATH
# init node config lotus config default > $LOTUS_PATH/config.toml
mkdir $LOTUS_PATH
lotus config default > $LOTUS_PATH/config.toml
# add bootstrap peer info if available # add bootstrap peer info if available
if [ -f /root/.lotus-shared/miner.addr ]; then if [ -f /root/.lotus-shared/miner.addr ]; then
MINER_ADDR=\"$(cat /root/.lotus-shared/miner.addr)\" MINER_ADDR=\"$(cat /root/.lotus-shared/miner.addr)\"
# add bootstrap peer id to config file # add bootstrap peer id to config file
sed -i "/^\[Libp2p\]/a \ \ BootstrapPeers = [$MINER_ADDR]" $LOTUS_PATH/config.toml sed -i "/^\[Libp2p\]/a \ \ BootstrapPeers = [$MINER_ADDR]" $LOTUS_PATH/config.toml
else else
echo "Bootstrap peer info not found, unable to configure. Manual peering will be required." echo "Bootstrap peer info not found, unable to configure. Manual peering will be required."
fi
fi fi
# start node # start node