From 55eec601fd54de86e540f5bbfadf608dfc610dab Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Mon, 26 May 2025 18:42:55 +0530 Subject: [PATCH 01/21] Add playbook for running cosmos multisig app --- .../cosmos-multisig-app-start.yml | 58 +++++++++++++++++++ .../cosmos-multisig-vars.example.yml | 13 +++++ .../cosmos-multisig-app-spec-template.yml.j2 | 12 ++++ 3 files changed, 83 insertions(+) create mode 100644 playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml create mode 100644 playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml create mode 100644 playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml new file mode 100644 index 0000000..6c85a5d --- /dev/null +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml @@ -0,0 +1,58 @@ +--- +- name: Setup and deploy the cosmos multisig app + hosts: localhost + vars_files: + - cosmos-multisig-vars.yml + vars: + data_directory: "{{ lookup('env', 'DATA_DIRECTORY') }}" + multisig_deployment_dir: "{{ lookup('env', 'MULTISIG_DEPLOYMENT_DIR') }}" + spec_output: "{{data_directory}}/cosmos-multisig-ui-spec.yml" + spec_template: "./templates/specs/cosmos-multisig-app-spec-template.yml.j2" + tasks: + - name: Fail if DATA_DIRECTORY env var is not set + fail: + msg: "Environment variable DATA_DIRECTORY is not set. Please export it before running the playbook." + when: lookup('env', 'DATA_DIRECTORY') == '' + + - name: Clone zenith-stack repo + shell: | + laconic-so fetch-stack git.vdb.to/cerc-io/cosmos-multisig-ui@iv-default-laconic --git-ssh --pull + + - name: Build container image + shell: | + laconic-so --stack ~/cerc/cosmos-multisig-ui/stack-orchestrator/stacks/cosmos-multisig-ui build-containers + + - name: Create deployment spec file + shell: | + laconic-so --stack ~/cerc/cosmos-multisig-ui/stack-orchestrator/stacks/cosmos-multisig-ui deploy init --output {{ spec_output }} + + - name: Replace network section in spec_output + shell: > + yq eval '(.network) = load("{{ spec_template }}").network' -i {{ spec_output }} + + - name: Create deployment from spec file + shell: | + laconic-so --stack ~/cerc/cosmos-multisig-ui/stack-orchestrator/stacks/cosmos-multisig-ui/ deploy create --spec-file {{ spec_output }} --deployment-dir {{ multisig_deployment_dir }} + + - name: Create config.env in deployment dir + copy: + dest: "{{ multisig_deployment_dir }}/config.env" + content: | + NEXT_PUBLIC_MULTICHAIN={{ next_public_multichain }} + NEXT_PUBLIC_REGISTRY_NAME={{ next_public_registry_name }} + NEXT_PUBLIC_LOGO={{ next_public_logo }} + NEXT_PUBLIC_CHAIN_ID={{ next_public_chain_id }} + NEXT_PUBLIC_CHAIN_DISPLAY_NAME={{ next_public_chain_display_name }} + NEXT_PUBLIC_NODE_ADDRESSES={{ next_public_node_addresses }} + NEXT_PUBLIC_DENOM={{ next_public_denom }} + NEXT_PUBLIC_DISPLAY_DENOM={{ next_public_display_denom }} + NEXT_PUBLIC_DISPLAY_DENOM_EXPONENT={{ next_public_display_denom_exponent }} + NEXT_PUBLIC_ASSETS={{ next_public_assets }} + NEXT_PUBLIC_GAS_PRICE={{ next_public_gas_price }} + NEXT_PUBLIC_ADDRESS_PREFIX={{ next_public_address_prefix }} + NEXT_PUBLIC_IS_HTTP_ENABLED={{ next_public_is_http_enabled }} + mode: '0644' + + - name: Start the deployment + shell: | + laconic-so deployment --dir {{ multisig_deployment_dir }} start diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml new file mode 100644 index 0000000..c5d2ed6 --- /dev/null +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml @@ -0,0 +1,13 @@ +next_public_multichain: +next_public_registry_name: +next_public_logo: +next_public_chain_id: +next_public_chain_display_name: +next_public_node_addresses: +next_public_denom: +next_public_display_denom: +next_public_display_denom_exponent: +next_public_assets: +next_public_gas_price: +next_public_address_prefix: +next_public_is_http_enabled: diff --git a/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 b/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 new file mode 100644 index 0000000..c8aaef9 --- /dev/null +++ b/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 @@ -0,0 +1,12 @@ +network: + ports: + cosmos-multisig-ui: + - 3000:3000 + zero: + - 5080 + - 6080 + alpha: + - 8080:8080 + - 9080 + ratel: + - 8000 -- 2.45.2 From da8b3855e86879a340ccd3fc91d5e35c7f4932f1 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Mon, 26 May 2025 19:15:29 +0530 Subject: [PATCH 02/21] Update README with steps to run multisig app --- docs/demo.md | 32 +++++++++++++++++++ .../cosmos-multisig-app-start.yml | 2 +- .../cosmos-multisig-app-spec-template.yml.j2 | 6 ---- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/docs/demo.md b/docs/demo.md index d38e1d3..ff5e4a0 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -379,6 +379,38 @@ rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json ``` +- Set envs: + + ```bash + # Set multisig app deployment directory + export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment + ``` + +- Copy the example variables file: + + ```bash + cp ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.yml + ``` + + - Update env values in `cosmos-multisig-vars.yml` + +- Update port mappings in `~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2` to avoid port conflicts: + + ```bash + network: + ports: + cosmos-multisig-ui: + - 3000:3000 + alpha: + - 8080:8080 + ``` + +- Run playbook to setup cosmos multisig app + + ```bash + ansible-playbook -v -i localhost, -c local ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml + ``` + ## Cleanup - Remove deployments and other config files diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml index 6c85a5d..77834d2 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml @@ -16,7 +16,7 @@ - name: Clone zenith-stack repo shell: | - laconic-so fetch-stack git.vdb.to/cerc-io/cosmos-multisig-ui@iv-default-laconic --git-ssh --pull + laconic-so fetch-stack git.vdb.to/cerc-io/cosmos-multisig-ui@v0.1.0 --git-ssh --pull - name: Build container image shell: | diff --git a/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 b/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 index c8aaef9..e3a4c9a 100644 --- a/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 +++ b/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2 @@ -2,11 +2,5 @@ network: ports: cosmos-multisig-ui: - 3000:3000 - zero: - - 5080 - - 6080 alpha: - 8080:8080 - - 9080 - ratel: - - 8000 -- 2.45.2 From 995ab4856e15fd528d8c83527c439d840207b405 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Mon, 26 May 2025 19:21:23 +0530 Subject: [PATCH 03/21] Add example values for env --- docs/demo.md | 18 ++++++++++++- .../cosmos-multisig-vars.example.yml | 26 +++++++++---------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/docs/demo.md b/docs/demo.md index ff5e4a0..352b81a 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -394,7 +394,23 @@ - Update env values in `cosmos-multisig-vars.yml` -- Update port mappings in `~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2` to avoid port conflicts: + ```bash + next_public_multichain: false + next_public_registry_name: "laconic" + next_public_logo: "" + next_public_chain_id: "laconic_9000-1" + next_public_chain_display_name: "Laconic Network" + next_public_node_addresses: '["http://localhost:26657"]' + next_public_denom: "alnt" + next_public_display_denom: "ALNT" + next_public_display_denom_exponent: 18 + next_public_assets: '[{"denom_units":[{"denom":"alnt","exponent":0},{"denom":"alnt","exponent":6}],"base":"alnt","name":"Laconic Token","display":"ALNT","symbol":"alnt"}]' + next_public_gas_price: "0.01alnt" + next_public_address_prefix: "laconic" + next_public_is_http_enabled: true + ``` + +- Update port mappings in `~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2`: ```bash network: diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml index c5d2ed6..47885b5 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml @@ -1,13 +1,13 @@ -next_public_multichain: -next_public_registry_name: -next_public_logo: -next_public_chain_id: -next_public_chain_display_name: -next_public_node_addresses: -next_public_denom: -next_public_display_denom: -next_public_display_denom_exponent: -next_public_assets: -next_public_gas_price: -next_public_address_prefix: -next_public_is_http_enabled: +next_public_multichain: false +next_public_registry_name: "laconic" +next_public_logo: "" +next_public_chain_id: "laconic_9000-1" +next_public_chain_display_name: "Laconic Network" +next_public_node_addresses: '["http://localhost:26657"]' +next_public_denom: "alnt" +next_public_display_denom: "ALNT" +next_public_display_denom_exponent: 18 +next_public_assets: '[{"denom_units":[{"denom":"alnt","exponent":0},{"denom":"alnt","exponent":6}],"base":"alnt","name":"Laconic Token","display":"ALNT","symbol":"alnt"}]' +next_public_gas_price: "0.01alnt" +next_public_address_prefix: "laconic" +next_public_is_http_enabled: true -- 2.45.2 From 02da5f309d618edae0d22b09e784427806c5f797 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 12:52:12 +0530 Subject: [PATCH 04/21] Add steps to create multisig and sign transaction --- docs/demo.md | 74 ++++++++++++++++++- .../cosmos-multisig-app-start.yml | 2 +- .../cosmos-multisig-vars.example.yml | 2 +- 3 files changed, 74 insertions(+), 4 deletions(-) diff --git a/docs/demo.md b/docs/demo.md index 352b81a..b4c60c9 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -188,6 +188,8 @@ laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f ``` + - The chain will start running after some time. + - Verify that validator and TMKMS pubkeys match - Get validator pubkey on chain @@ -382,7 +384,7 @@ - Set envs: ```bash - # Set multisig app deployment directory + # Set multisig app deployment directory export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment ``` @@ -398,7 +400,7 @@ next_public_multichain: false next_public_registry_name: "laconic" next_public_logo: "" - next_public_chain_id: "laconic_9000-1" + next_public_chain_id: "laconic-mainnet" next_public_chain_display_name: "Laconic Network" next_public_node_addresses: '["http://localhost:26657"]' next_public_denom: "alnt" @@ -427,6 +429,74 @@ ansible-playbook -v -i localhost, -c local ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml ``` +- Check logs to ensure that the app is running: + + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs laconicd -f + ``` + +- The app will be running on `http://localhost:3000/laconic` + +### Create a multisig with both the validator accounts + +- Click on `I don't have a multisig` and add the addresses of your validators as member 1 and member 2 + +- Set the threshold to 2 out of 2 members (Both the validators should sign the TX to broadcast it) + +- Click on `Submit` and `Create multisig` + +- Copy your multisig address and send some funds to the address + + ``` + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd "laconicd tx bank send validator-2 1000000alnt --fees 2000alnt --keyring-backend test" + ``` + +### Create and sign transaction + +- Go to `home`, paste your multisig address and click on `Use this multisig` + +- You will see the multisig members and holdings for the address + +- Click on `Create new transaction` and then click on `Bank Send` under `Add New Msg` + +- Enter the Recipient Address, amount to be transfered and memo (optional) + +- Click on create transaction + +- Add accounts in keplr wallet for signing the transaction + + - Open keplr wallet and click on the user icon in the top right corner + + - Click on `Add wallet`, then select `Import an existing wallet` and go to `Use recovery phrase or private key` + + - Select the `Private key` tab and then paste the private key of the validator account and click on import + + - Set a name for the wallet (used when connecting wallet to app for signing transaction) and click on next + + - Search for `Laconic network` and select it, then click on `Save` + + - Follow the above steps for the second validator account + +- Go back to the multisig info page and scroll down to the `Transactions` section + +- Click on `Verify identity` and connect the app to your validator account in the keplr wallet + +- After approving the connection, you will see the list of transactions created by your multisig + +- Click on your transaction and under `Choose wallet to sign`, click on connect keplr + +- After connecting the wallet, click on `Sign transaction` and approve the transaction + +- Go back to multisig info page, switch to the second validator account in keplr wallet and repeat the same process to sign the transaction with the second validator account + +- Once the transaction is signed by both the validators, click on `Broadcast Transaction`. + +- Confirm funds transfer by checking balance of recipient address + + ``` + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd "laconicd query bank balances " + ``` + ## Cleanup - Remove deployments and other config files diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml index 77834d2..b09d6d3 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml @@ -14,7 +14,7 @@ msg: "Environment variable DATA_DIRECTORY is not set. Please export it before running the playbook." when: lookup('env', 'DATA_DIRECTORY') == '' - - name: Clone zenith-stack repo + - name: Clone cosmos-multisig-ui repo shell: | laconic-so fetch-stack git.vdb.to/cerc-io/cosmos-multisig-ui@v0.1.0 --git-ssh --pull diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml index 47885b5..c30848c 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml @@ -1,7 +1,7 @@ next_public_multichain: false next_public_registry_name: "laconic" next_public_logo: "" -next_public_chain_id: "laconic_9000-1" +next_public_chain_id: "laconic-mainnet" next_public_chain_display_name: "Laconic Network" next_public_node_addresses: '["http://localhost:26657"]' next_public_denom: "alnt" -- 2.45.2 From 2b4d3c8c1c048a1b94dbb599a5b34233be37667d Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 14:08:22 +0530 Subject: [PATCH 05/21] Add example recipient address --- docs/demo.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/demo.md b/docs/demo.md index b4c60c9..cfcadd3 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -453,16 +453,6 @@ ### Create and sign transaction -- Go to `home`, paste your multisig address and click on `Use this multisig` - -- You will see the multisig members and holdings for the address - -- Click on `Create new transaction` and then click on `Bank Send` under `Add New Msg` - -- Enter the Recipient Address, amount to be transfered and memo (optional) - -- Click on create transaction - - Add accounts in keplr wallet for signing the transaction - Open keplr wallet and click on the user icon in the top right corner @@ -477,6 +467,16 @@ - Follow the above steps for the second validator account +- Go to `home`, paste your multisig address and click on `Use this multisig` + +- You will see the multisig members and holdings for the address + +- Click on `Create new transaction` and then click on `Bank Send` under `Add New Msg` + +- Enter the recipient address ( Eg: `laconic1n4wa366kh0zxndwyq3kkse9ulz9jv9xukx3hy4`), amount to be transfered and memo (optional) + +- Click on create transaction + - Go back to the multisig info page and scroll down to the `Transactions` section - Click on `Verify identity` and connect the app to your validator account in the keplr wallet @@ -493,8 +493,8 @@ - Confirm funds transfer by checking balance of recipient address - ``` - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd "laconicd query bank balances " + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd "laconicd query bank balances laconic1n4wa366kh0zxndwyq3kkse9ulz9jv9xukx3hy4" ``` ## Cleanup -- 2.45.2 From 89c99be73d206ba6fc4319480942a458bf0944d4 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 15:22:35 +0530 Subject: [PATCH 06/21] Add steps to approve add network request --- docs/demo.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/demo.md b/docs/demo.md index cfcadd3..bcf2393 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -439,7 +439,11 @@ ### Create a multisig with both the validator accounts -- Click on `I don't have a multisig` and add the addresses of your validators as member 1 and member 2 +- On opening the app, a prompt will be shown to add laconic network to you keplr wallet. Click on `Approve` + +- Go to home and click on `I don't have a multisig` + +- Add the addresses of your validators as member 1 and member 2 - Set the threshold to 2 out of 2 members (Both the validators should sign the TX to broadcast it) -- 2.45.2 From 0394c2730fb6c9006efd12023f5928d6cf5f4f0f Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 17:31:38 +0530 Subject: [PATCH 07/21] Copy over network JSON file to deployment folder --- config/network.json | 45 +++++++++++++++++++ docs/demo.md | 2 + .../cosmos-multisig-app-start.yml | 19 ++++++-- 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 config/network.json diff --git a/config/network.json b/config/network.json new file mode 100644 index 0000000..6904702 --- /dev/null +++ b/config/network.json @@ -0,0 +1,45 @@ +{ + "chainId": "laconic-mainnet", + "chainName": "Laconicd", + "rpc": "http://localhost:26657", + "rest": "https://localhost:1317", + "bip44": { + "coinType": 118 + }, + "bech32Config": { + "bech32PrefixAccAddr": "laconic", + "bech32PrefixAccPub": "laconipub", + "bech32PrefixValAddr": "laconicvaloper", + "bech32PrefixValPub": "laconicvaloperpub", + "bech32PrefixConsAddr": "laconicvalcons", + "bech32PrefixConsPub": "laconicvalconspub" + }, + "currencies": [ + { + "coinDenom": "ALNT", + "coinMinimalDenom": "alnt", + "coinDecimals": 18 + } + ], + "feeCurrencies": [ + { + "coinDenom": "ALNT", + "coinMinimalDenom": "alnt", + "coinDecimals": 18 + } + ], + "stakeCurrency": { + "coinDenom": "ALNT", + "coinMinimalDenom": "alnt", + "coinDecimals": 18 + }, + "gasPriceStep": { + "low": 0.01, + "average": 0.01, + "high": 0.02 + }, + "features": [ + "stargate", + "ibc-transfer" + ] +} diff --git a/docs/demo.md b/docs/demo.md index bcf2393..6d913d5 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -386,6 +386,8 @@ ```bash # Set multisig app deployment directory export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment + # Set path to custom network JSON file + export NETWORK_JSON_PATH=~/cerc/laconicd-stack/config/network.json ``` - Copy the example variables file: diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml index b09d6d3..b277df3 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml @@ -8,6 +8,7 @@ multisig_deployment_dir: "{{ lookup('env', 'MULTISIG_DEPLOYMENT_DIR') }}" spec_output: "{{data_directory}}/cosmos-multisig-ui-spec.yml" spec_template: "./templates/specs/cosmos-multisig-app-spec-template.yml.j2" + network_json: "{{ lookup('env', 'NETWORK_JSON_PATH') }}" tasks: - name: Fail if DATA_DIRECTORY env var is not set fail: @@ -32,11 +33,11 @@ - name: Create deployment from spec file shell: | - laconic-so --stack ~/cerc/cosmos-multisig-ui/stack-orchestrator/stacks/cosmos-multisig-ui/ deploy create --spec-file {{ spec_output }} --deployment-dir {{ multisig_deployment_dir }} + laconic-so --stack ~/cerc/cosmos-multisig-ui/stack-orchestrator/stacks/cosmos-multisig-ui/ deploy create --spec-file {{ spec_output }} --deployment-dir {{data_directory}}/{{ multisig_deployment_dir }} - name: Create config.env in deployment dir copy: - dest: "{{ multisig_deployment_dir }}/config.env" + dest: "{{data_directory}}/{{ multisig_deployment_dir }}/config.env" content: | NEXT_PUBLIC_MULTICHAIN={{ next_public_multichain }} NEXT_PUBLIC_REGISTRY_NAME={{ next_public_registry_name }} @@ -51,8 +52,20 @@ NEXT_PUBLIC_GAS_PRICE={{ next_public_gas_price }} NEXT_PUBLIC_ADDRESS_PREFIX={{ next_public_address_prefix }} NEXT_PUBLIC_IS_HTTP_ENABLED={{ next_public_is_http_enabled }} + CHAIN_CONFIG_PATH="{{data_directory}}/{{ multisig_deployment_dir }}/config/cosmos-multisig-ui/network.json" + mode: '0644' + + - name: Fail if NETWORK_JSON_PATH env var is not set + fail: + msg: "Environment variable NETWORK_JSON_PATH is not set. Please export it before running the playbook." + when: lookup('env', 'NETWORK_JSON_PATH') == '' + + - name: Copy network JSON to deployment config directory + copy: + src: "{{ lookup('env', 'NETWORK_JSON_PATH') }}" + dest: "{{data_directory}}/{{ multisig_deployment_dir }}/config/cosmos-multisig-ui/network.json" mode: '0644' - name: Start the deployment shell: | - laconic-so deployment --dir {{ multisig_deployment_dir }} start + laconic-so deployment --dir {{data_directory}}/{{ multisig_deployment_dir }} start -- 2.45.2 From 3833f40a5c7e69b0d47b981290f7357de2b192ab Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 18:41:17 +0530 Subject: [PATCH 08/21] Add env for setting network mode --- docs/demo.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/demo.md b/docs/demo.md index 6d913d5..7769f13 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -388,6 +388,9 @@ export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment # Set path to custom network JSON file export NETWORK_JSON_PATH=~/cerc/laconicd-stack/config/network.json + + # Set network mode to host + export USE_HOST_NETWORK=host ``` - Copy the example variables file: -- 2.45.2 From 7f53b422f3d875214611b49f0ebdaa0ab7816533 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 19:19:14 +0530 Subject: [PATCH 09/21] Update README --- docs/demo.md | 50 ++++++++++++++------------------------------------ 1 file changed, 14 insertions(+), 36 deletions(-) diff --git a/docs/demo.md b/docs/demo.md index 7769f13..d5e41c0 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -381,6 +381,19 @@ rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json ``` +- Copy the example variables file for cosmos-multisig app playbook: + + ```bash + cp ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.yml + ``` + + - Update env values in `cosmos-multisig-vars.yml` withyour node RPC URL + + ```bash + next_public_node_addresses: '' + next_public_is_http_enabled: true + ``` + - Set envs: ```bash @@ -389,45 +402,10 @@ # Set path to custom network JSON file export NETWORK_JSON_PATH=~/cerc/laconicd-stack/config/network.json - # Set network mode to host + # Set network mode to host so that browser app and backend can use the same node localhost RPC URL export USE_HOST_NETWORK=host ``` -- Copy the example variables file: - - ```bash - cp ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.yml - ``` - - - Update env values in `cosmos-multisig-vars.yml` - - ```bash - next_public_multichain: false - next_public_registry_name: "laconic" - next_public_logo: "" - next_public_chain_id: "laconic-mainnet" - next_public_chain_display_name: "Laconic Network" - next_public_node_addresses: '["http://localhost:26657"]' - next_public_denom: "alnt" - next_public_display_denom: "ALNT" - next_public_display_denom_exponent: 18 - next_public_assets: '[{"denom_units":[{"denom":"alnt","exponent":0},{"denom":"alnt","exponent":6}],"base":"alnt","name":"Laconic Token","display":"ALNT","symbol":"alnt"}]' - next_public_gas_price: "0.01alnt" - next_public_address_prefix: "laconic" - next_public_is_http_enabled: true - ``` - -- Update port mappings in `~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/templates/specs/cosmos-multisig-app-spec-template.yml.j2`: - - ```bash - network: - ports: - cosmos-multisig-ui: - - 3000:3000 - alpha: - - 8080:8080 - ``` - - Run playbook to setup cosmos multisig app ```bash -- 2.45.2 From 6899b0ecf4cc77a1e3515e5a4ba76d82e38b4009 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 19:30:52 +0530 Subject: [PATCH 10/21] Replace RPC and rest URLS in network JSON with values from config --- docs/demo.md | 3 ++- .../cosmos-multisig-app-start.yml | 16 ++++++++++++++-- .../cosmos-multisig-vars.example.yml | 3 +-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/docs/demo.md b/docs/demo.md index d5e41c0..20deabc 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -390,7 +390,8 @@ - Update env values in `cosmos-multisig-vars.yml` withyour node RPC URL ```bash - next_public_node_addresses: '' + next_public_node_addresses: '["http://localhost:26657"]' + node_rest_endpoint: 'http://localhost:1317' next_public_is_http_enabled: true ``` diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml index b277df3..73b18e7 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml @@ -9,6 +9,7 @@ spec_output: "{{data_directory}}/cosmos-multisig-ui-spec.yml" spec_template: "./templates/specs/cosmos-multisig-app-spec-template.yml.j2" network_json: "{{ lookup('env', 'NETWORK_JSON_PATH') }}" + temp_network_json: "{{data_directory}}/temp_network.json" tasks: - name: Fail if DATA_DIRECTORY env var is not set fail: @@ -45,6 +46,7 @@ NEXT_PUBLIC_CHAIN_ID={{ next_public_chain_id }} NEXT_PUBLIC_CHAIN_DISPLAY_NAME={{ next_public_chain_display_name }} NEXT_PUBLIC_NODE_ADDRESSES={{ next_public_node_addresses }} + NODE_REST_ENDPOINT={{ node_rest_endpoint }} NEXT_PUBLIC_DENOM={{ next_public_denom }} NEXT_PUBLIC_DISPLAY_DENOM={{ next_public_display_denom }} NEXT_PUBLIC_DISPLAY_DENOM_EXPONENT={{ next_public_display_denom_exponent }} @@ -60,12 +62,22 @@ msg: "Environment variable NETWORK_JSON_PATH is not set. Please export it before running the playbook." when: lookup('env', 'NETWORK_JSON_PATH') == '' - - name: Copy network JSON to deployment config directory + - name: Update network.json with environment endpoints + shell: | + jq --arg rpc "$NEXT_PUBLIC_NODE_ADDRESSES" --arg rest "$NODE_REST_ENDPOINT" \ + '.rpc = $rpc | .rest = $rest' "{{ lookup('env', 'NETWORK_JSON_PATH') }}" > "{{ temp_network_json }}" + + - name: Copy modified network JSON to deployment config directory copy: - src: "{{ lookup('env', 'NETWORK_JSON_PATH') }}" + src: "{{ temp_network_json }}" dest: "{{data_directory}}/{{ multisig_deployment_dir }}/config/cosmos-multisig-ui/network.json" mode: '0644' + - name: Clean up temporary network.json + file: + path: "{{ temp_network_json }}" + state: absent + - name: Start the deployment shell: | laconic-so deployment --dir {{data_directory}}/{{ multisig_deployment_dir }} start diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml index c30848c..f15cf92 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml @@ -3,11 +3,10 @@ next_public_registry_name: "laconic" next_public_logo: "" next_public_chain_id: "laconic-mainnet" next_public_chain_display_name: "Laconic Network" -next_public_node_addresses: '["http://localhost:26657"]' next_public_denom: "alnt" next_public_display_denom: "ALNT" next_public_display_denom_exponent: 18 next_public_assets: '[{"denom_units":[{"denom":"alnt","exponent":0},{"denom":"alnt","exponent":6}],"base":"alnt","name":"Laconic Token","display":"ALNT","symbol":"alnt"}]' next_public_gas_price: "0.01alnt" next_public_address_prefix: "laconic" -next_public_is_http_enabled: true +next_public_is_http_enabled: false -- 2.45.2 From f5b7a9614549e95b6a3988864ed6324e027eb726 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Tue, 27 May 2025 19:33:38 +0530 Subject: [PATCH 11/21] Update example vars file --- playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml index f15cf92..dc15648 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml @@ -3,6 +3,7 @@ next_public_registry_name: "laconic" next_public_logo: "" next_public_chain_id: "laconic-mainnet" next_public_chain_display_name: "Laconic Network" +next_public_node_addresses: '' next_public_denom: "alnt" next_public_display_denom: "ALNT" next_public_display_denom_exponent: 18 -- 2.45.2 From 45cf566c304f96f0b928949881215f5d6886471a Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 09:40:16 +0530 Subject: [PATCH 12/21] Keep first URL from rpc endpoints in network JSON --- config/network.json | 4 ++-- .../cosmos-multisig-app/cosmos-multisig-app-start.yml | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/config/network.json b/config/network.json index 6904702..2f9d736 100644 --- a/config/network.json +++ b/config/network.json @@ -1,8 +1,8 @@ { "chainId": "laconic-mainnet", "chainName": "Laconicd", - "rpc": "http://localhost:26657", - "rest": "https://localhost:1317", + "rpc": "", + "rest": "", "bip44": { "coinType": 118 }, diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml index 73b18e7..22ed152 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml @@ -64,8 +64,13 @@ - name: Update network.json with environment endpoints shell: | - jq --arg rpc "$NEXT_PUBLIC_NODE_ADDRESSES" --arg rest "$NODE_REST_ENDPOINT" \ + RPC_VALUE=$(echo '{{ next_public_node_addresses }}' | jq -r '.[0]') + echo "Using RPC value: $RPC_VALUE" + + jq --arg rpc "$RPC_VALUE" --arg rest "{{ node_rest_endpoint }}" \ '.rpc = $rpc | .rest = $rest' "{{ lookup('env', 'NETWORK_JSON_PATH') }}" > "{{ temp_network_json }}" + args: + executable: /bin/bash - name: Copy modified network JSON to deployment config directory copy: -- 2.45.2 From 2c1ba390e58f119ef380406f57cf648e363e1886 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 10:31:01 +0530 Subject: [PATCH 13/21] Add READMEs for playbooks --- playbooks/cosmos-multisig-app/README.md | 62 +++++++++++ playbooks/first-validator/README.md | 125 ++++++++++++++++++++++ playbooks/validator/README.md | 135 ++++++++++++++++++++++++ 3 files changed, 322 insertions(+) create mode 100644 playbooks/cosmos-multisig-app/README.md create mode 100644 playbooks/first-validator/README.md create mode 100644 playbooks/validator/README.md diff --git a/playbooks/cosmos-multisig-app/README.md b/playbooks/cosmos-multisig-app/README.md new file mode 100644 index 0000000..d065197 --- /dev/null +++ b/playbooks/cosmos-multisig-app/README.md @@ -0,0 +1,62 @@ +# Cosmos Multisig App Setup + +This playbook sets up the Cosmos Multisig application for managing multisig wallets on the Laconic chain. + +## Prerequisites + +- [ansible](../README.md#ansible-installation) +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- Running Laconic validator node +- Keplr wallet extension installed in browser + +## Configuration + +* Copy the example variables file: + ```bash + cp cosmos-multisig-vars.example.yml cosmos-multisig-vars.yml + ``` + +* Update `cosmos-multisig-vars.yml` with your node configuration: + ```yaml + next_public_node_addresses: + node_rest_endpoint: + ``` + +## Setup Steps + +* Set environment variables: + ```bash + export CWD=$(pwd) + export DATA_DIRECTORY=$CWD + export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment + export NETWORK_JSON_PATH=~/cerc/laconicd-stack/config/network.json + export USE_HOST_NETWORK=host + ``` + +* Setup and start the multisig app: + ```bash + ansible-playbook -v -i localhost, -c local cosmos-multisig-app-start.yml + ``` + +* Access the app at `http://localhost:3000/laconic` + + +## Check Status + +* Check app logs: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs laconicd -f + ``` + +## Clean up + +- To stop the deployment: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR stop + ``` + +- To stop and delete all data: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR stop --delete-volumes + sudo rm -rf $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR + ``` diff --git a/playbooks/first-validator/README.md b/playbooks/first-validator/README.md new file mode 100644 index 0000000..01ffdc3 --- /dev/null +++ b/playbooks/first-validator/README.md @@ -0,0 +1,125 @@ +# First Validator Setup + +This playbook sets up the first validator node for the Laconic mainnet chain. + +## Prerequisites + +- [ansible](../README.md#ansible-installation) +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) + - Install with `softsign` feature + ```bash + cargo install tmkms --features=softsign --version=0.14.0 + ``` +- testnet-state.json (exported testnet state) +- distribution.json (JSON containing the `lps_lockup` distribution) + +## Setup Steps + +1. Copy the example variables file: + ```bash + cp first-validator-vars.example.yml first-validator-vars.yml + ``` + +2. Set environment variables: + ```bash + export CWD=$(pwd) + export DATA_DIRECTORY=$CWD + export MAINNET_DEPLOYMENT_DIR=mainnet-laconicd-deployment + export EXPORTED_STATE_PATH=$CWD/testnet-state.json + export LPS_DISTRIBUTION_PATH=$CWD/distribution.json + export EARLY_SUPPORTS_ACC_ADDR=laconic1gwytamfk3m5n0gsawh5vpwxkwd3vapmvzpp6nz + ``` + +3. Generate genesis file: + ```bash + ansible-playbook -v -i localhost, -c local generate-genesis.yml \ + -e "exported_state_path=$EXPORTED_STATE_PATH" \ + -e "lps_distribution_path=$LPS_DISTRIBUTION_PATH" \ + -e "early_supports_acc_address=$EARLY_SUPPORTS_ACC_ADDR" + ``` + +4. Update `first-validator-vars.yml` with your configuration: + ```yaml + pvt_key: + genesis_file: "$CWD/output/genesis.json" + staking_amount_file: "$CWD/output/staking-amount.json" + cerc_moniker: "LaconicMainnet" + key_name: "laconic-validator" + cerc_chain_id: "laconic-mainnet" + min_gas_price: 0.001 + cerc_loglevel: "info" + ``` + +5. Setup the first validator node: + ```bash + ansible-playbook -v -i localhost, -c local setup-first-validator.yml + ``` + +6. Setup TMKMS: + ```bash + # Initialize TMKMS + tmkms init ./tmkms-first-node + + # Create TMKMS config + cat > ./tmkms-first-node/tmkms.toml << EOL + [[chain]] + id = "laconic-mainnet" + key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } + state_file = "$CWD/tmkms-first-node/state/priv_validator_state.json" + + [[validator]] + chain_id = "laconic-mainnet" + addr = "tcp://localhost:26659" + secret_key = "$CWD/tmkms-first-node/secrets/kms-identity.key" + protocol_version = "v0.34" + reconnect = true + + [[providers.softsign]] + key_type = "consensus" + path = "$CWD/tmkms-first-node/secrets/priv_validator_key" + chain_ids = ["laconic-mainnet"] + EOL + + # Import validator key + tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-first-node/secrets/priv_validator_key + ``` + +7. Start TMKMS: + ```bash + tmkms start --config $CWD/tmkms-first-node/tmkms.toml + ``` + +8. Enable TMKMS and start the node: + ```bash + echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env + rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start + ``` + +## Verification + +1. Check node logs: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f + ``` + +2. Verify validator and TMKMS pubkeys match: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators -o json | jq .validators' + ``` + +3. Check bonds list: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bond list' + ``` + +4. Check token supply: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bank total-supply' + ``` + +5. Check LPS lockup account: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query auth module-account lps_lockup' + ``` \ No newline at end of file diff --git a/playbooks/validator/README.md b/playbooks/validator/README.md new file mode 100644 index 0000000..c8553b5 --- /dev/null +++ b/playbooks/validator/README.md @@ -0,0 +1,135 @@ +# Validator Setup + +This playbook sets up additional validator nodes for the Laconic mainnet chain. + +## Prerequisites + +- [ansible](../README.md#ansible-installation) +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) + - Install with `softsign` feature + ```bash + cargo install tmkms --features=softsign --version=0.14.0 + ``` +- Running first validator node +- Private key of an account with balance + +## Configuration + +1. Copy the example variables file: + ```bash + cp validator-vars.example.yml validator-vars.yml + ``` + +2. Update `validator-vars.yml` with your configuration: + ```yaml + cerc_moniker: "LaconicMainnetNode-2" + cerc_peers: "@host.docker.internal:26656" # First validator node address + ``` + +3. Update port mappings in `templates/specs/spec-template.yml.j2` to avoid port conflicts: + ```yaml + network: + ports: + laconicd: + - '3060:6060' + - '36659:26659' + - '36657:26657' + - '36656:26656' + - '3473:9473' + - '3090:9090' + - '3317:1317' + ``` + +## Setup Steps + +1. Set environment variables: + ```bash + export CWD=$(pwd) + export DATA_DIRECTORY=$CWD + export MAINNET_DEPLOYMENT_DIR=mainnet-validator-deployment + ``` + +2. Setup validator node: + ```bash + ansible-playbook -v -i localhost, -c local setup-validator.yml + ``` + +3. Setup TMKMS: + ```bash + # Initialize TMKMS + tmkms init ./tmkms-second-node + + # Create TMKMS config + cat > ./tmkms-second-node/tmkms.toml << EOL + [[chain]] + id = "laconic-mainnet" + key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } + state_file = "$CWD/tmkms-second-node/state/priv_validator_state.json" + + [[validator]] + chain_id = "laconic-mainnet" + addr = "tcp://localhost:36659" + secret_key = "$CWD/tmkms-second-node/secrets/kms-identity.key" + protocol_version = "v0.34" + reconnect = true + + [[providers.softsign]] + key_type = "consensus" + path = "$CWD/tmkms-second-node/secrets/priv_validator_key" + chain_ids = ["laconic-mainnet"] + EOL + + # Import validator key + tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-second-node/secrets/priv_validator_key + ``` + +4. Start TMKMS: + ```bash + tmkms start --config $CWD/tmkms-second-node/tmkms.toml + ``` + +5. Enable TMKMS and start the node: + ```bash + echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env + rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start + ``` + +## Create Validator + +1. Set required environment variables: + ```bash + export PVT_KEY= + export KEY_NAME=validator-2 + ``` + +2. Create validator on running chain: + ```bash + ansible-playbook -v -i localhost, -c local create-validator.yml + ``` + +## Verification + +1. Check node logs: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f + ``` + +2. Check validator list: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators' + ``` + +## Clean up + +- To stop the deployment: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop + ``` + +- To stop and delete all data: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop --delete-volumes + sudo rm -rf $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR + ``` \ No newline at end of file -- 2.45.2 From 3d87ba0c15846cad04b6c38c9635b08e3c393155 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 10:32:43 +0530 Subject: [PATCH 14/21] Update READMEs --- playbooks/cosmos-multisig-app/README.md | 62 ----------- playbooks/first-validator/README.md | 125 ---------------------- playbooks/validator/README.md | 135 ------------------------ 3 files changed, 322 deletions(-) delete mode 100644 playbooks/cosmos-multisig-app/README.md delete mode 100644 playbooks/first-validator/README.md delete mode 100644 playbooks/validator/README.md diff --git a/playbooks/cosmos-multisig-app/README.md b/playbooks/cosmos-multisig-app/README.md deleted file mode 100644 index d065197..0000000 --- a/playbooks/cosmos-multisig-app/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# Cosmos Multisig App Setup - -This playbook sets up the Cosmos Multisig application for managing multisig wallets on the Laconic chain. - -## Prerequisites - -- [ansible](../README.md#ansible-installation) -- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- Running Laconic validator node -- Keplr wallet extension installed in browser - -## Configuration - -* Copy the example variables file: - ```bash - cp cosmos-multisig-vars.example.yml cosmos-multisig-vars.yml - ``` - -* Update `cosmos-multisig-vars.yml` with your node configuration: - ```yaml - next_public_node_addresses: - node_rest_endpoint: - ``` - -## Setup Steps - -* Set environment variables: - ```bash - export CWD=$(pwd) - export DATA_DIRECTORY=$CWD - export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment - export NETWORK_JSON_PATH=~/cerc/laconicd-stack/config/network.json - export USE_HOST_NETWORK=host - ``` - -* Setup and start the multisig app: - ```bash - ansible-playbook -v -i localhost, -c local cosmos-multisig-app-start.yml - ``` - -* Access the app at `http://localhost:3000/laconic` - - -## Check Status - -* Check app logs: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs laconicd -f - ``` - -## Clean up - -- To stop the deployment: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR stop - ``` - -- To stop and delete all data: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR stop --delete-volumes - sudo rm -rf $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR - ``` diff --git a/playbooks/first-validator/README.md b/playbooks/first-validator/README.md deleted file mode 100644 index 01ffdc3..0000000 --- a/playbooks/first-validator/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# First Validator Setup - -This playbook sets up the first validator node for the Laconic mainnet chain. - -## Prerequisites - -- [ansible](../README.md#ansible-installation) -- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) - - Install with `softsign` feature - ```bash - cargo install tmkms --features=softsign --version=0.14.0 - ``` -- testnet-state.json (exported testnet state) -- distribution.json (JSON containing the `lps_lockup` distribution) - -## Setup Steps - -1. Copy the example variables file: - ```bash - cp first-validator-vars.example.yml first-validator-vars.yml - ``` - -2. Set environment variables: - ```bash - export CWD=$(pwd) - export DATA_DIRECTORY=$CWD - export MAINNET_DEPLOYMENT_DIR=mainnet-laconicd-deployment - export EXPORTED_STATE_PATH=$CWD/testnet-state.json - export LPS_DISTRIBUTION_PATH=$CWD/distribution.json - export EARLY_SUPPORTS_ACC_ADDR=laconic1gwytamfk3m5n0gsawh5vpwxkwd3vapmvzpp6nz - ``` - -3. Generate genesis file: - ```bash - ansible-playbook -v -i localhost, -c local generate-genesis.yml \ - -e "exported_state_path=$EXPORTED_STATE_PATH" \ - -e "lps_distribution_path=$LPS_DISTRIBUTION_PATH" \ - -e "early_supports_acc_address=$EARLY_SUPPORTS_ACC_ADDR" - ``` - -4. Update `first-validator-vars.yml` with your configuration: - ```yaml - pvt_key: - genesis_file: "$CWD/output/genesis.json" - staking_amount_file: "$CWD/output/staking-amount.json" - cerc_moniker: "LaconicMainnet" - key_name: "laconic-validator" - cerc_chain_id: "laconic-mainnet" - min_gas_price: 0.001 - cerc_loglevel: "info" - ``` - -5. Setup the first validator node: - ```bash - ansible-playbook -v -i localhost, -c local setup-first-validator.yml - ``` - -6. Setup TMKMS: - ```bash - # Initialize TMKMS - tmkms init ./tmkms-first-node - - # Create TMKMS config - cat > ./tmkms-first-node/tmkms.toml << EOL - [[chain]] - id = "laconic-mainnet" - key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } - state_file = "$CWD/tmkms-first-node/state/priv_validator_state.json" - - [[validator]] - chain_id = "laconic-mainnet" - addr = "tcp://localhost:26659" - secret_key = "$CWD/tmkms-first-node/secrets/kms-identity.key" - protocol_version = "v0.34" - reconnect = true - - [[providers.softsign]] - key_type = "consensus" - path = "$CWD/tmkms-first-node/secrets/priv_validator_key" - chain_ids = ["laconic-mainnet"] - EOL - - # Import validator key - tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-first-node/secrets/priv_validator_key - ``` - -7. Start TMKMS: - ```bash - tmkms start --config $CWD/tmkms-first-node/tmkms.toml - ``` - -8. Enable TMKMS and start the node: - ```bash - echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env - rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start - ``` - -## Verification - -1. Check node logs: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f - ``` - -2. Verify validator and TMKMS pubkeys match: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators -o json | jq .validators' - ``` - -3. Check bonds list: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bond list' - ``` - -4. Check token supply: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bank total-supply' - ``` - -5. Check LPS lockup account: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query auth module-account lps_lockup' - ``` \ No newline at end of file diff --git a/playbooks/validator/README.md b/playbooks/validator/README.md deleted file mode 100644 index c8553b5..0000000 --- a/playbooks/validator/README.md +++ /dev/null @@ -1,135 +0,0 @@ -# Validator Setup - -This playbook sets up additional validator nodes for the Laconic mainnet chain. - -## Prerequisites - -- [ansible](../README.md#ansible-installation) -- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) - - Install with `softsign` feature - ```bash - cargo install tmkms --features=softsign --version=0.14.0 - ``` -- Running first validator node -- Private key of an account with balance - -## Configuration - -1. Copy the example variables file: - ```bash - cp validator-vars.example.yml validator-vars.yml - ``` - -2. Update `validator-vars.yml` with your configuration: - ```yaml - cerc_moniker: "LaconicMainnetNode-2" - cerc_peers: "@host.docker.internal:26656" # First validator node address - ``` - -3. Update port mappings in `templates/specs/spec-template.yml.j2` to avoid port conflicts: - ```yaml - network: - ports: - laconicd: - - '3060:6060' - - '36659:26659' - - '36657:26657' - - '36656:26656' - - '3473:9473' - - '3090:9090' - - '3317:1317' - ``` - -## Setup Steps - -1. Set environment variables: - ```bash - export CWD=$(pwd) - export DATA_DIRECTORY=$CWD - export MAINNET_DEPLOYMENT_DIR=mainnet-validator-deployment - ``` - -2. Setup validator node: - ```bash - ansible-playbook -v -i localhost, -c local setup-validator.yml - ``` - -3. Setup TMKMS: - ```bash - # Initialize TMKMS - tmkms init ./tmkms-second-node - - # Create TMKMS config - cat > ./tmkms-second-node/tmkms.toml << EOL - [[chain]] - id = "laconic-mainnet" - key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } - state_file = "$CWD/tmkms-second-node/state/priv_validator_state.json" - - [[validator]] - chain_id = "laconic-mainnet" - addr = "tcp://localhost:36659" - secret_key = "$CWD/tmkms-second-node/secrets/kms-identity.key" - protocol_version = "v0.34" - reconnect = true - - [[providers.softsign]] - key_type = "consensus" - path = "$CWD/tmkms-second-node/secrets/priv_validator_key" - chain_ids = ["laconic-mainnet"] - EOL - - # Import validator key - tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-second-node/secrets/priv_validator_key - ``` - -4. Start TMKMS: - ```bash - tmkms start --config $CWD/tmkms-second-node/tmkms.toml - ``` - -5. Enable TMKMS and start the node: - ```bash - echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env - rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start - ``` - -## Create Validator - -1. Set required environment variables: - ```bash - export PVT_KEY= - export KEY_NAME=validator-2 - ``` - -2. Create validator on running chain: - ```bash - ansible-playbook -v -i localhost, -c local create-validator.yml - ``` - -## Verification - -1. Check node logs: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f - ``` - -2. Check validator list: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators' - ``` - -## Clean up - -- To stop the deployment: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop - ``` - -- To stop and delete all data: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop --delete-volumes - sudo rm -rf $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR - ``` \ No newline at end of file -- 2.45.2 From ef95b1d17961350b772ae54c5006a79705401463 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 15:31:09 +0530 Subject: [PATCH 15/21] Update network name --- config/network.json | 2 +- .../cosmos-multisig-app/cosmos-multisig-vars.example.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/network.json b/config/network.json index 2f9d736..302c664 100644 --- a/config/network.json +++ b/config/network.json @@ -1,6 +1,6 @@ { "chainId": "laconic-mainnet", - "chainName": "Laconicd", + "chainName": "Laconic Mainnet", "rpc": "", "rest": "", "bip44": { diff --git a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml index dc15648..ae2d3ed 100644 --- a/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml +++ b/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml @@ -1,8 +1,8 @@ next_public_multichain: false -next_public_registry_name: "laconic" +next_public_registry_name: "Laconic Mainnet" next_public_logo: "" next_public_chain_id: "laconic-mainnet" -next_public_chain_display_name: "Laconic Network" +next_public_chain_display_name: "Laconic Mainnet" next_public_node_addresses: '' next_public_denom: "alnt" next_public_display_denom: "ALNT" -- 2.45.2 From b698140e205865c148ced9b38ebcf848c98395e3 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 10:31:01 +0530 Subject: [PATCH 16/21] Add READMEs for playbooks --- playbooks/cosmos-multisig-app/README.md | 62 +++++++++++ playbooks/first-validator/README.md | 125 ++++++++++++++++++++++ playbooks/validator/README.md | 135 ++++++++++++++++++++++++ 3 files changed, 322 insertions(+) create mode 100644 playbooks/cosmos-multisig-app/README.md create mode 100644 playbooks/first-validator/README.md create mode 100644 playbooks/validator/README.md diff --git a/playbooks/cosmos-multisig-app/README.md b/playbooks/cosmos-multisig-app/README.md new file mode 100644 index 0000000..d065197 --- /dev/null +++ b/playbooks/cosmos-multisig-app/README.md @@ -0,0 +1,62 @@ +# Cosmos Multisig App Setup + +This playbook sets up the Cosmos Multisig application for managing multisig wallets on the Laconic chain. + +## Prerequisites + +- [ansible](../README.md#ansible-installation) +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- Running Laconic validator node +- Keplr wallet extension installed in browser + +## Configuration + +* Copy the example variables file: + ```bash + cp cosmos-multisig-vars.example.yml cosmos-multisig-vars.yml + ``` + +* Update `cosmos-multisig-vars.yml` with your node configuration: + ```yaml + next_public_node_addresses: + node_rest_endpoint: + ``` + +## Setup Steps + +* Set environment variables: + ```bash + export CWD=$(pwd) + export DATA_DIRECTORY=$CWD + export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment + export NETWORK_JSON_PATH=~/cerc/laconicd-stack/config/network.json + export USE_HOST_NETWORK=host + ``` + +* Setup and start the multisig app: + ```bash + ansible-playbook -v -i localhost, -c local cosmos-multisig-app-start.yml + ``` + +* Access the app at `http://localhost:3000/laconic` + + +## Check Status + +* Check app logs: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs laconicd -f + ``` + +## Clean up + +- To stop the deployment: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR stop + ``` + +- To stop and delete all data: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR stop --delete-volumes + sudo rm -rf $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR + ``` diff --git a/playbooks/first-validator/README.md b/playbooks/first-validator/README.md new file mode 100644 index 0000000..01ffdc3 --- /dev/null +++ b/playbooks/first-validator/README.md @@ -0,0 +1,125 @@ +# First Validator Setup + +This playbook sets up the first validator node for the Laconic mainnet chain. + +## Prerequisites + +- [ansible](../README.md#ansible-installation) +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) + - Install with `softsign` feature + ```bash + cargo install tmkms --features=softsign --version=0.14.0 + ``` +- testnet-state.json (exported testnet state) +- distribution.json (JSON containing the `lps_lockup` distribution) + +## Setup Steps + +1. Copy the example variables file: + ```bash + cp first-validator-vars.example.yml first-validator-vars.yml + ``` + +2. Set environment variables: + ```bash + export CWD=$(pwd) + export DATA_DIRECTORY=$CWD + export MAINNET_DEPLOYMENT_DIR=mainnet-laconicd-deployment + export EXPORTED_STATE_PATH=$CWD/testnet-state.json + export LPS_DISTRIBUTION_PATH=$CWD/distribution.json + export EARLY_SUPPORTS_ACC_ADDR=laconic1gwytamfk3m5n0gsawh5vpwxkwd3vapmvzpp6nz + ``` + +3. Generate genesis file: + ```bash + ansible-playbook -v -i localhost, -c local generate-genesis.yml \ + -e "exported_state_path=$EXPORTED_STATE_PATH" \ + -e "lps_distribution_path=$LPS_DISTRIBUTION_PATH" \ + -e "early_supports_acc_address=$EARLY_SUPPORTS_ACC_ADDR" + ``` + +4. Update `first-validator-vars.yml` with your configuration: + ```yaml + pvt_key: + genesis_file: "$CWD/output/genesis.json" + staking_amount_file: "$CWD/output/staking-amount.json" + cerc_moniker: "LaconicMainnet" + key_name: "laconic-validator" + cerc_chain_id: "laconic-mainnet" + min_gas_price: 0.001 + cerc_loglevel: "info" + ``` + +5. Setup the first validator node: + ```bash + ansible-playbook -v -i localhost, -c local setup-first-validator.yml + ``` + +6. Setup TMKMS: + ```bash + # Initialize TMKMS + tmkms init ./tmkms-first-node + + # Create TMKMS config + cat > ./tmkms-first-node/tmkms.toml << EOL + [[chain]] + id = "laconic-mainnet" + key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } + state_file = "$CWD/tmkms-first-node/state/priv_validator_state.json" + + [[validator]] + chain_id = "laconic-mainnet" + addr = "tcp://localhost:26659" + secret_key = "$CWD/tmkms-first-node/secrets/kms-identity.key" + protocol_version = "v0.34" + reconnect = true + + [[providers.softsign]] + key_type = "consensus" + path = "$CWD/tmkms-first-node/secrets/priv_validator_key" + chain_ids = ["laconic-mainnet"] + EOL + + # Import validator key + tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-first-node/secrets/priv_validator_key + ``` + +7. Start TMKMS: + ```bash + tmkms start --config $CWD/tmkms-first-node/tmkms.toml + ``` + +8. Enable TMKMS and start the node: + ```bash + echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env + rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start + ``` + +## Verification + +1. Check node logs: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f + ``` + +2. Verify validator and TMKMS pubkeys match: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators -o json | jq .validators' + ``` + +3. Check bonds list: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bond list' + ``` + +4. Check token supply: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bank total-supply' + ``` + +5. Check LPS lockup account: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query auth module-account lps_lockup' + ``` \ No newline at end of file diff --git a/playbooks/validator/README.md b/playbooks/validator/README.md new file mode 100644 index 0000000..c8553b5 --- /dev/null +++ b/playbooks/validator/README.md @@ -0,0 +1,135 @@ +# Validator Setup + +This playbook sets up additional validator nodes for the Laconic mainnet chain. + +## Prerequisites + +- [ansible](../README.md#ansible-installation) +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) + - Install with `softsign` feature + ```bash + cargo install tmkms --features=softsign --version=0.14.0 + ``` +- Running first validator node +- Private key of an account with balance + +## Configuration + +1. Copy the example variables file: + ```bash + cp validator-vars.example.yml validator-vars.yml + ``` + +2. Update `validator-vars.yml` with your configuration: + ```yaml + cerc_moniker: "LaconicMainnetNode-2" + cerc_peers: "@host.docker.internal:26656" # First validator node address + ``` + +3. Update port mappings in `templates/specs/spec-template.yml.j2` to avoid port conflicts: + ```yaml + network: + ports: + laconicd: + - '3060:6060' + - '36659:26659' + - '36657:26657' + - '36656:26656' + - '3473:9473' + - '3090:9090' + - '3317:1317' + ``` + +## Setup Steps + +1. Set environment variables: + ```bash + export CWD=$(pwd) + export DATA_DIRECTORY=$CWD + export MAINNET_DEPLOYMENT_DIR=mainnet-validator-deployment + ``` + +2. Setup validator node: + ```bash + ansible-playbook -v -i localhost, -c local setup-validator.yml + ``` + +3. Setup TMKMS: + ```bash + # Initialize TMKMS + tmkms init ./tmkms-second-node + + # Create TMKMS config + cat > ./tmkms-second-node/tmkms.toml << EOL + [[chain]] + id = "laconic-mainnet" + key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } + state_file = "$CWD/tmkms-second-node/state/priv_validator_state.json" + + [[validator]] + chain_id = "laconic-mainnet" + addr = "tcp://localhost:36659" + secret_key = "$CWD/tmkms-second-node/secrets/kms-identity.key" + protocol_version = "v0.34" + reconnect = true + + [[providers.softsign]] + key_type = "consensus" + path = "$CWD/tmkms-second-node/secrets/priv_validator_key" + chain_ids = ["laconic-mainnet"] + EOL + + # Import validator key + tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-second-node/secrets/priv_validator_key + ``` + +4. Start TMKMS: + ```bash + tmkms start --config $CWD/tmkms-second-node/tmkms.toml + ``` + +5. Enable TMKMS and start the node: + ```bash + echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env + rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start + ``` + +## Create Validator + +1. Set required environment variables: + ```bash + export PVT_KEY= + export KEY_NAME=validator-2 + ``` + +2. Create validator on running chain: + ```bash + ansible-playbook -v -i localhost, -c local create-validator.yml + ``` + +## Verification + +1. Check node logs: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f + ``` + +2. Check validator list: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators' + ``` + +## Clean up + +- To stop the deployment: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop + ``` + +- To stop and delete all data: + ```bash + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop --delete-volumes + sudo rm -rf $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR + ``` \ No newline at end of file -- 2.45.2 From a7f26983ab22d2b4d0c0011092863974b8f03b90 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 11:04:14 +0530 Subject: [PATCH 17/21] Update main README with overview --- README.md | 22 ++++++++++++++++ playbooks/README.md | 62 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/README.md b/README.md index e81912c..f6dae01 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,25 @@ - Follow [run-first-validator.md](docs/run-first-validator.md) to run the first validator node - Follow [run-validator.md](docs/run-validator.md) to run subsequent validator nodes + +### Other Dependencies + +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) (for validator nodes) +- Keplr wallet extension (for multisig app) + +## Launch Laconic Mainnet + +- Run [playbook](./playbooks/first-validator/README.md) to use exported state for generating mainnet genesis, submit gentx and setup the node + - Generate the genesis file from testnet state + - Set up the first validator node + - Configure TMKMS for key management + - Verify testnet state transfer and token distribution + +- Run [playbook](./playbooks/validator/README.md) to start both validator nodes + - Set up additional validator nodes with different ports + - Configure TMKMS for each validator + - Create validators on the running chain + - Verify validator creation and participation + +- Deploy the Cosmos Multisig application using the [cosmos-multisig-app playbook](./playbooks/cosmos-multisig-app/README.md) diff --git a/playbooks/README.md b/playbooks/README.md index 679dd14..1334a50 100644 --- a/playbooks/README.md +++ b/playbooks/README.md @@ -40,3 +40,65 @@ ansible --version # ansible [core 2.17.2] ``` + +# Laconic Stack Playbooks + +This directory contains Ansible playbooks for setting up and managing various components of the Laconic stack. + +## Prerequisites + +- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) +- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) (for validator nodes) + - Install with `softsign` feature + ```bash + cargo install tmkms --features=softsign --version=0.14.0 + ``` +- testnet-state.json (exported testnet state) +- distribution.json (JSON containing the `lps_lockup` distribution) +- Keplr wallet extension (for multisig app) + +## Launch Laconic Mainnet + +- Begin by setting up the first validator node using the [first-validator playbook](first-validator/README.md) + + This playbook will: + - Generate the genesis file from testnet state + - Set up the first validator node + - Configure TMKMS for key management + - Verify testnet state transfer and token distribution + +- Once the first validator node is running, set up additional validators using the [validator playbook](validator/README.md) + + This playbook will: + - Set up additional validator nodes with different ports + - Configure TMKMS for each validator + - Create validators on the running chain + - Verify validator creation and participation + +- Deploy the Cosmos Multisig application using the [cosmos-multisig-app playbook](cosmos-multisig-app/README.md) + + This playbook will: + - Set up the multisig web interface + - Configure it to work with your validator nodes + - Enable multisig wallet creation and management + - Allow creation of multisig wallets with validator accounts + - Enable transaction signing and broadcasting + +## Common Environment Variables + +Most playbooks require these environment variables: + +```bash +export CWD=$(pwd) +export DATA_DIRECTORY=$CWD +``` + +Additional variables are documented in each playbook's README. + +## Cleanup + +To clean up all deployments: + +```bash +rm -rf *-spec.yml *-deployment tmkms-* output +``` -- 2.45.2 From 30727feb21c9e7ae25ffebb1fb7866ff538ebabf Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 14:49:45 +0530 Subject: [PATCH 18/21] Update root README --- README.md | 23 +---- playbooks/README.md | 62 ------------- playbooks/first-validator/README.md | 125 -------------------------- playbooks/validator/README.md | 135 ---------------------------- 4 files changed, 1 insertion(+), 344 deletions(-) delete mode 100644 playbooks/first-validator/README.md delete mode 100644 playbooks/validator/README.md diff --git a/README.md b/README.md index f6dae01..68e481a 100644 --- a/README.md +++ b/README.md @@ -2,25 +2,4 @@ - Follow [run-first-validator.md](docs/run-first-validator.md) to run the first validator node - Follow [run-validator.md](docs/run-validator.md) to run subsequent validator nodes - -### Other Dependencies - -- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) (for validator nodes) -- Keplr wallet extension (for multisig app) - -## Launch Laconic Mainnet - -- Run [playbook](./playbooks/first-validator/README.md) to use exported state for generating mainnet genesis, submit gentx and setup the node - - Generate the genesis file from testnet state - - Set up the first validator node - - Configure TMKMS for key management - - Verify testnet state transfer and token distribution - -- Run [playbook](./playbooks/validator/README.md) to start both validator nodes - - Set up additional validator nodes with different ports - - Configure TMKMS for each validator - - Create validators on the running chain - - Verify validator creation and participation - -- Deploy the Cosmos Multisig application using the [cosmos-multisig-app playbook](./playbooks/cosmos-multisig-app/README.md) +- Follow [cosmos-multisig-app playbook](./playbooks/cosmos-multisig-app/README.md) to run the Cosmos Multisig app diff --git a/playbooks/README.md b/playbooks/README.md index 1334a50..679dd14 100644 --- a/playbooks/README.md +++ b/playbooks/README.md @@ -40,65 +40,3 @@ ansible --version # ansible [core 2.17.2] ``` - -# Laconic Stack Playbooks - -This directory contains Ansible playbooks for setting up and managing various components of the Laconic stack. - -## Prerequisites - -- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) (for validator nodes) - - Install with `softsign` feature - ```bash - cargo install tmkms --features=softsign --version=0.14.0 - ``` -- testnet-state.json (exported testnet state) -- distribution.json (JSON containing the `lps_lockup` distribution) -- Keplr wallet extension (for multisig app) - -## Launch Laconic Mainnet - -- Begin by setting up the first validator node using the [first-validator playbook](first-validator/README.md) - - This playbook will: - - Generate the genesis file from testnet state - - Set up the first validator node - - Configure TMKMS for key management - - Verify testnet state transfer and token distribution - -- Once the first validator node is running, set up additional validators using the [validator playbook](validator/README.md) - - This playbook will: - - Set up additional validator nodes with different ports - - Configure TMKMS for each validator - - Create validators on the running chain - - Verify validator creation and participation - -- Deploy the Cosmos Multisig application using the [cosmos-multisig-app playbook](cosmos-multisig-app/README.md) - - This playbook will: - - Set up the multisig web interface - - Configure it to work with your validator nodes - - Enable multisig wallet creation and management - - Allow creation of multisig wallets with validator accounts - - Enable transaction signing and broadcasting - -## Common Environment Variables - -Most playbooks require these environment variables: - -```bash -export CWD=$(pwd) -export DATA_DIRECTORY=$CWD -``` - -Additional variables are documented in each playbook's README. - -## Cleanup - -To clean up all deployments: - -```bash -rm -rf *-spec.yml *-deployment tmkms-* output -``` diff --git a/playbooks/first-validator/README.md b/playbooks/first-validator/README.md deleted file mode 100644 index 01ffdc3..0000000 --- a/playbooks/first-validator/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# First Validator Setup - -This playbook sets up the first validator node for the Laconic mainnet chain. - -## Prerequisites - -- [ansible](../README.md#ansible-installation) -- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) - - Install with `softsign` feature - ```bash - cargo install tmkms --features=softsign --version=0.14.0 - ``` -- testnet-state.json (exported testnet state) -- distribution.json (JSON containing the `lps_lockup` distribution) - -## Setup Steps - -1. Copy the example variables file: - ```bash - cp first-validator-vars.example.yml first-validator-vars.yml - ``` - -2. Set environment variables: - ```bash - export CWD=$(pwd) - export DATA_DIRECTORY=$CWD - export MAINNET_DEPLOYMENT_DIR=mainnet-laconicd-deployment - export EXPORTED_STATE_PATH=$CWD/testnet-state.json - export LPS_DISTRIBUTION_PATH=$CWD/distribution.json - export EARLY_SUPPORTS_ACC_ADDR=laconic1gwytamfk3m5n0gsawh5vpwxkwd3vapmvzpp6nz - ``` - -3. Generate genesis file: - ```bash - ansible-playbook -v -i localhost, -c local generate-genesis.yml \ - -e "exported_state_path=$EXPORTED_STATE_PATH" \ - -e "lps_distribution_path=$LPS_DISTRIBUTION_PATH" \ - -e "early_supports_acc_address=$EARLY_SUPPORTS_ACC_ADDR" - ``` - -4. Update `first-validator-vars.yml` with your configuration: - ```yaml - pvt_key: - genesis_file: "$CWD/output/genesis.json" - staking_amount_file: "$CWD/output/staking-amount.json" - cerc_moniker: "LaconicMainnet" - key_name: "laconic-validator" - cerc_chain_id: "laconic-mainnet" - min_gas_price: 0.001 - cerc_loglevel: "info" - ``` - -5. Setup the first validator node: - ```bash - ansible-playbook -v -i localhost, -c local setup-first-validator.yml - ``` - -6. Setup TMKMS: - ```bash - # Initialize TMKMS - tmkms init ./tmkms-first-node - - # Create TMKMS config - cat > ./tmkms-first-node/tmkms.toml << EOL - [[chain]] - id = "laconic-mainnet" - key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } - state_file = "$CWD/tmkms-first-node/state/priv_validator_state.json" - - [[validator]] - chain_id = "laconic-mainnet" - addr = "tcp://localhost:26659" - secret_key = "$CWD/tmkms-first-node/secrets/kms-identity.key" - protocol_version = "v0.34" - reconnect = true - - [[providers.softsign]] - key_type = "consensus" - path = "$CWD/tmkms-first-node/secrets/priv_validator_key" - chain_ids = ["laconic-mainnet"] - EOL - - # Import validator key - tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-first-node/secrets/priv_validator_key - ``` - -7. Start TMKMS: - ```bash - tmkms start --config $CWD/tmkms-first-node/tmkms.toml - ``` - -8. Enable TMKMS and start the node: - ```bash - echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env - rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start - ``` - -## Verification - -1. Check node logs: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f - ``` - -2. Verify validator and TMKMS pubkeys match: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators -o json | jq .validators' - ``` - -3. Check bonds list: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bond list' - ``` - -4. Check token supply: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query bank total-supply' - ``` - -5. Check LPS lockup account: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query auth module-account lps_lockup' - ``` \ No newline at end of file diff --git a/playbooks/validator/README.md b/playbooks/validator/README.md deleted file mode 100644 index c8553b5..0000000 --- a/playbooks/validator/README.md +++ /dev/null @@ -1,135 +0,0 @@ -# Validator Setup - -This playbook sets up additional validator nodes for the Laconic mainnet chain. - -## Prerequisites - -- [ansible](../README.md#ansible-installation) -- [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- [tmkms](https://github.com/iqlusioninc/tmkms?tab=readme-ov-file#installation) - - Install with `softsign` feature - ```bash - cargo install tmkms --features=softsign --version=0.14.0 - ``` -- Running first validator node -- Private key of an account with balance - -## Configuration - -1. Copy the example variables file: - ```bash - cp validator-vars.example.yml validator-vars.yml - ``` - -2. Update `validator-vars.yml` with your configuration: - ```yaml - cerc_moniker: "LaconicMainnetNode-2" - cerc_peers: "@host.docker.internal:26656" # First validator node address - ``` - -3. Update port mappings in `templates/specs/spec-template.yml.j2` to avoid port conflicts: - ```yaml - network: - ports: - laconicd: - - '3060:6060' - - '36659:26659' - - '36657:26657' - - '36656:26656' - - '3473:9473' - - '3090:9090' - - '3317:1317' - ``` - -## Setup Steps - -1. Set environment variables: - ```bash - export CWD=$(pwd) - export DATA_DIRECTORY=$CWD - export MAINNET_DEPLOYMENT_DIR=mainnet-validator-deployment - ``` - -2. Setup validator node: - ```bash - ansible-playbook -v -i localhost, -c local setup-validator.yml - ``` - -3. Setup TMKMS: - ```bash - # Initialize TMKMS - tmkms init ./tmkms-second-node - - # Create TMKMS config - cat > ./tmkms-second-node/tmkms.toml << EOL - [[chain]] - id = "laconic-mainnet" - key_format = { type = "cosmos-json", account_key_prefix = "laconicpub", consensus_key_prefix = "laconicvalconspub" } - state_file = "$CWD/tmkms-second-node/state/priv_validator_state.json" - - [[validator]] - chain_id = "laconic-mainnet" - addr = "tcp://localhost:36659" - secret_key = "$CWD/tmkms-second-node/secrets/kms-identity.key" - protocol_version = "v0.34" - reconnect = true - - [[providers.softsign]] - key_type = "consensus" - path = "$CWD/tmkms-second-node/secrets/priv_validator_key" - chain_ids = ["laconic-mainnet"] - EOL - - # Import validator key - tmkms softsign import $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json $CWD/tmkms-second-node/secrets/priv_validator_key - ``` - -4. Start TMKMS: - ```bash - tmkms start --config $CWD/tmkms-second-node/tmkms.toml - ``` - -5. Enable TMKMS and start the node: - ```bash - echo "TMKMS_ENABLED=true" >> $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/config.env - rm $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR/data/laconicd-data/config/priv_validator_key.json - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR start - ``` - -## Create Validator - -1. Set required environment variables: - ```bash - export PVT_KEY= - export KEY_NAME=validator-2 - ``` - -2. Create validator on running chain: - ```bash - ansible-playbook -v -i localhost, -c local create-validator.yml - ``` - -## Verification - -1. Check node logs: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR logs laconicd -f - ``` - -2. Check validator list: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd 'laconicd query staking validators' - ``` - -## Clean up - -- To stop the deployment: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop - ``` - -- To stop and delete all data: - ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR stop --delete-volumes - sudo rm -rf $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR - ``` \ No newline at end of file -- 2.45.2 From 61d2a595a92cc0740b6c351ccdd985ed313d7aa0 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 17:01:47 +0530 Subject: [PATCH 19/21] Update READMEs --- README.md | 2 +- docs/demo.md | 5 ++++- playbooks/cosmos-multisig-app/README.md | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 68e481a..7e1229f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # laconicd-stack - Follow [run-first-validator.md](docs/run-first-validator.md) to run the first validator node -- Follow [run-validator.md](docs/run-validator.md) to run subsequent validator nodes - Follow [cosmos-multisig-app playbook](./playbooks/cosmos-multisig-app/README.md) to run the Cosmos Multisig app +- Follow [run-validator.md](docs/run-validator.md) to run subsequent validator nodes diff --git a/docs/demo.md b/docs/demo.md index 20deabc..d643a14 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -405,6 +405,9 @@ # Set network mode to host so that browser app and backend can use the same node localhost RPC URL export USE_HOST_NETWORK=host + + # Set local host URL for dgraph server + export DGRAPH_URL=http://localhost:8080/graphql ``` - Run playbook to setup cosmos multisig app @@ -436,7 +439,7 @@ - Copy your multisig address and send some funds to the address ``` - laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd "laconicd tx bank send validator-2 1000000alnt --fees 2000alnt --keyring-backend test" + laconic-so deployment --dir $DATA_DIRECTORY/$MAINNET_DEPLOYMENT_DIR exec laconicd "laconicd tx bank send validator-2 1000000alnt --fees 2000alnt --keyring-backend test" ``` ### Create and sign transaction diff --git a/playbooks/cosmos-multisig-app/README.md b/playbooks/cosmos-multisig-app/README.md index d065197..45bc128 100644 --- a/playbooks/cosmos-multisig-app/README.md +++ b/playbooks/cosmos-multisig-app/README.md @@ -6,18 +6,20 @@ This playbook sets up the Cosmos Multisig application for managing multisig wall - [ansible](../README.md#ansible-installation) - [laconic-so](https://github.com/cerc-io/stack-orchestrator/?tab=readme-ov-file#install) -- Running Laconic validator node +- [Running Laconic validator node](../../docs/run-validator.md) - Keplr wallet extension installed in browser ## Configuration * Copy the example variables file: ```bash + cd playbooks/cosmos-multisig-app cp cosmos-multisig-vars.example.yml cosmos-multisig-vars.yml ``` * Update `cosmos-multisig-vars.yml` with your node configuration: ```yaml + # TODO: Update with example domains mapped to ports next_public_node_addresses: node_rest_endpoint: ``` @@ -30,7 +32,6 @@ This playbook sets up the Cosmos Multisig application for managing multisig wall export DATA_DIRECTORY=$CWD export MULTISIG_DEPLOYMENT_DIR=cosmos-multisig-deployment export NETWORK_JSON_PATH=~/cerc/laconicd-stack/config/network.json - export USE_HOST_NETWORK=host ``` * Setup and start the multisig app: -- 2.45.2 From 51e8992f989e48b26330811e4a911436a5f13560 Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 17:44:31 +0530 Subject: [PATCH 20/21] Add instructions to fetch stack in README --- playbooks/cosmos-multisig-app/README.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/playbooks/cosmos-multisig-app/README.md b/playbooks/cosmos-multisig-app/README.md index 45bc128..064ceac 100644 --- a/playbooks/cosmos-multisig-app/README.md +++ b/playbooks/cosmos-multisig-app/README.md @@ -11,11 +11,17 @@ This playbook sets up the Cosmos Multisig application for managing multisig wall ## Configuration +* Fetch the stack: + + ```bash + laconic-so fetch-stack git.vdb.to/cerc-io/laconicd-stack --git-ssh --pull + ``` + * Copy the example variables file: - ```bash - cd playbooks/cosmos-multisig-app - cp cosmos-multisig-vars.example.yml cosmos-multisig-vars.yml - ``` + + ```bash + cp ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.example.yml ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-vars.yml + ``` * Update `cosmos-multisig-vars.yml` with your node configuration: ```yaml @@ -41,7 +47,6 @@ This playbook sets up the Cosmos Multisig application for managing multisig wall * Access the app at `http://localhost:3000/laconic` - ## Check Status * Check app logs: -- 2.45.2 From 23d21c27726e23bea1c9afd4093710c837de359b Mon Sep 17 00:00:00 2001 From: IshaVenikar Date: Wed, 28 May 2025 18:46:33 +0530 Subject: [PATCH 21/21] Update README with correct paths --- docs/demo.md | 2 +- playbooks/cosmos-multisig-app/README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/demo.md b/docs/demo.md index d643a14..464199c 100644 --- a/docs/demo.md +++ b/docs/demo.md @@ -419,7 +419,7 @@ - Check logs to ensure that the app is running: ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs laconicd -f + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs -f ``` - The app will be running on `http://localhost:3000/laconic` diff --git a/playbooks/cosmos-multisig-app/README.md b/playbooks/cosmos-multisig-app/README.md index 064ceac..1bbe6d7 100644 --- a/playbooks/cosmos-multisig-app/README.md +++ b/playbooks/cosmos-multisig-app/README.md @@ -42,7 +42,7 @@ This playbook sets up the Cosmos Multisig application for managing multisig wall * Setup and start the multisig app: ```bash - ansible-playbook -v -i localhost, -c local cosmos-multisig-app-start.yml + ansible-playbook -v -i localhost, -c local ~/cerc/laconicd-stack/playbooks/cosmos-multisig-app/cosmos-multisig-app-start.yml ``` * Access the app at `http://localhost:3000/laconic` @@ -51,7 +51,7 @@ This playbook sets up the Cosmos Multisig application for managing multisig wall * Check app logs: ```bash - laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs laconicd -f + laconic-so deployment --dir $DATA_DIRECTORY/$MULTISIG_DEPLOYMENT_DIR logs -f ``` ## Clean up -- 2.45.2