Add ability to run mobymask-v2 stack with external optimism endpoint #279
@ -55,7 +55,7 @@ services:
|
|||||||
entrypoint: "sh"
|
entrypoint: "sh"
|
||||||
command: "/run-op-geth.sh"
|
command: "/run-op-geth.sh"
|
||||||
ports:
|
ports:
|
||||||
- "8545"
|
- "0.0.0.0:8545:8545"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-vz", "localhost:8545"]
|
test: ["CMD", "nc", "-vz", "localhost:8545"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
@ -77,7 +77,7 @@ services:
|
|||||||
- l2_accounts:/l2-accounts:ro
|
- l2_accounts:/l2-accounts:ro
|
||||||
command: ["sh", "/app/run-op-node.sh"]
|
command: ["sh", "/app/run-op-node.sh"]
|
||||||
ports:
|
ports:
|
||||||
- "8547"
|
- "0.0.0.0:8547:8547"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-vz", "localhost:8547"]
|
test: ["CMD", "nc", "-vz", "localhost:8547"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
version: "3.2"
|
|
||||||
|
|
||||||
services:
|
|
||||||
laconicd:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: cerc/laconicd:local
|
|
||||||
command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/fixturenet-laconicd/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh
|
|
||||||
ports:
|
|
||||||
- "9473"
|
|
||||||
- "8545"
|
|
||||||
- "8546"
|
|
||||||
- "1317"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "8545"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 10s
|
|
||||||
|
|
||||||
networks:
|
|
||||||
# https://docs.docker.com/compose/networking/#configure-the-default-network
|
|
||||||
default:
|
|
||||||
name: mobymask-v2-network
|
|
@ -22,45 +22,40 @@ services:
|
|||||||
start_period: 10s
|
start_period: 10s
|
||||||
|
|
||||||
mobymask:
|
mobymask:
|
||||||
restart: unless-stopped
|
|
||||||
image: cerc/mobymask:local
|
image: cerc/mobymask:local
|
||||||
working_dir: /app/packages/server
|
working_dir: /app/packages/server
|
||||||
depends_on:
|
env_file:
|
||||||
op-node:
|
- ../config/watcher-mobymask-v2/optimism-params.env
|
||||||
condition: service_healthy
|
|
||||||
op-geth:
|
|
||||||
condition: service_healthy
|
|
||||||
# TODO: Configure env file for ETH RPC URL & private key
|
|
||||||
environment:
|
environment:
|
||||||
- ENV=PROD
|
- ENV=PROD
|
||||||
command: ["sh", "./deploy-and-generate-invite.sh"]
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
./wait-for-it.sh -h $${L2_GETH_HOST} -p $${L2_GETH_PORT} -s -t 0 && \
|
||||||
|
./wait-for-it.sh -h $${L2_NODE_HOST} -p $${L2_NODE_PORT} -s -t 0 && \
|
||||||
|
./deploy-and-generate-invite.sh
|
||||||
volumes:
|
volumes:
|
||||||
# TODO: add a script to set RPC endpoint from env
|
- ../config/wait-for-it.sh:/app/packages/server/wait-for-it.sh
|
||||||
# add manually if running seperately
|
|
||||||
- ../config/watcher-mobymask-v2/secrets-template.json:/app/packages/server/secrets-template.json
|
- ../config/watcher-mobymask-v2/secrets-template.json:/app/packages/server/secrets-template.json
|
||||||
- ../config/watcher-mobymask-v2/deploy-and-generate-invite.sh:/app/packages/server/deploy-and-generate-invite.sh
|
- ../config/watcher-mobymask-v2/deploy-and-generate-invite.sh:/app/packages/server/deploy-and-generate-invite.sh
|
||||||
- moby_data_server:/app/packages/server
|
- moby_data_server:/app/packages/server
|
||||||
- fixturenet_geth_accounts:/geth-accounts:ro
|
- fixturenet_geth_accounts:/geth-accounts:ro
|
||||||
healthcheck:
|
extra_hosts:
|
||||||
test: ["CMD", "nc", "-v", "localhost", "3330"]
|
- "host.docker.internal:host-gateway"
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 10s
|
|
||||||
|
|
||||||
mobymask-watcher-server:
|
mobymask-watcher-server:
|
||||||
# TODO: pass optimism RPC endpoint
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
mobymask-watcher-db:
|
mobymask-watcher-db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
mobymask:
|
mobymask:
|
||||||
condition: service_healthy
|
condition: service_completed_successfully
|
||||||
image: cerc/watcher-mobymask-v2:local
|
image: cerc/watcher-mobymask-v2:local
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-mobymask-v2/optimism-params.env
|
||||||
command: ["sh", "server-start.sh"]
|
command: ["sh", "server-start.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
# TODO: add a script to set RPC endpoint from env
|
|
||||||
# add manually if running seperately
|
|
||||||
- ../config/watcher-mobymask-v2/watcher-config-template.toml:/app/packages/mobymask-v2-watcher/environments/watcher-config-template.toml
|
- ../config/watcher-mobymask-v2/watcher-config-template.toml:/app/packages/mobymask-v2-watcher/environments/watcher-config-template.toml
|
||||||
- ../config/watcher-mobymask-v2/peer.env:/app/packages/peer/.env
|
- ../config/watcher-mobymask-v2/peer.env:/app/packages/peer/.env
|
||||||
- ../config/watcher-mobymask-v2/relay-id.json:/app/packages/mobymask-v2-watcher/relay-id.json
|
- ../config/watcher-mobymask-v2/relay-id.json:/app/packages/mobymask-v2-watcher/relay-id.json
|
||||||
@ -78,6 +73,8 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 15
|
retries: 15
|
||||||
start_period: 5s
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
# TODO: Move to a separate pod
|
# TODO: Move to a separate pod
|
||||||
mobymask-app:
|
mobymask-app:
|
||||||
@ -85,7 +82,7 @@ services:
|
|||||||
mobymask-watcher-server:
|
mobymask-watcher-server:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
mobymask:
|
mobymask:
|
||||||
condition: service_healthy
|
condition: service_completed_successfully
|
||||||
image: cerc/mobymask-ui:local
|
image: cerc/mobymask-ui:local
|
||||||
command: ["sh", "mobymask-app-start.sh"]
|
command: ["sh", "mobymask-app-start.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
# Change if pointing to an external L1 endpoint
|
# Change if pointing to an external L1 endpoint
|
||||||
L1_RPC="http://fixturenet-eth-geth-1:8545"
|
|
||||||
|
# L1 endpoint
|
||||||
L1_CHAIN_ID=1212
|
L1_CHAIN_ID=1212
|
||||||
|
L1_RPC="http://fixturenet-eth-geth-1:8545"
|
||||||
L1_HOST="fixturenet-eth-geth-1"
|
L1_HOST="fixturenet-eth-geth-1"
|
||||||
L1_PORT=8545
|
L1_PORT=8545
|
||||||
|
|
||||||
|
# Credentials for accounts on L1 to send balance to Optimism Proxy contract from
|
||||||
|
# (enables them to do transactions on L2)
|
||||||
L1_ADDRESS=
|
L1_ADDRESS=
|
||||||
L1_PRIV_KEY=
|
L1_PRIV_KEY=
|
||||||
L1_ADDRESS_2=
|
L1_ADDRESS_2=
|
||||||
|
38
app/data/config/watcher-mobymask-v2/deploy-and-generate-invite.sh
Normal file → Executable file
38
app/data/config/watcher-mobymask-v2/deploy-and-generate-invite.sh
Normal file → Executable file
@ -1,11 +1,39 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
# Read the private key of L1 account to deploy contract
|
|
||||||
# TODO: Take from env if /geth-accounts volume doesn't exist to allow using separately running L1
|
if [ -f /geth-accounts/accounts.csv ]; then
|
||||||
L1_PRIV_KEY=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
|
echo "Using L1 private key from the mounted volume"
|
||||||
|
# Read the private key of L1 account to deploy contract
|
||||||
|
PRIVATE_KEY_DEPLOYER=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
|
||||||
|
else
|
||||||
|
echo "Using PRIVATE_KEY_DEPLOYER from env"
|
||||||
|
fi
|
||||||
|
|
||||||
# Set the private key
|
# Set the private key
|
||||||
jq --arg privateKey "$L1_PRIV_KEY" '.privateKey = ($privateKey)' secrets-template.json > secrets.json
|
jq --arg privateKey "$PRIVATE_KEY_DEPLOYER" '.privateKey = $privateKey' secrets-template.json > secrets.json
|
||||||
|
|
||||||
npm start
|
export L2_GETH_URL="http://${L2_GETH_HOST}:${L2_GETH_PORT}"
|
||||||
|
jq --arg rpcUrl "$L2_GETH_URL" '.rpcUrl = $rpcUrl' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
|
||||||
|
|
||||||
|
cd ../hardhat
|
||||||
|
export RPC_URL="${L2_GETH_URL}"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
ACCOUNT_BALANCE=$(yarn hardhat --network optimism balance $PRIVATE_KEY_DEPLOYER | grep ETH)
|
||||||
|
|
||||||
|
if [ "$ACCOUNT_BALANCE" != "0.0 ETH" ]; then
|
||||||
|
echo "Account balance updated: $ACCOUNT_BALANCE"
|
||||||
|
break # exit the loop
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Account balance not updated: $ACCOUNT_BALANCE"
|
||||||
|
echo "Checking after 2 seconds"
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
cd ../server
|
||||||
|
npm run deployAndGenerateInvite
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
# Merging config files to get deployed contract address
|
# Merging config files to get deployed contract address
|
||||||
jq -s '.[0] * .[1]' /app/src/mobymask-app-config.json /server/config.json > /app/src/config.json
|
jq -s '.[0] * .[1]' /app/src/mobymask-app-config.json /server/config.json > /app/src/config.json
|
||||||
|
12
app/data/config/watcher-mobymask-v2/optimism-params.env
Normal file
12
app/data/config/watcher-mobymask-v2/optimism-params.env
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Change if pointing to an external optimism geth endpoint
|
||||||
|
|
||||||
|
# L2 endpoints
|
||||||
|
# TODO: Add another env for complete URL to handle https
|
||||||
|
L2_GETH_HOST="op-geth"
|
||||||
|
L2_GETH_PORT=8545
|
||||||
|
L2_NODE_HOST="op-node"
|
||||||
|
L2_NODE_PORT=8547
|
||||||
|
|
||||||
|
# Credentials for accounts to perform txs on L2
|
||||||
|
PRIVATE_KEY_DEPLOYER=
|
||||||
|
PRIVATE_KEY_PEER=
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"rpcUrl": "http://op-geth:8545",
|
"rpcUrl": "",
|
||||||
"privateKey": "",
|
"privateKey": "",
|
||||||
"baseURI": "http://127.0.0.1:3002/#"
|
"baseURI": "http://127.0.0.1:3002/#"
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,25 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
# Assign deployed contract address from server config
|
# Assign deployed contract address from server config
|
||||||
CONTRACT_ADDRESS=$(jq -r '.address' /server/config.json | tr -d '"')
|
CONTRACT_ADDRESS=$(jq -r '.address' /server/config.json | tr -d '"')
|
||||||
L1_PRIV_KEY_2=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
|
|
||||||
|
|
||||||
sed "s/REPLACE_WITH_PRIVATE_KEY/${L1_PRIV_KEY_2}/" environments/watcher-config-template.toml > environments/local.toml
|
if [ -f /geth-accounts/accounts.csv ]; then
|
||||||
|
echo "Using L1 private key from the mounted volume"
|
||||||
|
# Read the private key of L1 account for sending txs from peer
|
||||||
|
PRIVATE_KEY_PEER=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
|
||||||
|
else
|
||||||
|
echo "Using PRIVATE_KEY_PEER from env"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed "s/REPLACE_WITH_PRIVATE_KEY/${PRIVATE_KEY_PEER}/" environments/watcher-config-template.toml > environments/local.toml
|
||||||
sed -i "s/REPLACE_WITH_CONTRACT_ADDRESS/${CONTRACT_ADDRESS}/" environments/local.toml
|
sed -i "s/REPLACE_WITH_CONTRACT_ADDRESS/${CONTRACT_ADDRESS}/" environments/local.toml
|
||||||
|
|
||||||
|
export L2_GETH_URL="http://${L2_GETH_HOST}:${L2_GETH_PORT}"
|
||||||
|
sed -i 's|REPLACE_WITH_L2_GETH_URL|'"${L2_GETH_URL}"'|' environments/local.toml
|
||||||
|
|
||||||
echo 'yarn server'
|
echo 'yarn server'
|
||||||
yarn server
|
yarn server
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
[upstream]
|
[upstream]
|
||||||
[upstream.ethServer]
|
[upstream.ethServer]
|
||||||
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
|
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
|
||||||
rpcProviderEndpoint = "http://op-geth:8545"
|
rpcProviderEndpoint = "REPLACE_WITH_L2_GETH_URL"
|
||||||
blockDelayInMilliSecs = 60000
|
blockDelayInMilliSecs = 60000
|
||||||
|
|
||||||
[upstream.cache]
|
[upstream.cache]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
FROM node:16.17.1-alpine3.16
|
FROM node:16.17.1-alpine3.16
|
||||||
|
|
||||||
RUN apk --update --no-cache add python3 alpine-sdk jq
|
RUN apk --update --no-cache add python3 alpine-sdk jq bash
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
@ -15,7 +15,8 @@ watcher-erc20
|
|||||||
watcher-erc721
|
watcher-erc721
|
||||||
watcher-uniswap-v3
|
watcher-uniswap-v3
|
||||||
watcher-mobymask-v2
|
watcher-mobymask-v2
|
||||||
mobymask-laconicd
|
mobymask-app
|
||||||
|
peer-test-app
|
||||||
test
|
test
|
||||||
eth-probe
|
eth-probe
|
||||||
keycloak
|
keycloak
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Instructions to setup and deploy an end-to-end L1+L2 stack with [fixturenet-eth](../fixturenet-eth/) (L1) and [Optimism](https://stack.optimism.io) (L2)
|
Instructions to setup and deploy an end-to-end L1+L2 stack with [fixturenet-eth](../fixturenet-eth/) (L1) and [Optimism](https://stack.optimism.io) (L2)
|
||||||
|
|
||||||
We support running just the L2 part of stack, given an external L1 endpoint. Follow [L2-ONLY](./L2-ONLY.md) for the same.
|
We support running just the L2 part of stack, given an external L1 endpoint. Follow [l2-only](./l2-only.md) for the same.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
@ -74,10 +74,10 @@ Clear volumes created by this stack:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# List all relevant volumes
|
# List all relevant volumes
|
||||||
docker volume ls -q --filter name=laconic*
|
docker volume ls -q --filter "name=.*fixturenet_geth_accounts|.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data"
|
||||||
|
|
||||||
# Remove all the listed volumes
|
# Remove all the listed volumes
|
||||||
docker volume rm $(docker volume ls -q --filter name=laconic*)
|
docker volume rm $(docker volume ls -q --filter "name=.*fixturenet_geth_accounts|.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data")
|
||||||
```
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
@ -55,7 +55,7 @@ The `fixturenet-optimism-contracts` service may take a while (`~15 mins`) to com
|
|||||||
To list down and monitor the running containers:
|
To list down and monitor the running containers:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
laconic-so --stack fixturenet-optimism deploy ps
|
laconic-so --stack fixturenet-optimism deploy --include fixturenet-optimism ps
|
||||||
|
|
||||||
# With status
|
# With status
|
||||||
docker ps
|
docker ps
|
||||||
@ -76,10 +76,10 @@ Clear volumes created by this stack:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# List all relevant volumes
|
# List all relevant volumes
|
||||||
docker volume ls -q --filter name=laconic*
|
docker volume ls -q --filter "name=.*fixturenet_geth_accounts|.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data"
|
||||||
|
|
||||||
# Remove all the listed volumes
|
# Remove all the listed volumes
|
||||||
docker volume rm $(docker volume ls -q --filter name=laconic*)
|
docker volume rm $(docker volume ls -q --filter "name=.*fixturenet_geth_accounts|.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data")
|
||||||
```
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
@ -1,6 +1,9 @@
|
|||||||
# MobyMask v2 watcher
|
# MobyMask v2 watcher
|
||||||
|
|
||||||
Instructions to deploy MobyMask v2 watcher stack using [laconic-stack-orchestrator](/README.md#install)
|
Instructions to setup and deploy an end-to-end MobyMask v2 stack ([L1](../fixturenet-eth/) + [L2](../fixturenet-optimism/) chains + watcher) using [laconic-stack-orchestrator](/README.md#install)
|
||||||
|
|
||||||
|
We support running just the watcher part of stack, given an external L2 Optimism endpoint.
|
||||||
|
Follow [mobymask-only](./mobymask-only.md) for the same.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
@ -30,7 +33,7 @@ git checkout laconic
|
|||||||
|
|
||||||
# MobyMask
|
# MobyMask
|
||||||
cd ~/cerc/MobyMask
|
cd ~/cerc/MobyMask
|
||||||
git checkout v0.1.1
|
git checkout v0.1.2
|
||||||
|
|
||||||
# Optimism
|
# Optimism
|
||||||
cd ~/cerc/optimism
|
cd ~/cerc/optimism
|
||||||
@ -68,19 +71,9 @@ Deploy the stack:
|
|||||||
Find the watcher container's id and export it for later use:
|
Find the watcher container's id and export it for later use:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
laconic-so --stack mobymask-v2 deploy-system ps | grep "mobymask-watcher-server"
|
export CONTAINER_ID=$(docker ps -q --filter "name=mobymask-watcher-server")
|
||||||
|
|
||||||
export CONTAINER_ID=<CONTAINER_ID>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Example output:
|
|
||||||
|
|
||||||
```
|
|
||||||
id: 5d3aae4b22039fcd1c9b18feeb91318ede1100581e75bb5ac54f9e436066b02c, name: laconic-bfb01caf98b1b8f7c8db4d33f11b905a-mobymask-watcher-server-1, ports: 0.0.0.0:3001->3001/tcp, 0.0.0.0:9001->9001/tcp, 0.0.0.0:9090->9090/tcp
|
|
||||||
```
|
|
||||||
|
|
||||||
In above output the container ID is `5d3aae4b22039fcd1c9b18feeb91318ede1100581e75bb5ac54f9e436066b02c`
|
|
||||||
|
|
||||||
Run the peer tests:
|
Run the peer tests:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -128,11 +121,11 @@ Clear volumes:
|
|||||||
* List all relevant volumes:
|
* List all relevant volumes:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker volume ls -q --filter name=laconic*
|
docker volume ls -q --filter "name=.*mobymask_watcher_db_data|.*moby_data_server|.*fixturenet_geth_accounts|.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data"
|
||||||
```
|
```
|
||||||
|
|
||||||
* Remove all the listed volumes:
|
* Remove all the listed volumes:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker volume rm $(docker volume ls -q --filter name=laconic*)
|
docker volume rm $(docker volume ls -q --filter "name=.*mobymask_watcher_db_data|.*moby_data_server|.*fixturenet_geth_accounts|.*l1_deployment|.*l2_accounts|.*l2_config|.*l2_geth_data")
|
||||||
```
|
```
|
||||||
|
85
app/data/stacks/mobymask-v2/mobymask-only.md
Normal file
85
app/data/stacks/mobymask-v2/mobymask-only.md
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
# MobyMask v2 watcher
|
||||||
|
|
||||||
|
Instructions to setup and deploy MobyMask v2 watcher independently
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Prerequisite: An L2 Optimism RPC endpoint
|
||||||
|
|
||||||
|
Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack mobymask-v2 setup-repositories --include cerc-io/MobyMask,cerc-io/watcher-ts,cerc-io/react-peer,cerc-io/mobymask-ui
|
||||||
|
```
|
||||||
|
|
||||||
|
Checkout to the required versions and branches in repos:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
```bash
|
||||||
|
# watcher-ts
|
||||||
|
cd ~/cerc/watcher-ts
|
||||||
|
git checkout v0.2.34
|
||||||
|
|
||||||
|
# react-peer
|
||||||
|
cd ~/cerc/react-peer
|
||||||
|
git checkout v0.2.31
|
||||||
|
|
||||||
|
# mobymask-ui
|
||||||
|
cd ~/cerc/mobymask-ui
|
||||||
|
git checkout laconic
|
||||||
|
|
||||||
|
# MobyMask
|
||||||
|
cd ~/cerc/MobyMask
|
||||||
|
git checkout v0.1.2
|
||||||
|
```
|
||||||
|
|
||||||
|
Build the container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack mobymask-v2 build-containers --include cerc/watcher-mobymask-v2,cerc/react-peer,cerc/mobymask-ui,cerc/mobymask
|
||||||
|
```
|
||||||
|
|
||||||
|
This should create the required docker images in the local image registry
|
||||||
|
|
||||||
|
## Deploy
|
||||||
|
|
||||||
|
Update the [optimism-params.env](../../config/watcher-mobymask-v2/optimism-params.env) file with Optimism endpoints and other params if running Optimism separately
|
||||||
|
|
||||||
|
* NOTE:
|
||||||
|
* Stack Orchestrator needs to be run in [`dev`](/docs/CONTRIBUTING.md#install-developer-mode) mode to be able to edit the env file
|
||||||
|
* If Optimism is running on the host machine, use `host.docker.internal` as the hostname to access the host port
|
||||||
|
|
||||||
|
Deploy the stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack mobymask-v2 deploy --include watcher-mobymask-v2 up
|
||||||
|
```
|
||||||
|
|
||||||
|
To list down and monitor the running containers:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack mobymask-v2 deploy --include watcher-mobymask-v2 ps
|
||||||
|
# With status
|
||||||
|
docker ps
|
||||||
|
# Check logs for a container
|
||||||
|
docker logs -f <CONTAINER_ID>
|
||||||
|
```
|
||||||
|
|
||||||
|
See [Tests](./README.md#tests) and [Demo](./README.md#demo) to interact with stack
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
|
||||||
|
Stop all services running in the background:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack mobymask-v2 deploy down --include watcher-mobymask-v2
|
||||||
|
```
|
||||||
|
|
||||||
|
Clear volumes created by this stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List all relevant volumes
|
||||||
|
docker volume ls -q --filter "name=.*mobymask_watcher_db_data|.*moby_data_server|.*fixturenet_geth_accounts"
|
||||||
|
# Remove all the listed volumes
|
||||||
|
docker volume rm $(docker volume ls -q --filter "name=.*mobymask_watcher_db_data|.*moby_data_server|.*fixturenet_geth_accounts")
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user