Add a mobymask-v3 stack
This commit is contained in:
parent
626cc17373
commit
9ccd2d7d43
73
app/data/compose/docker-compose-watcher-mobymask-v3.yml
Normal file
73
app/data/compose/docker-compose-watcher-mobymask-v3.yml
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
version: '3.2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Starts the PostgreSQL database for watcher
|
||||||
|
mobymask-watcher-db:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: postgres:14-alpine
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=vdbm
|
||||||
|
- POSTGRES_MULTIPLE_DATABASES=mobymask-watcher,mobymask-watcher-job-queue
|
||||||
|
- POSTGRES_EXTENSION=mobymask-watcher-job-queue:pgcrypto
|
||||||
|
- POSTGRES_PASSWORD=password
|
||||||
|
volumes:
|
||||||
|
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
||||||
|
- mobymask_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
|
||||||
|
|
||||||
|
# Deploys the MobyMask contract and generates an invite link
|
||||||
|
# Deployment is skipped if CERC_DEPLOYED_CONTRACT env is set
|
||||||
|
mobymask:
|
||||||
|
image: cerc/mobymask:local
|
||||||
|
working_dir: /app/packages/server
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-mobymask-v2/optimism-params.env
|
||||||
|
- ../config/watcher-mobymask-v2/mobymask-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
ENV: "PROD"
|
||||||
|
CERC_L2_GETH_RPC: ${CERC_L2_GETH_RPC}
|
||||||
|
CERC_L1_ACCOUNTS_CSV_URL: ${CERC_L1_ACCOUNTS_CSV_URL}
|
||||||
|
CERC_PRIVATE_KEY_DEPLOYER: ${CERC_PRIVATE_KEY_DEPLOYER}
|
||||||
|
CERC_MOBYMASK_APP_BASE_URI: ${CERC_MOBYMASK_APP_BASE_URI}
|
||||||
|
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
||||||
|
CERC_L2_GETH_HOST: ${CERC_L2_GETH_HOST}
|
||||||
|
CERC_L2_GETH_PORT: ${CERC_L2_GETH_PORT}
|
||||||
|
CERC_L2_NODE_HOST: ${CERC_L2_NODE_HOST}
|
||||||
|
CERC_L2_NODE_PORT: ${CERC_L2_NODE_PORT}
|
||||||
|
command: ["sh", "deploy-and-generate-invite.sh"]
|
||||||
|
volumes:
|
||||||
|
- ../config/network/wait-for-it.sh:/app/packages/server/wait-for-it.sh
|
||||||
|
- ../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
|
||||||
|
- mobymask_deployment:/app/packages/server
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Creates peer-id files if they don't exist
|
||||||
|
peer-ids-gen:
|
||||||
|
image: cerc/watcher-ts:local
|
||||||
|
restart: on-failure
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
# working_dir: /app/packages/peer
|
||||||
|
working_dir: /app/packages/
|
||||||
|
command: ["sh", "generate-peer-ids.sh && deploy-nitro-contracts.sh"]
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-mobymask-v2/generate-peer-ids.sh:/app/packages/peer/generate-peer-ids.sh
|
||||||
|
- peers_ids:/peer-ids
|
||||||
|
- ../config/watcher-mobymask-v3/deploy-nitro-contracts.sh:/app/packages/peer/deploy-nitro-contracts.sh
|
||||||
|
- nitro_addresses:/nitro
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mobymask_watcher_db_data:
|
||||||
|
peers_ids:
|
||||||
|
nitro_addresses:
|
||||||
|
mobymask_deployment:
|
46
app/data/config/watcher-mobymask-v3/deploy-nitro-contracts.sh
Executable file
46
app/data/config/watcher-mobymask-v3/deploy-nitro-contracts.sh
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
CERC_L2_GETH_RPC="${CERC_L2_GETH_RPC:-${DEFAULT_CERC_L2_GETH_RPC}}"
|
||||||
|
CERC_L1_ACCOUNTS_CSV_URL="${CERC_L1_ACCOUNTS_CSV_URL:-${DEFAULT_CERC_L1_ACCOUNTS_CSV_URL}}"
|
||||||
|
CERC_NITRO_CONTRACTS="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_NITRO_CONTRACTS}}"
|
||||||
|
|
||||||
|
NITRO_ADDRESSES_FILE_PATH="/nitro/nitro-addresses.json"
|
||||||
|
|
||||||
|
# Check if CERC_NITRO_CONTRACTS environment variable set to skip contract deployment
|
||||||
|
if [ -n "$CERC_NITRO_CONTRACTS" ]; then
|
||||||
|
echo "CERC_NITRO_CONTRACTS is set to '$CERC_NITRO_CONTRACTS'"
|
||||||
|
echo "Skipping Nitro contracts deployment"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Using L2 RPC endpoint ${CERC_L2_GETH_RPC}"
|
||||||
|
|
||||||
|
if [ -n "$CERC_L1_ACCOUNTS_CSV_URL" ] && \
|
||||||
|
l1_accounts_response=$(curl -L --write-out '%{http_code}' --silent --output /dev/null "$CERC_L1_ACCOUNTS_CSV_URL") && \
|
||||||
|
[ "$l1_accounts_response" -eq 200 ];
|
||||||
|
then
|
||||||
|
echo "Fetching L1 account credentials using provided URL"
|
||||||
|
mkdir -p /geth-accounts
|
||||||
|
wget -O /geth-accounts/accounts.csv "$CERC_L1_ACCOUNTS_CSV_URL"
|
||||||
|
|
||||||
|
# Read the private key of an L1 account to deploy contract
|
||||||
|
CERC_PRIVATE_KEY_DEPLOYER=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
|
||||||
|
else
|
||||||
|
echo "Couldn't fetch L1 account credentials, using CERC_PRIVATE_KEY_DEPLOYER from env"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check and exit if a deployment already exists (on restarts)
|
||||||
|
if [ -f ${NITRO_ADDRESSES_FILE_PATH} ]; then
|
||||||
|
echo "${NITRO_ADDRESSES_FILE_PATH} already exists, skipping Nitro contracts deployment"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
export RPC_URL="${CERC_L2_GETH_RPC}"
|
||||||
|
export NITRO_ADDRESSES_FILE_PATH="${NITRO_ADDRESSES_FILE_PATH}"
|
||||||
|
export PRIVATE_KEY="${CERC_PRIVATE_KEY_DEPLOYER}"
|
||||||
|
|
||||||
|
yarn ts-node --esm ./src/deploy-nitro-contracts.ts
|
@ -0,0 +1,48 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import { providers, Wallet } from 'ethers';
|
||||||
|
import { deployContracts } from '@cerc-io/nitro-util';
|
||||||
|
|
||||||
|
async function main () {
|
||||||
|
const rpcURL = process.env.RPC_URL;
|
||||||
|
const addressesFilePath = process.env.NITRO_ADDRESSES_FILE_PATH;
|
||||||
|
const deployerKey = process.env.PRIVATE_KEY;
|
||||||
|
|
||||||
|
if (!rpcURL) {
|
||||||
|
console.log('RPC_URL not set, skipping deployment');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!addressesFilePath) {
|
||||||
|
console.log('NITRO_ADDRESSES_FILE_PATH not set, skipping deployment');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!deployerKey) {
|
||||||
|
console.log('PRIVATE_KEY not set, skipping deployment');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const provider = new providers.JsonRpcProvider(process.env.RPC_URL);
|
||||||
|
const signer = new Wallet(deployerKey, provider);
|
||||||
|
|
||||||
|
const [
|
||||||
|
nitroAdjudicatorAddress,
|
||||||
|
virtualPaymentAppAddress,
|
||||||
|
consensusAppAddress
|
||||||
|
] = await deployContracts(signer as any);
|
||||||
|
|
||||||
|
const output = {
|
||||||
|
nitroAdjudicatorAddress,
|
||||||
|
virtualPaymentAppAddress,
|
||||||
|
consensusAppAddress
|
||||||
|
};
|
||||||
|
|
||||||
|
fs.writeFileSync(addressesFilePath, JSON.stringify(output, null, 2));
|
||||||
|
console.log('Nitro contracts deployed, addresses written to', addressesFilePath);
|
||||||
|
console.log('Result:', JSON.stringify(output, null, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
@ -37,7 +37,7 @@ RUN yarn global add http-server
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN npm install
|
RUN yarn install
|
||||||
|
|
||||||
# Expose port for http
|
# Expose port for http
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
@ -35,3 +35,5 @@ contract-sushiswap
|
|||||||
graph-node
|
graph-node
|
||||||
sushiswap-subgraph-v3
|
sushiswap-subgraph-v3
|
||||||
fixturenet-sushiswap-subgraph-v3
|
fixturenet-sushiswap-subgraph-v3
|
||||||
|
watcher-mobymask-v3
|
||||||
|
mobymask-app-v3
|
||||||
|
1
app/data/stacks/mobymask-v3/README.md
Normal file
1
app/data/stacks/mobymask-v3/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# MobyMask v3 watcher
|
16
app/data/stacks/mobymask-v3/stack.yml
Normal file
16
app/data/stacks/mobymask-v3/stack.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
version: "1.0"
|
||||||
|
description: "MobyMask v3 stack"
|
||||||
|
name: mobymask-v3
|
||||||
|
repos:
|
||||||
|
- github.com/cerc-io/watcher-ts@v0.2.57
|
||||||
|
- github.com/cerc-io/mobymask-v2-watcher-ts@v3
|
||||||
|
- github.com/cerc-io/MobyMask@v0.1.3
|
||||||
|
- github.com/cerc-io/mobymask-ui
|
||||||
|
containers:
|
||||||
|
- cerc/watcher-ts
|
||||||
|
- cerc/watcher-mobymask-v2
|
||||||
|
- cerc/mobymask-ui
|
||||||
|
- cerc/mobymask
|
||||||
|
pods:
|
||||||
|
- watcher-mobymask-v3
|
||||||
|
- mobymask-app-v3
|
17
app/data/stacks/mobymask-v3/watcher.md
Normal file
17
app/data/stacks/mobymask-v3/watcher.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# MobyMask v3 watcher
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack mobymask-v3 setup-repositories
|
||||||
|
```
|
||||||
|
|
||||||
|
Build the container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack mobymask-v3 build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deploy
|
Loading…
Reference in New Issue
Block a user