-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a sushiswap-v3 watcher stack (#638)
* Add a sushiswap-v3 watcher stack * Add services for watcher db and server * Add service for watcher job-runner * Use 0.0.0.0 for watcher server config --------- Co-authored-by: Nabarun <[email protected]>
- Loading branch information
1 parent
414b887
commit 95e881b
Showing
8 changed files
with
308 additions
and
0 deletions.
There are no files selected for viewing
77 changes: 77 additions & 0 deletions
77
stack_orchestrator/data/compose/docker-compose-watcher-sushiswap-v3.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
version: '3.2' | ||
|
||
services: | ||
sushiswap-v3-watcher-db: | ||
restart: unless-stopped | ||
image: postgres:14-alpine | ||
environment: | ||
- POSTGRES_USER=vdbm | ||
- POSTGRES_MULTIPLE_DATABASES=sushiswap-v3-watcher,sushiswap-v3-watcher-job-queue | ||
- POSTGRES_EXTENSION=sushiswap-v3-watcher-job-queue:pgcrypto | ||
- POSTGRES_PASSWORD=password | ||
volumes: | ||
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh | ||
- sushiswap_v3_watcher_db_data:/var/lib/postgresql/data | ||
ports: | ||
- "127.0.0.1:15432:5432" | ||
healthcheck: | ||
test: ["CMD", "nc", "-v", "localhost", "5432"] | ||
interval: 20s | ||
timeout: 5s | ||
retries: 15 | ||
start_period: 10s | ||
|
||
sushiswap-v3-watcher-job-runner: | ||
restart: unless-stopped | ||
depends_on: | ||
sushiswap-v3-watcher-db: | ||
condition: service_healthy | ||
image: cerc/watcher-sushiswap-v3:local | ||
environment: | ||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} | ||
CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} | ||
command: ["bash", "./start-job-runner.sh"] | ||
volumes: | ||
- ../config/watcher-sushiswap-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml | ||
- ../config/watcher-sushiswap-v3/start-job-runner.sh:/app/start-job-runner.sh | ||
ports: | ||
- "127.0.0.1:9000:9000" | ||
healthcheck: | ||
test: ["CMD", "nc", "-v", "localhost", "9000"] | ||
interval: 20s | ||
timeout: 5s | ||
retries: 15 | ||
start_period: 5s | ||
extra_hosts: | ||
- "host.docker.internal:host-gateway" | ||
|
||
sushiswap-v3-watcher-server: | ||
restart: unless-stopped | ||
depends_on: | ||
sushiswap-v3-watcher-db: | ||
condition: service_healthy | ||
sushiswap-v3-watcher-job-runner: | ||
condition: service_healthy | ||
image: cerc/watcher-sushiswap-v3:local | ||
environment: | ||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} | ||
CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} | ||
SUSHISWAP_START_BLOCK: ${SUSHISWAP_START_BLOCK:- 2867560} | ||
command: ["bash", "./start-server.sh"] | ||
volumes: | ||
- ../config/watcher-sushiswap-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml | ||
- ../config/watcher-sushiswap-v3/start-server.sh:/app/start-server.sh | ||
ports: | ||
- "127.0.0.1:3008:3008" | ||
- "127.0.0.1:9001:9001" | ||
healthcheck: | ||
test: ["CMD", "nc", "-v", "localhost", "3008"] | ||
interval: 20s | ||
timeout: 5s | ||
retries: 15 | ||
start_period: 5s | ||
extra_hosts: | ||
- "host.docker.internal:host-gateway" | ||
|
||
volumes: | ||
sushiswap_v3_watcher_db_data: |
20 changes: 20 additions & 0 deletions
20
stack_orchestrator/data/config/watcher-sushiswap-v3/start-job-runner.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/bin/sh | ||
|
||
set -e | ||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then | ||
set -x | ||
fi | ||
set -u | ||
|
||
echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" | ||
|
||
# Read in the config template TOML file and modify it | ||
WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) | ||
WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ | ||
sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") | ||
|
||
# Write the modified content to a new file | ||
echo "$WATCHER_CONFIG" > environments/local.toml | ||
|
||
echo "Running job-runner..." | ||
DEBUG=vulcanize:* exec node --enable-source-maps dist/job-runner.js |
23 changes: 23 additions & 0 deletions
23
stack_orchestrator/data/config/watcher-sushiswap-v3/start-server.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/sh | ||
|
||
set -e | ||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then | ||
set -x | ||
fi | ||
set -u | ||
|
||
echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" | ||
|
||
# Read in the config template TOML file and modify it | ||
WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) | ||
WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ | ||
sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") | ||
|
||
# Write the modified content to a new file | ||
echo "$WATCHER_CONFIG" > environments/local.toml | ||
|
||
echo "Initializing watcher..." | ||
yarn fill --start-block $SUSHISWAP_START_BLOCK --end-block $((SUSHISWAP_START_BLOCK + 1)) | ||
|
||
echo "Running server..." | ||
DEBUG=vulcanize:* exec node --enable-source-maps dist/server.js |
98 changes: 98 additions & 0 deletions
98
stack_orchestrator/data/config/watcher-sushiswap-v3/watcher-config-template.toml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
[server] | ||
host = "0.0.0.0" | ||
port = 3008 | ||
kind = "active" | ||
|
||
# Checkpointing state. | ||
checkpointing = true | ||
|
||
# Checkpoint interval in number of blocks. | ||
checkpointInterval = 2000 | ||
|
||
# Enable state creation | ||
# CAUTION: Disable only if state creation is not desired or can be filled subsequently | ||
enableState = false | ||
|
||
subgraphPath = "./subgraph-build" | ||
|
||
# Interval to restart wasm instance periodically | ||
wasmRestartBlocksInterval = 20 | ||
|
||
# Interval in number of blocks at which to clear entities cache. | ||
clearEntitiesCacheInterval = 1000 | ||
|
||
# Max block range for which to return events in eventsInRange GQL query. | ||
# Use -1 for skipping check on block range. | ||
maxEventsBlockRange = 1000 | ||
|
||
# Flag to specify whether RPC endpoint supports block hash as block tag parameter | ||
rpcSupportsBlockHashParam = false | ||
|
||
# GQL cache settings | ||
[server.gqlCache] | ||
enabled = true | ||
|
||
# Max in-memory cache size (in bytes) (default 8 MB) | ||
# maxCacheSize | ||
|
||
# GQL cache-control max-age settings (in seconds) | ||
maxAge = 15 | ||
timeTravelMaxAge = 86400 # 1 day | ||
|
||
[metrics] | ||
host = "127.0.0.1" | ||
port = 9000 | ||
[metrics.gql] | ||
port = 9001 | ||
|
||
[database] | ||
type = "postgres" | ||
host = "sushiswap-v3-watcher-db" | ||
port = 5432 | ||
database = "sushiswap-v3-watcher" | ||
username = "vdbm" | ||
password = "password" | ||
synchronize = true | ||
logging = false | ||
|
||
[upstream] | ||
[upstream.ethServer] | ||
rpcProviderEndpoint = "REPLACE_WITH_CERC_ETH_RPC_ENDPOINT" | ||
|
||
# Boolean flag to specify if rpc-eth-client should be used for RPC endpoint instead of ipld-eth-client (ipld-eth-server GQL client) | ||
rpcClient = true | ||
|
||
# Boolean flag to specify if rpcProviderEndpoint is an FEVM RPC endpoint | ||
isFEVM = true | ||
|
||
# Boolean flag to filter event logs by contracts | ||
filterLogsByAddresses = true | ||
# Boolean flag to filter event logs by topics | ||
filterLogsByTopics = true | ||
|
||
[upstream.cache] | ||
name = "requests" | ||
enabled = false | ||
deleteOnStart = false | ||
|
||
[jobQueue] | ||
dbConnectionString = "postgres://vdbm:password@sushiswap-v3-watcher-db/sushiswap-v3-watcher-job-queue" | ||
maxCompletionLagInSecs = 300 | ||
jobDelayInMilliSecs = 100 | ||
eventsInBatch = 50 | ||
subgraphEventsOrder = true | ||
blockDelayInMilliSecs = 2000 | ||
prefetchBlocksInMem = false | ||
prefetchBlockCount = 10 | ||
|
||
# Boolean to switch between modes of processing events when starting the server. | ||
# Setting to true will fetch filtered events and required blocks in a range of blocks and then process them. | ||
# Setting to false will fetch blocks consecutively with its events and then process them (Behaviour is followed in realtime processing near head). | ||
useBlockRanges = true | ||
|
||
# Block range in which logs are fetched during historical blocks processing | ||
historicalLogsBlockRange = 2000 | ||
|
||
# Max block range of historical processing after which it waits for completion of events processing | ||
# If set to -1 historical processing does not wait for events processing and completes till latest canonical block | ||
historicalMaxFetchAhead = 10000 |
10 changes: 10 additions & 0 deletions
10
stack_orchestrator/data/container-build/cerc-watcher-sushiswap-v3/Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
FROM node:18.17.1-alpine3.18 | ||
|
||
RUN apk --update --no-cache add git python3 alpine-sdk bash curl jq | ||
|
||
WORKDIR /app | ||
|
||
COPY . . | ||
|
||
RUN echo "Installing dependencies and building sushiswap-v3-watcher-ts" && \ | ||
yarn && yarn build |
9 changes: 9 additions & 0 deletions
9
stack_orchestrator/data/container-build/cerc-watcher-sushiswap-v3/build.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#!/usr/bin/env bash | ||
# Build cerc/watcher-sushiswap-v3 | ||
|
||
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh | ||
|
||
# See: https://stackoverflow.com/a/246128/1701505 | ||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) | ||
|
||
docker build -t cerc/watcher-sushiswap-v3:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/sushiswap-v3-watcher-ts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# SushiSwap v3 Watcher | ||
|
||
## Setup | ||
|
||
Clone required repositories: | ||
|
||
```bash | ||
laconic-so --stack sushiswap-v3 setup-repositories --git-ssh --pull | ||
``` | ||
|
||
Build the container images: | ||
|
||
```bash | ||
laconic-so --stack sushiswap-v3 build-containers | ||
``` | ||
|
||
## Deploy | ||
|
||
### Configuration | ||
|
||
Create and update an env file to be used in the next step: | ||
|
||
```bash | ||
# External Filecoin (ETH RPC) endpoint to point the watcher | ||
CERC_ETH_RPC_ENDPOINT= | ||
``` | ||
|
||
### Deploy the stack | ||
|
||
```bash | ||
laconic-so --stack sushiswap-v3 deploy --cluster sushiswap_v3 --env-file <PATH_TO_ENV_FILE> up | ||
``` | ||
|
||
* To list down and monitor the running containers: | ||
|
||
```bash | ||
laconic-so --stack sushiswap-v3 deploy --cluster sushiswap_v3 ps | ||
|
||
# With status | ||
docker ps -a | ||
|
||
# Check logs for a container | ||
docker logs -f <CONTAINER_ID> | ||
``` | ||
|
||
## Clean up | ||
|
||
Stop all the services running in background: | ||
|
||
```bash | ||
laconic-so --stack sushiswap-v3 deploy --cluster sushiswap_v3 down | ||
``` | ||
|
||
Clear volumes created by this stack: | ||
|
||
```bash | ||
# List all relevant volumes | ||
docker volume ls -q --filter "name=sushiswap_v3" | ||
|
||
# Remove all the listed volumes | ||
docker volume rm $(docker volume ls -q --filter "name=sushiswap_v3") | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
version: "1.0" | ||
name: sushiswap-v3 | ||
description: "SushiSwap v3 watcher stack" | ||
repos: | ||
- github.com/cerc-io/[email protected] | ||
containers: | ||
- cerc/watcher-sushiswap-v3 | ||
pods: | ||
- watcher-sushiswap-v3 |