# fixturenet-laconicd-stack Instructions for running a laconicd fixturenet along with registry CLI and console ## Setup * Clone the stack repos: ```bash laconic-so fetch-stack git.vdb.to/cerc-io/fixturenet-laconicd-stack laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack ``` * Clone required repositories: ```bash # laconicd laconic-so --stack ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd setup-repositories # laconic cli and console laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console setup-repositories ``` * Build the container images: ```bash # laconicd laconic-so --stack ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-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 * Create spec files for the deployment: ```bash laconic-so --stack ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd deploy init --output fixturenet-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: ```bash # fixturenet-laconicd-spec.yml ... network: ports: laconicd: - '6060:6060' - '26657:26657' - '26656:26656' - '9473:9473' - '9090:9090' - '1317:1317' # laconic-console-spec.yml ... network: ports: console: - '8080:80' ``` * Create deployment from the spec files: ```bash laconic-so --stack ~/cerc/fixturenet-laconicd-stack/stack-orchestrator/stacks/fixturenet-laconicd deploy create --spec-file fixturenet-laconicd-spec.yml --deployment-dir fixturenet-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 fixturenet-laconicd-deployment/deployment.yml laconic-console-deployment/deployment.yml ``` * (Optional) Copy over an existing genesis file (`.json`) to data directory in deployment (`fixturenet-laconicd-deployment/data/genesis-config`): ```bash # Example cp genesis.json fixturenet-laconicd-deployment/data/genesis-config/genesis.json ``` ## Configuration * Inside the `fixturenet-laconicd-deployment` deployment directory, open `config.env` file and set the following env variable: ```bash # Optional # Set to true to enable adding participants functionality of the onboarding module (default: false) ONBOARDING_ENABLED= # Staking amount to use for the default validator account (default: 1000000000000000) STAKING_AMOUNT= # Enable authority auctions (default: false) AUTHORITY_AUCTION_ENABLED=true # Authority auctions commits duration (in secs) (default: 24hrs) AUTHORITY_AUCTION_COMMITS_DURATION=3600 # Authority auctions reveals duration (in secs) (default: 24hrs) AUTHORITY_AUCTION_REVEALS_DURATION=3600 # Authority grace period (set bond to authority within this) (in secs) (default: 2 * 24hrs) AUTHORITY_GRACE_PERIOD=7200 # Node moniker (default: "localtestnet") MONIKER= # Chain ID of the network (default: "laconic_9000-1") CHAINID= ``` * Inside the `laconic-console-deployment` deployment directory, open `config.env` file and set following env variables: ```bash # Optional CLI configuration # 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= ``` ## Start the deployment ```bash laconic-so deployment --dir fixturenet-laconicd-deployment start laconic-so deployment --dir laconic-console-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 fixturenet-laconicd-deployment logs laconicd -f ``` * View the laconic console at * Use the cli service for registry CLI operations: ```bash # Example laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry status" ``` ## Perform operations * Example (bond creation): ```bash # Get the PK from your node ALICE_PK=$(echo y | laconic-so deployment --dir fixturenet-laconicd-deployment exec laconicd "laconicd keys export alice --unarmored-hex --unsafe") # Create a bond: laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry bond create --type alnt --quantity 1000000000000 --user-key $ALICE_PK" | jq -r '.bondId' ``` ## Demo * Follow the [records-demo](./records-demo.md) to try loading data into registry ## Clean up * Stop all services running in the background: ```bash # Stop the docker containers laconic-so deployment --dir fixturenet-laconicd-deployment stop ``` * To stop all services and also delete data: ```bash # Stop the docker containers laconic-so deployment --dir fixturenet-laconicd-deployment stop --delete-volumes # Remove deployment directory (deployment will have to be recreated for a re-run) sudo rm -r fixturenet-laconicd-deployment ```