From 6c8898e6e786e0fb4cb96ead33c82409f68ebfc4 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Wed, 14 May 2025 20:19:40 +0530 Subject: [PATCH] Add playbook to generate mainnet genesis from exported testnet state --- .../first-validator/generate-genesis.yml | 31 +++++++++++++++++++ run-first-validator.md | 24 +++----------- 2 files changed, 36 insertions(+), 19 deletions(-) create mode 100644 playbooks/first-validator/generate-genesis.yml diff --git a/playbooks/first-validator/generate-genesis.yml b/playbooks/first-validator/generate-genesis.yml new file mode 100644 index 0000000..444482d --- /dev/null +++ b/playbooks/first-validator/generate-genesis.yml @@ -0,0 +1,31 @@ +--- +- name: Generate Mainnet Genesis File + hosts: localhost + connection: local + tasks: + - name: Fetch repositories + ansible.builtin.shell: + cmd: "laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/mainnet-laconicd setup-repositories --git-ssh --pull" + + - name: Build containers + ansible.builtin.shell: + cmd: "~/cerc/laconicd-stack/stack-orchestrator/laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/mainnet-laconicd build-containers" + + - name: Copy exported testnet state file + ansible.builtin.copy: + src: "{{ exported_state_path }}" + dest: "~/cerc/laconicd-stack/testnet-state.json" + remote_src: true # Set to true if exported_state_path is on the target host + + - name: Run script to generate genesis file + ansible.builtin.shell: + cmd: "~/cerc/laconicd-stack/scripts/generate-mainnet-genesis.sh ~/cerc/laconicd-stack/testnet-state.json" + + - name: Remove temporary copied state file + ansible.builtin.file: + path: "~/cerc/laconicd-stack/testnet-state.json" + state: absent + + - name: Display genesis file location + ansible.builtin.debug: + msg: "Mainnet genesis file generated at output/genesis.json" diff --git a/run-first-validator.md b/run-first-validator.md index 53f7b43..1820b36 100644 --- a/run-first-validator.md +++ b/run-first-validator.md @@ -22,34 +22,20 @@ - The file will be generated in `/export/testnet-state.json` - - - If mainnet node will be setup in new machine, fetch the stack again -- Build container image - ```bash - # Fetch laconicd repo specified in stack - laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/mainnet-laconicd setup-repositories --git-ssh --pull - - # Build image - laconic-so --stack ~/cerc/laconicd-stack/stack-orchestrator/stacks/mainnet-laconicd build-containers + laconic-so fetch-stack git.vdb.to/cerc-io/laconicd-stack --git-ssh --pull ``` -- Copy the generated exported state from earlier +- Copy over the exported `testnet-state.json` file to target machine + +- Run playbook to use exported state for generating mainnet genesis ```bash - cp ~/cerc/laconicd-stack/testnet-state.json + ansible-playbook -i localhost, -c local ~/cerc/laconicd-stack/playbooks/first-validator/generate-genesis.yml -e "exported_state_path=" ``` -- Run script to generate genesis file using the exported state - - ```bash - ~/cerc/laconicd-stack/scripts/generate-mainnet-genesis.sh ~/cerc/laconicd-stack/testnet-state.json - ``` - - - Genesis file will generated in `output/genesis.json` - ## Run node - Update [run-first-validator-vars.yml](playbooks/first-validator/run-first-validator-vars.yml) with required values: