Add a laconic-faucet stack (#7)

Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Co-authored-by: Adw8 <adwaitgharpure@gmail.com>
Reviewed-on: cerc-io/testnet-laconicd-stack#7
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
This commit is contained in:
2024-07-18 14:45:01 +00:00
committed by nabarun
co-authored by Adw8
parent 38931b95b1
commit 29b2ce2927
9 changed files with 324 additions and 58 deletions
@@ -0,0 +1,121 @@
# 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:
laconic-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
```
@@ -0,0 +1,9 @@
version: "1.0"
name: laconic-faucet
description: "Faucet for laconicd"
repos:
- git.vdb.to/cerc-io/laconic-faucet
containers:
- cerc/laconic-faucet
pods:
- laconic-faucet
@@ -28,7 +28,7 @@ Instructions for running a laconicd testnet full node and joining as a validator
# laconicd
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/testnet-laconicd setup-repositories
# laocnic cli and console
# laconic cli and console
laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-console setup-repositories
```