# laconic-faucet

Instructions for running the laconic faucet

## Setup

* Clone the stack repo:

  ```bash
  laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack
  ```

* Clone the laconic-faucet respository:

  ```bash
  laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-faucet setup-repositories
  ```

* Build the container image:

  ```bash
  laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-faucet build-containers
  ```

  This should create the `cerc/laconic-faucet` image locally

## Create a deployment

* Create a spec file for the deployment:

  ```bash
  laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-faucet deploy init --output laconic-faucet-spec.yml
  ```

* Edit `network` in the spec file to map container ports to host ports as required:

  ```bash
  network:
    ports:
      faucet:
        - '3000:3000'
  ```

* Create a deployment from the spec file:

  ```bash
  laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-faucet deploy create --spec-file laconic-faucet-spec.yml --deployment-dir laconic-faucet-deployment
  ```

## Configuration

* Inside the `laconic-faucet-deployment` deployment directory, open `config.env` file and set following env variables:

  ```bash
  # Private key of a funded faucet account
  CERC_FAUCET_KEY=

  # Optional

  # laconicd RPC endpoint (default: http://laconicd:26657)
  CERC_LACONICD_RPC_ENDPOINT=

  # laconicd chain id (default: laconic_9000-1)
  CERC_LACONICD_CHAIN_ID=

  # Amount of tokens to transfer on a single request (default: 1000000)
  CERC_TRANSFER_AMOUNT=

  # Transfer limit for an address within a period (default: 3000000)
  CERC_PERIOD_TRANSFER_LIMIT=
  ```

## Start the deployment

  ```bash
  laconic-so deployment --dir laconic-faucet-deployment start
  ```

## Check status

* To list down and monitor the running container:

  ```bash
  # With status
  docker ps

  # Check logs for a container
  docker logs -f <CONTAINER_ID>
  ```

## Run

* Request tokens from the faucet for an account:

  ```bash
  curl -X POST http://localhost:3000/faucet \
    -H "Content-Type: application/json" \
    -d '{"address": "<laconicd_address>"}'

  # Expected output:
  # {"success":true,"txHash":"<tx_hash>"}
  ```

## Clean up

* Stop the `laconic-faucet` service running in the background:

  ```bash
  # Stop the docker container
  laconic-so deployment --dir laconic-faucet-deployment stop
  ```

* To stop the service and also delete data:

  ```bash
  # Stop the docker containers
  laconic-so deployment --dir laconic-faucet-deployment stop --delete-volumes

  # Remove deployment directory (deployment will have to be recreated for a re-run)
  rm -r laconic-faucet-deployment
  ```
