2024-08-09 10:18:11 +00:00
# Halt stage0 and start stage1
Once all the participants have completed their onboarding, stage0 laconicd chain can be halted and stage1 chain can be initialized and started
2024-08-16 14:52:45 +00:00
## Prerequisite
* A CSV having the subscribers (`subscribers.csv`) placed at `/srv/laconicd/csvs`
2024-08-09 10:18:11 +00:00
## Login
* Log in as `dev` user on the deployments VM
* All the deployments are placed in the `/srv` directory:
```bash
cd /srv
```
2024-08-16 14:52:45 +00:00
## Map subscribers to participants
2024-08-09 10:18:11 +00:00
2024-08-16 14:52:45 +00:00
* Fetch updated scripts in testnet-laconicd-stack:
2024-08-09 10:18:11 +00:00
```bash
2024-08-16 14:52:45 +00:00
laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack --pull
2024-08-09 10:18:11 +00:00
```
* List the participants on stage0:
```bash
2024-08-16 14:52:45 +00:00
cd /src/laconicd
2024-08-09 10:18:11 +00:00
laconic-so deployment --dir stage0-deployment exec laconicd "laconicd query onboarding list"
```
2024-08-16 14:52:45 +00:00
* Create a CSV with subscribers who have onboarded as participants:
NOTE: The following script can be run locally (as it will use < https: / / laconicd . laconic . com > endpoint by default)
* Clone this repo
```bash
git clone git@git.vdb.to:cerc-io/testnet-laconicd-stack.git
```
* Build
```bash
# Change to scripts dir
cd testnet-laconicd-stack/scripts
# Install dependencies and build
yarn & & yarn build
```
* Run script
```bash
# subscribers.csv is the CSV from beehiv
yarn map-subscribers-to-participants --subscribers-csv /path/to/subscribers.csv --output subscribed-participants.csv
# This should create the CSV file at subscribed-participants.csv
# The participants in CSV can be filtered further
```
* Copy over the file to deployments VM
```bash
scp ./subscribed-participants.csv dev@< deployments-server-hostname > :/srv/laconicd/csvs/subscribed-participants.csv
```
## Halt stage0
* Confirm the the currently running node is for stage0 chain:
```bash
cd /srv/laconicd
laconic-so deployment --dir stage0-deployment logs laconicd -f --tail 30
```
2024-08-09 10:18:11 +00:00
* Stop the stage0 deployment:
```bash
laconic-so deployment --dir stage0-deployment stop
```
## Start stage1
2024-08-16 14:52:45 +00:00
* Fetch updated scripts in fixturenet-laconicd-stack:
```bash
laconic-so fetch-stack git.vdb.to/cerc-io/fixturenet-laconicd-stack --pull
```
* Rebuild laconicd container with `>=v0.1.7` to enable `slashing` module:
```bash
# laconicd source
cd ~/cerc/laconicd
# Pull latest changes
git pull
# Confirm the latest commit hash
git log
# Rebuild the containers
cd /srv/laconicd
laconic-so --stack ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd build-containers --force-rebuild
```
* Use the scripts in fixturenet-laconicd-stack to generate genesis file for stage1 using CSV with subscribed participants with token allocations:
2024-08-09 10:18:11 +00:00
```bash
cd /srv/laconicd
# Set current working dir path in a variable
DEPLOYMENTS_DIR=$(pwd)
cd ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd
# Generate the genesis file
# Participant allocation: 1000000000000 (10^12)
# Validator allocation: 2000000000000000 (10^15)
2024-08-16 14:52:45 +00:00
# These amounts are used only if funding amount is not present in the input CSV
./scripts/generate-stage1-genesis-from-csv.sh /srv/laconicd/csvs/subscribed-participants.csv 1000000000000 2000000000000000
# If you see the error "Error: genesis.json file already exists: /root/.laconicd/config/genesis.json",
# remove the temporary data directory and try again
sudo rm -rf stage1-genesis
2024-08-09 10:18:11 +00:00
# Expected output:
# Genesis file for stage1 written to output/genesis.json
# Remove the temporary data directory
sudo rm -rf stage1-genesis
# Go back to the directory where deployments are created
cd $DEPLOYMENTS_DIR
```
* Copy over the generated genesis file (`.json`) containing the onboarding module state with funded participants to data directory in stage1 deployment (`stage1-deployment/data/genesis-config`):
```bash
cd /srv/laconicd
cp ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd/output/genesis.json stage1-deployment/data/genesis-config/genesis.json
```
* Start the stage1 deployment:
```bash
laconic-so deployment --dir stage1-deployment start
```
* Check status of stage1 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 stage1-deployment logs laconicd -f
```
* Query the list of registered participants in stage1 laconicd:
```bash
laconic-so deployment --dir stage1-deployment exec laconicd "laconicd query onboarding list"
# Confirm that all onboarded participants on stage0 appear in the list
```
* Get the node's peer adddress and stage1 genesis file to share with the participants:
* Get the node id:
```bash
echo $(laconic-so deployment --dir stage1-deployment exec laconicd "laconicd cometbft show-node-id")@laconicd.laconic.com:26656
```
* Get the genesis file:
```bash
scp dev@< deployments-server-hostname > :/srv/laconicd/stage1-deployment/data/laconicd-data/config/genesis.json < /path/to/local/directory>
```
* Now users can follow the steps to [Join as a validator on stage1 ](https://git.vdb.to/cerc-io/testnet-laconicd-stack/src/branch/main/testnet-onboarding-validator.md#join-as-a-validator-on-stage1 )