diff --git a/stack-orchestrator/stacks/testnet-laconicd/README.md b/stack-orchestrator/stacks/testnet-laconicd/README.md
index a29b273..78e7560 100644
--- a/stack-orchestrator/stacks/testnet-laconicd/README.md
+++ b/stack-orchestrator/stacks/testnet-laconicd/README.md
@@ -12,40 +12,7 @@ Instructions for running a laconicd testnet full node and joining as a validator
CPU: 2 cores
```
-* Testnet genesis file and peer node address
-
-* Mnemonic from the [wallet](https://wallet.laconic.com)
-
-### Participant Onboarded
-
-* Visit and click on `Create wallet`
- * Save the mnemonic for further usage
-
-* Register your laconic address as a participant using the [Onboarding App](https://loro-signup.laconic.com/)
-
- * Read and accept the `Terms and Conditions`
-
- * Connect testnet-onboarding app to the wallet:
-
- * Click on `CONNECT WALLET` button on the testnet-onboarding app
-
- * Click on the WalletConnect icon on the top right corner in the wallet
-
- * If using the wallet website, enter WalletConnect URI for pairing
-
- * In the onboarding app, choose your nitro and laconicd account to onboard
-
- * Sign using the nitro key
-
- * Approve sign request on Wallet
-
- * Select the desired participant role (`Validator` or `Participant`) and accept the onboarding terms and conditions
-
- * In the next step, fund your laconic account by clicking on the `REQUEST TOKENS FROM FAUCET` button; ensure that the displayed balance is updated
-
- * Send transaction request to the wallet
-
- * From wallet, approve and send transaction to laconicd chain
+* Testnet genesis file (file or an URL) and peer node addresses
## Setup
@@ -58,20 +25,31 @@ Instructions for running a laconicd testnet full node and joining as a validator
* Clone required repositories:
```bash
+ # laconicd
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd setup-repositories --pull
+ # laconic cli and console
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console setup-repositories --pull
+
# If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories and re-run the command
```
* Build the container images:
```bash
+ # laconicd
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd build-containers
+
+ # laconic cli and console
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console build-containers
```
This should create the following docker images locally:
* `cerc/laconicd`
+ * `cerc/laconic-registry-cli`
+ * `cerc/webapp-base`
+ * `cerc/laconic-console-host`
## Create a deployment
@@ -79,9 +57,11 @@ Instructions for running a laconicd testnet full node and joining as a validator
```bash
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd deploy init --output testnet-laconicd-spec.yml
+
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console deploy init --output laconic-console-spec.yml
```
-* Edit `network` in the spec file to map container ports to host ports as required:
+* Edit `network` in both the spec files to map container ports to host ports as required:
```bash
# testnet-laconicd-spec.yml
@@ -95,12 +75,24 @@ Instructions for running a laconicd testnet full node and joining as a validator
- '9473:9473'
- '9090:9090'
- '1317:1317'
+
+ # laconic-console-spec.yml
+ ...
+ network:
+ ports:
+ console:
+ - '8080:80'
```
-* Create the deployment from the spec file:
+* Create deployments from the spec files:
```bash
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd deploy create --spec-file testnet-laconicd-spec.yml --deployment-dir testnet-laconicd-deployment
+
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console deploy create --spec-file laconic-console-spec.yml --deployment-dir laconic-console-deployment
+
+ # Place them both in the same namespace (cluster)
+ cp testnet-laconicd-deployment/deployment.yml laconic-console-deployment/deployment.yml
```
* Copy over the published testnet genesis file (`.json`) to data directory in deployment (`testnet-laconicd-deployment/data/laconicd-data/tmp`):
@@ -117,18 +109,56 @@ Instructions for running a laconicd testnet full node and joining as a validator
```bash
# Comma separated list of nodes to keep persistent connections to
- # Example: "node-1-id@laconicd.laconic.com:26656"
- # Use the provided node id
+ # Example: "node-1-id@node-1-host:26656,node-2-id@node-2-host:26656"
CERC_PEERS=""
+ # Optional
+
# A custom human readable name for this node (default: TestnetNode)
CERC_MONIKER=
+
+ # Network chain ID (default: laconic_9000-1)
+ CERC_CHAIN_ID=
+
+ # Output log level (default: info)
+ CERC_LOGLEVEL=
```
-## Start the deployment
+* Inside the `laconic-console-deployment` deployment directory, open `config.env` file and set following env variables:
+
+ ```bash
+ # All optional
+
+ # CLI configuration
+
+ # laconicd chain id (default: laconic_9000-1)
+ CERC_LACONICD_CHAIN_ID=
+
+ # laconicd user private key for txs
+ CERC_LACONICD_USER_KEY=
+
+ # laconicd bond id for txs
+ CERC_LACONICD_BOND_ID=
+
+ # Gas limit for txs (default: 200000)
+ CERC_LACONICD_GAS=
+
+ # Max fees for txs (default: 200000alnt)
+ CERC_LACONICD_FEES=
+
+ # Console configuration
+
+ # Laconicd (hosted) GQL endpoint (default: http://localhost:9473)
+ LACONIC_HOSTED_ENDPOINT=
+ ```
+
+ Note: Use `host.docker.internal` as host to access ports on the host machine
+
+## Start the deployments
```bash
laconic-so deployment --dir testnet-laconicd-deployment start
+laconic-so deployment --dir laconic-console-deployment start
```
## Check status
@@ -151,21 +181,34 @@ laconic-so deployment --dir testnet-laconicd-deployment start
# `catching_up: false` indicates that node is completely synced
```
-## Join as testnet validator
+* View the laconic console at
-* Import a key pair:
+* Use the cli service for registry CLI operations:
```bash
- KEY_NAME=alice
+ # Example
+ laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry status"
+ ```
+## Join as testnet validator
+
+* Create / import a new key pair:
+
+ ```bash
+ # Create new keypair
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys add "
+
+ # OR
# Restore existing key with mnemonic seed phrase
# You will be prompted to enter mnemonic seed
- laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys add $KEY_NAME --recover"
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys add --recover"
# Query the keystore for your account's address
- laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys show $KEY_NAME -a"
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys show -a"
```
+* Request tokens from the testnet faucet for your account if required
+
* Check balance for your account:
```bash
@@ -179,10 +222,10 @@ laconic-so deployment --dir testnet-laconicd-deployment start
# Edit the staking amount and other fields as required
# Replace with your node's moniker in command below
- laconic-so deployment --dir testnet-laconicd-deployment exec laconicd 'cat < -validator.json
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd 'cat < my-validator.json
{
"pubkey": $(laconicd cometbft show-validator),
- "amount": "1000000000000000alnt",
+ "amount": "900000000alnt",
"moniker": "",
"commission-rate": "0.1",
"commission-max-rate": "0.2",
@@ -195,10 +238,10 @@ laconic-so deployment --dir testnet-laconicd-deployment start
* Create a validator:
```bash
- laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd tx staking create-validator -validator.json \
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd 'laconicd tx staking create-validator my-validator.json \
--fees 500000alnt \
--chain-id=laconic_9000-1 \
- --from $KEY_NAME"
+ --from '
```
* View staking validators:
@@ -209,10 +252,32 @@ laconic-so deployment --dir testnet-laconicd-deployment start
* Check that in the list of validators `` exists
-* View validator set:
+## Perform operations
+
+* To perform txs against the chain using registry CLI, set your private key in config in the CLI container:
```bash
- laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd query consensus comet validator-set"
+ # (Optional) Get the PK from your node
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys export --unarmored-hex --unsafe"
+
+ # Set your PK as 'userKey' in the config file
+ laconic-so deployment --dir laconic-console-deployment exec cli "nano config.yml"
+
+ # services:
+ # registry:
+ # ...
+ # userKey:
+ # ...
+
+ # Note: any changes made to the config will be lost when the cli Docker container is brought down
+ # So set / update the values in 'laconic-console-deployment/config.env' accordingly before restarting
+ ```
+
+* Adjust / set other config values (`bondId`, `gas`, `fees`) as required and perform txs:
+
+ ```bash
+ # Example
+ laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry bond create --type photon --quantity 1000000000000"
```
## Clean up
@@ -233,3 +298,5 @@ laconic-so deployment --dir testnet-laconicd-deployment start
# Remove deployment directory (deployment will have to be recreated for a re-run)
rm -r testnet-laconicd-deployment
```
+
+* For `laconic-console`, see [laconic-console clean up](../laconic-console/README.md#clean-up)
diff --git a/testnet-onboarding-validator.md b/testnet-onboarding-validator.md
new file mode 100644
index 0000000..50a0b60
--- /dev/null
+++ b/testnet-onboarding-validator.md
@@ -0,0 +1,245 @@
+# testnet-onboarding-validator
+
+## Onboard as a participant / validator on stage0
+
+* Visit and click on `Create wallet`
+ * Save the mnemonic for further usage
+
+* Register your laconic address as a participant using the [Onboarding App](https://loro-signup.laconic.com/)
+
+ * Read and accept the `Terms and Conditions`
+
+ * Connect testnet-onboarding app to the wallet:
+
+ * Click on `CONNECT WALLET` button on the testnet-onboarding app
+
+ * Click on the WalletConnect icon on the top right corner in the wallet
+
+ * If using the wallet website, enter WalletConnect URI for pairing
+
+ * In the onboarding app, choose your nitro and laconicd account to onboard
+
+ * Sign using the nitro key
+
+ * Approve sign request on Wallet
+
+ * Select the desired participant role (`Validator` or `Participant`) and accept the onboarding terms and conditions
+
+ * In the next step, fund your laconic account by clicking on the `REQUEST TOKENS FROM FAUCET` button; ensure that the displayed balance is updated
+
+ * Send transaction request to the wallet
+
+ * From wallet, approve and send transaction to laconicd chain
+
+## Join as a validator on stage1
+
+### Prerequisites
+
+* Minimum hardware requirements:
+
+ ```bash
+ RAM: 8-16GB
+ Disk space: 200GB
+ CPU: 2 cores
+ ```
+
+* Testnet genesis file and peer node address
+
+* Mnemonic from the [wallet](https://wallet.laconic.com)
+
+* Participant onboarded on stage0
+
+### Setup
+
+* Clone the stack repo:
+
+ ```bash
+ laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack
+ ```
+
+* Clone required repositories:
+
+ ```bash
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd setup-repositories --pull
+
+ # If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories and re-run the command
+ ```
+
+* Build the container images:
+
+ ```bash
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd build-containers
+ ```
+
+ This should create the following docker images locally:
+
+ * `cerc/laconicd`
+
+### Create a deployment
+
+* Create a spec file for the deployment:
+
+ ```bash
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd deploy init --output testnet-laconicd-spec.yml
+ ```
+
+* Edit `network` in the spec file to map container ports to host ports as required:
+
+ ```bash
+ # testnet-laconicd-spec.yml
+ ...
+ network:
+ ports:
+ laconicd:
+ - '6060:6060'
+ - '26657:26657'
+ - '26656:26656'
+ - '9473:9473'
+ - '9090:9090'
+ - '1317:1317'
+ ```
+
+* Create the deployment from the spec file:
+
+ ```bash
+ laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd deploy create --spec-file testnet-laconicd-spec.yml --deployment-dir testnet-laconicd-deployment
+ ```
+
+* Copy over the published testnet genesis file (`.json`) to data directory in deployment (`testnet-laconicd-deployment/data/laconicd-data/tmp`):
+
+ ```bash
+ # Example
+ mkdir -p testnet-laconicd-deployment/data/laconicd-data/tmp
+ cp genesis.json testnet-laconicd-deployment/data/laconicd-data/tmp/genesis.json
+ ```
+
+### Configuration
+
+* Inside the `testnet-laconicd-deployment` deployment directory, open `config.env` file and set following env variables:
+
+ ```bash
+ # Comma separated list of nodes to keep persistent connections to
+ # Example: "node-1-id@laconicd.laconic.com:26656"
+ # Use the provided node id
+ CERC_PEERS=""
+
+ # A custom human readable name for this node (default: TestnetNode)
+ CERC_MONIKER=
+ ```
+
+### Start the deployment
+
+```bash
+laconic-so deployment --dir testnet-laconicd-deployment start
+```
+
+### Check status
+
+* To list down and monitor the running containers:
+
+ ```bash
+ # With status
+ docker ps -a
+
+ # Follow logs for laconicd container
+ laconic-so deployment --dir testnet-laconicd-deployment logs laconicd -f
+ ```
+
+* Check the sync status of your node:
+
+ ```bash
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd status | jq .sync_info"
+
+ # `catching_up: false` indicates that node is completely synced
+ ```
+
+* After the node has caught up, view current list of staking validators:
+
+ ```bash
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd query staking validators"
+ ```
+
+ * Confirm that in the list of validators, your node moniker does not exist
+
+### Join as testnet validator
+
+* Import a key pair:
+
+ ```bash
+ KEY_NAME=alice
+
+ # Restore existing key with mnemonic seed phrase
+ # You will be prompted to enter mnemonic seed
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys add $KEY_NAME --recover"
+
+ # Query the keystore for your account's address
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd keys show $KEY_NAME -a"
+ ```
+
+* Check balance for your account:
+
+ ```bash
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd query bank balances "
+ ```
+
+* Create required validator configuration:
+
+ ```bash
+ # Note:
+ # Edit the staking amount and other fields as required
+ # Replace with your node's moniker in command below
+
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd 'cat < my-validator.json
+ {
+ "pubkey": $(laconicd cometbft show-validator),
+ "amount": "1000000000000000alnt",
+ "moniker": "",
+ "commission-rate": "0.1",
+ "commission-max-rate": "0.2",
+ "commission-max-change-rate": "0.01",
+ "min-self-delegation": "1"
+ }
+ EOF'
+ ```
+
+* Create a validator:
+
+ ```bash
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd tx staking create-validator my-validator.json \
+ --fees 500000alnt \
+ --chain-id=laconic_9000-1 \
+ --from $KEY_NAME"
+ ```
+
+* View staking validators:
+
+ ```bash
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd query staking validators"
+ ```
+
+ * Check that in the list of validators `` exists
+
+* View validator set:
+
+ ```bash
+ laconic-so deployment --dir testnet-laconicd-deployment exec laconicd "laconicd query consensus comet validator-set"
+ ```
+
+### Clean up
+
+* Stop all `testnet-laconicd` services running in the background:
+
+ ```bash
+ # Stop the docker containers
+ laconic-so deployment --dir testnet-laconicd-deployment stop
+ ```
+
+* To stop all services and also delete data:
+
+ ```bash
+ # Stop the docker containers
+ laconic-so deployment --dir testnet-laconicd-deployment stop --delete-volumes
+
+ # Remove deployment directory (deployment will have to be recreated for a re-run)
+ rm -r testnet-laconicd-deployment
+ ```