# Halt stage1 and start stage2 ## Login * Log in as `dev` user on the deployments VM * All the deployments are placed in the `/srv` directory: ```bash cd /srv ``` ## Halt stage1 * Confirm the the currently running node is for stage1 chain: ```bash # On stage1 deployment machine STAGE1_DEPLOYMENT=/srv/laconicd/testnet-laconicd-deployment laconic-so deployment --dir $STAGE1_DEPLOYMENT logs laconicd -f --tail 30 # Note: stage1 node on deployments VM has been changed to run from /srv/laconicd/testnet-laconicd-deployment instead of /srv/laconicd/stage1-deployment ``` * Stop the stage1 deployment: ```bash laconic-so deployment --dir $STAGE1_DEPLOYMENT stop # Stopping this deployment marks the end of testnet stage1 ``` ## Export stage1 state * Export the chain state: ```bash docker run -it \ -v $STAGE1_DEPLOYMENT/data/laconicd-data:/root/.laconicd \ cerc/laconicd-stage1:local bash -c "laconicd export | jq > /root/.laconicd/stage1-state.json" ``` * Archive the state and node config and keys: ```bash sudo tar -czf /srv/laconicd/stage1-laconicd-export.tar.gz --exclude="./data" --exclude="./tmp" -C $STAGE1_DEPLOYMENT/data/laconicd-data . sudo chown dev:dev /srv/laconicd/stage1-laconicd-export.tar.gz ``` ## Initialize stage2 * Copy over the stage1 state and node export archive to stage2 deployment machine * Extract the stage1 state and node config to stage2 deployment dir: ```bash # On stage2 deployment machine cd /srv/laconicd # Unarchive tar -xzf stage1-laconicd-export.tar.gz -C stage2-deployment/data/laconicd-data # Verify contents ll stage2-deployment/data/laconicd-data ``` * Initialize stage2 chain: ```bash DEPLOYMENT_DIR=$(pwd) cd ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd STAGE2_CHAIN_ID=laconic-testnet-2 ./scripts/initialize-stage2.sh $DEPLOYMENT_DIR/stage2-deployment $STAGE2_CHAIN_ID LaconicStage2 os 1000000000000000 # Enter the keyring passphrase for account from stage1 when prompted cd $DEPLOYMENT_DIR ``` * Resets the node data (`unsafe-reset-all`) * Initializes the `stage2-deployment` node * Generates the genesis file for stage2 with stage1 state * Carries over accounts, balances and laconicd modules from stage1 * Skips staking and validator data * Copy over the genesis file outside data directory: ```bash cp stage2-deployment/data/laconicd-data/config/genesis.json stage2-deployment ``` ## Start stage2 * Start the stage2 deployment: ```bash laconic-so deployment --dir stage2-deployment start ``` * Check status of stage2 laconicd: ```bash # List down the container and check health status docker ps -a | grep laconicd # Follow logs for laconicd container, check that new blocks are getting created laconic-so deployment --dir stage2-deployment logs laconicd -f ``` * Get the node's peer adddress and stage2 genesis file to share with the participants: * Get the node id: ```bash echo $(laconic-so deployment --dir stage2-deployment exec laconicd "laconicd cometbft show-node-id")@laconicd-sapo.laconic.com:36656 ``` * Get the genesis file: ```bash scp dev@:/srv/laconicd/stage2-deployment/genesis.json ``` * Now users can follow the steps to [Upgrade to SAPO testnet](../testnet-onboarding-validator.md#upgrade-to-sapo-testnet) ## Bank Transfer * Transfer tokens to an address: ```bash cd /srv/laconicd RECEIVER_ADDRESS= AMOUNT= laconic-so deployment --dir stage2-deployment exec laconicd "laconicd tx bank send alice ${RECEIVER_ADDRESS} ${AMOUNT}alnt --from alice --fees 1000alnt" ``` * Check balance: ```bash laconic-so deployment --dir stage2-deployment exec laconicd "laconicd query bank balances ${RECEIVER_ADDRESS}" ```