Add CERC prefix to env variables in mobymask-v2 stack

This commit is contained in:
Prathamesh Musale 2023-04-11 15:12:29 +05:30
parent 1841cc4929
commit b0cc63ad68
12 changed files with 90 additions and 88 deletions

View File

@ -8,15 +8,16 @@ services:
- ../config/watcher-mobymask-v2/mobymask-params.env
environment:
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
CHAIN_ID: ${CHAIN_ID}
DEPLOYED_CONTRACT: ${DEPLOYED_CONTRACT}
RELAY_NODES: ${RELAY_NODES}
CERC_CHAIN_ID: ${CERC_CHAIN_ID}
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
# Waits for watcher server to be up before app build
# Required when running with watcher stack to get deployed contract address
command:
- sh
- -c
- ./wait-for-it.sh -h ${WATCHER_HOST:-$${DEFAULT_WATCHER_HOST}} -p ${WATCHER_PORT:-$${DEFAULT_WATCHER_PORT}} -s -t 0 -- ./mobymask-app-start.sh
- ./wait-for-it.sh -h ${CERC_WATCHER_HOST:-$${DEFAULT_CERC_WATCHER_HOST}} -p ${CERC_WATCHER_PORT:-$${DEFAULT_CERC_WATCHER_PORT}} -s -t 0 -- ./mobymask-app-start.sh
volumes:
- ../config/wait-for-it.sh:/app/wait-for-it.sh
- ../config/watcher-mobymask-v2/mobymask-app-config.json:/app/src/mobymask-app-config.json

View File

@ -9,7 +9,7 @@ services:
- ../config/watcher-mobymask-v2/mobymask-params.env
environment:
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
RELAY_NODES: ${RELAY_NODES}
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
command: ["sh", "./test-app-start.sh"]
volumes:
- ../config/watcher-mobymask-v2/test-app-config.json:/app/packages/test-app/src/test-app-config.json

View File

@ -22,8 +22,8 @@ services:
retries: 15
start_period: 10s
# Deploys MobyMask contract and generates an invite link
# Deployment is skipped if DEPLOYED_CONTRACT env is already set
# 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
@ -33,17 +33,17 @@ services:
environment:
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
ENV: "PROD"
L2_GETH_RPC: ${L2_GETH_RPC}
PRIVATE_KEY_DEPLOYER: ${PRIVATE_KEY_DEPLOYER}
MOBYMASK_APP_BASE_URI: ${MOBYMASK_APP_BASE_URI}
DEPLOYED_CONTRACT: ${DEPLOYED_CONTRACT}
CERC_L2_GETH_RPC: ${CERC_L2_GETH_RPC}
CERC_PRIVATE_KEY_DEPLOYER: ${CERC_PRIVATE_KEY_DEPLOYER}
CERC_MOBYMASK_APP_BASE_URI: ${CERC_MOBYMASK_APP_BASE_URI}
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
# Waits for L2 Optimism Geth and Node servers to be up before deploying contract
command:
- sh
- -c
- |
./wait-for-it.sh -h ${L2_GETH_HOST:-$${DEFAULT_L2_GETH_HOST}} -p ${L2_GETH_PORT:-$${DEFAULT_L2_GETH_PORT}} -s -t 0 && \
./wait-for-it.sh -h ${L2_NODE_HOST:-$${DEFAULT_L2_NODE_HOST}} -p ${L2_NODE_PORT:-$${DEFAULT_L2_NODE_PORT}} -s -t 0 && \
./wait-for-it.sh -h ${CERC_L2_GETH_HOST:-$${DEFAULT_CERC_L2_GETH_HOST}} -p ${CERC_L2_GETH_PORT:-$${DEFAULT_CERC_L2_GETH_PORT}} -s -t 0 && \
./wait-for-it.sh -h ${CERC_L2_NODE_HOST:-$${DEFAULT_CERC_L2_NODE_HOST}} -p ${CERC_L2_NODE_PORT:-$${DEFAULT_CERC_L2_NODE_PORT}} -s -t 0 && \
./deploy-and-generate-invite.sh
volumes:
- ../config/wait-for-it.sh:/app/packages/server/wait-for-it.sh
@ -68,10 +68,10 @@ services:
- ../config/watcher-mobymask-v2/mobymask-params.env
environment:
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
L2_GETH_RPC: ${L2_GETH_RPC}
PRIVATE_KEY_PEER: ${PRIVATE_KEY_PEER}
ENABLE_PEER_L2_TXS: ${ENABLE_PEER_L2_TXS}
DEPLOYED_CONTRACT: ${DEPLOYED_CONTRACT}
CERC_L2_GETH_RPC: ${CERC_L2_GETH_RPC}
CERC_PRIVATE_KEY_PEER: ${CERC_PRIVATE_KEY_PEER}
CERC_ENABLE_PEER_L2_TXS: ${CERC_ENABLE_PEER_L2_TXS}
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
command: ["sh", "start-server.sh"]
volumes:
- ../config/watcher-mobymask-v2/watcher-config-template.toml:/app/packages/mobymask-v2-watcher/environments/watcher-config-template.toml

View File

@ -4,36 +4,36 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
L2_GETH_RPC="${L2_GETH_RPC:-${DEFAULT_L2_GETH_RPC}}"
PRIVATE_KEY_DEPLOYER="${PRIVATE_KEY_DEPLOYER:-${DEFAULT_PRIVATE_KEY_DEPLOYER}}"
CERC_L2_GETH_RPC="${CERC_L2_GETH_RPC:-${DEFAULT_CERC_L2_GETH_RPC}}"
CERC_PRIVATE_KEY_DEPLOYER="${CERC_PRIVATE_KEY_DEPLOYER:-${DEFAULT_CERC_PRIVATE_KEY_DEPLOYER}}"
MOBYMASK_APP_BASE_URI="${MOBYMASK_APP_BASE_URI:-${DEFAULT_MOBYMASK_APP_BASE_URI}}"
DEPLOYED_CONTRACT="${DEPLOYED_CONTRACT:-${DEFAULT_DEPLOYED_CONTRACT}}"
CERC_MOBYMASK_APP_BASE_URI="${CERC_MOBYMASK_APP_BASE_URI:-${DEFAULT_CERC_MOBYMASK_APP_BASE_URI}}"
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
echo "Using L2 RPC endpoint ${L2_GETH_RPC}"
echo "Using L2 RPC endpoint ${CERC_L2_GETH_RPC}"
if [ -f /geth-accounts/accounts.csv ]; then
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)
CERC_PRIVATE_KEY_DEPLOYER=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
else
echo "Using PRIVATE_KEY_DEPLOYER from env"
echo "Using CERC_PRIVATE_KEY_DEPLOYER from env"
fi
# Set the private key
jq --arg privateKey "$PRIVATE_KEY_DEPLOYER" '.privateKey = $privateKey' secrets-template.json > secrets.json
jq --arg privateKey "$CERC_PRIVATE_KEY_DEPLOYER" '.privateKey = $privateKey' secrets-template.json > secrets.json
# Set the RPC URL
jq --arg rpcUrl "$L2_GETH_RPC" '.rpcUrl = $rpcUrl' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
jq --arg rpcUrl "$CERC_L2_GETH_RPC" '.rpcUrl = $rpcUrl' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
# Set the MobyMask app base URI
jq --arg baseURI "$MOBYMASK_APP_BASE_URI" '.baseURI = $baseURI' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
jq --arg baseURI "$CERC_MOBYMASK_APP_BASE_URI" '.baseURI = $baseURI' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
export RPC_URL="${L2_GETH_RPC}"
export RPC_URL="${CERC_L2_GETH_RPC}"
# Check if DEPLOYED_CONTRACT environment variable set to skip contract deployment
if [ -n "$DEPLOYED_CONTRACT" ]; then
echo "DEPLOYED_CONTRACT is set to '$DEPLOYED_CONTRACT'"
# Check if CERC_DEPLOYED_CONTRACT environment variable set to skip contract deployment
if [ -n "$CERC_DEPLOYED_CONTRACT" ]; then
echo "CERC_DEPLOYED_CONTRACT is set to '$CERC_DEPLOYED_CONTRACT'"
echo "Exiting without deploying contract"
exit 0
fi
@ -59,7 +59,7 @@ fi
# Wait until balance for deployer account is updated
cd ../hardhat
while true; do
ACCOUNT_BALANCE=$(yarn balance --network optimism "$PRIVATE_KEY_DEPLOYER" | grep ETH)
ACCOUNT_BALANCE=$(yarn balance --network optimism "$CERC_PRIVATE_KEY_DEPLOYER" | grep ETH)
if [ "$ACCOUNT_BALANCE" != "0.0 ETH" ]; then
echo "Account balance updated: $ACCOUNT_BALANCE"

View File

@ -4,9 +4,10 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
CHAIN_ID="${CHAIN_ID:-${DEFAULT_CHAIN_ID}}"
DEPLOYED_CONTRACT="${DEPLOYED_CONTRACT:-${DEFAULT_DEPLOYED_CONTRACT}}"
RELAY_NODES="${RELAY_NODES:-${DEFAULT_RELAY_NODES}}"
CERC_CHAIN_ID="${CERC_CHAIN_ID:-${DEFAULT_CERC_CHAIN_ID}}"
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
CERC_RELAY_NODES="${CERC_RELAY_NODES:-${DEFAULT_CERC_RELAY_NODES}}"
CERC_APP_WATCHER_URL="${CERC_APP_WATCHER_URL:-${DEFAULT_CERC_APP_WATCHER_URL}}"
# Use config from mounted volume if available (when running web-app along with watcher stack)
if [ -f /server/config.json ]; then
@ -17,13 +18,13 @@ else
echo "Setting deployed contract details from env"
# Set config values from environment variables
jq --arg address "$DEPLOYED_CONTRACT" \
--argjson chainId $CHAIN_ID \
--argjson relayNodes "$RELAY_NODES" \
jq --arg address "$CERC_DEPLOYED_CONTRACT" \
--argjson chainId $CERC_CHAIN_ID \
--argjson relayNodes "$CERC_RELAY_NODES" \
'.address = $address | .chainId = $chainId | .relayNodes = $relayNodes' \
/app/src/mobymask-app-config.json > /app/src/config.json
fi
REACT_APP_WATCHER_URI="$APP_WATCHER_URL/graphql" npm run build
REACT_APP_WATCHER_URI="$CERC_APP_WATCHER_URL/graphql" npm run build
serve -s build

View File

@ -1,22 +1,22 @@
# Defaults
# Watcher endpoint
DEFAULT_WATCHER_HOST="mobymask-watcher-server"
DEFAULT_WATCHER_PORT=3001
DEFAULT_APP_WATCHER_URL="http://localhost:3001"
DEFAULT_CERC_WATCHER_HOST="mobymask-watcher-server"
DEFAULT_CERC_WATCHER_PORT=3001
DEFAULT_CERC_APP_WATCHER_URL="http://localhost:3001"
# Base URI for mobymask-app (used for generating invite)
DEFAULT_MOBYMASK_APP_BASE_URI="http://127.0.0.1:3002/#"
DEFAULT_CERC_MOBYMASK_APP_BASE_URI="http://127.0.0.1:3002/#"
# Set to false for disabling watcher peer to send txs to L2
DEFAULT_ENABLE_PEER_L2_TXS=true
DEFAULT_CERC_ENABLE_PEER_L2_TXS=true
# Set deployed MobyMask contract address to avoid deploying contract in stack
# mobymask-app will use this contract address in config if run separately
DEFAULT_DEPLOYED_CONTRACT=
DEFAULT_CERC_DEPLOYED_CONTRACT=
# Chain ID is used by mobymask web-app for txs
DEFAULT_CHAIN_ID=42069
DEFAULT_CERC_CHAIN_ID=42069
# Set relay nodes to be used by web-apps
DEFAULT_RELAY_NODES=["/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"]
DEFAULT_CERC_RELAY_NODES=["/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"]

View File

@ -1,13 +1,13 @@
# Defaults
# L2 endpoints
DEFAULT_L2_GETH_RPC="http://op-geth:8545"
DEFAULT_L2_GETH_HOST="op-geth"
DEFAULT_L2_GETH_PORT=8545
DEFAULT_CERC_L2_GETH_RPC="http://op-geth:8545"
DEFAULT_CERC_L2_GETH_HOST="op-geth"
DEFAULT_CERC_L2_GETH_PORT=8545
DEFAULT_L2_NODE_HOST="op-node"
DEFAULT_L2_NODE_PORT=8547
DEFAULT_CERC_L2_NODE_HOST="op-node"
DEFAULT_CERC_L2_NODE_PORT=8547
# Credentials for accounts to perform txs on L2
DEFAULT_PRIVATE_KEY_DEPLOYER=
DEFAULT_PRIVATE_KEY_PEER=
DEFAULT_CERC_PRIVATE_KEY_DEPLOYER=
DEFAULT_CERC_PRIVATE_KEY_PEER=

View File

@ -4,17 +4,17 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
L2_GETH_RPC="${L2_GETH_RPC:-${DEFAULT_L2_GETH_RPC}}"
PRIVATE_KEY_PEER="${PRIVATE_KEY_PEER:-${DEFAULT_PRIVATE_KEY_PEER}}"
CERC_L2_GETH_RPC="${CERC_L2_GETH_RPC:-${DEFAULT_CERC_L2_GETH_RPC}}"
CERC_PRIVATE_KEY_PEER="${CERC_PRIVATE_KEY_PEER:-${DEFAULT_CERC_PRIVATE_KEY_PEER}}"
ENABLE_PEER_L2_TXS="${ENABLE_PEER_L2_TXS:-${DEFAULT_ENABLE_PEER_L2_TXS}}"
DEPLOYED_CONTRACT="${DEPLOYED_CONTRACT:-${DEFAULT_DEPLOYED_CONTRACT}}"
CERC_ENABLE_PEER_L2_TXS="${CERC_ENABLE_PEER_L2_TXS:-${DEFAULT_CERC_ENABLE_PEER_L2_TXS}}"
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
echo "Using L2 RPC endpoint ${L2_GETH_RPC}"
echo "Using L2 RPC endpoint ${CERC_L2_GETH_RPC}"
# Use contract address from environment variable or set from config.json in mounted volume
if [ -n "$DEPLOYED_CONTRACT" ]; then
CONTRACT_ADDRESS="${DEPLOYED_CONTRACT}"
if [ -n "$CERC_DEPLOYED_CONTRACT" ]; then
CONTRACT_ADDRESS="${CERC_DEPLOYED_CONTRACT}"
else
# Assign deployed contract address from server config (created by mobymask container after deploying contract)
CONTRACT_ADDRESS=$(jq -r '.address' /server/config.json | tr -d '"')
@ -23,19 +23,19 @@ fi
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)
CERC_PRIVATE_KEY_PEER=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
else
echo "Using PRIVATE_KEY_PEER from env"
echo "Using CERC_PRIVATE_KEY_PEER from env"
fi
# 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_ENABLE_PEER_L2_TXS/${ENABLE_PEER_L2_TXS}/g; \
s/REPLACE_WITH_PRIVATE_KEY_PEER/${PRIVATE_KEY_PEER}/g; \
sed -E "s/REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS/${CERC_ENABLE_PEER_L2_TXS}/g; \
s/REPLACE_WITH_CERC_PRIVATE_KEY_PEER/${CERC_PRIVATE_KEY_PEER}/g; \
s/REPLACE_WITH_CONTRACT_ADDRESS/${CONTRACT_ADDRESS}/g; \
s|REPLACE_WITH_L2_GETH_RPC_ENDPOINT|${L2_GETH_RPC}| ")
s|REPLACE_WITH_CERC_L2_GETH_RPC_ENDPOINT|${CERC_L2_GETH_RPC}| ")
# Write the modified content to a new file
echo "$WATCHER_CONFIG" > environments/local.toml

View File

@ -4,10 +4,10 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
RELAY_NODES="${RELAY_NODES:-${DEFAULT_RELAY_NODES}}"
CERC_RELAY_NODES="${CERC_RELAY_NODES:-${DEFAULT_CERC_RELAY_NODES}}"
# Set relay nodes in config from RELAY_NODES environment variable
jq --argjson relayNodes "$RELAY_NODES" \
# Set relay nodes in config from CERC_RELAY_NODES environment variable
jq --argjson relayNodes "$CERC_RELAY_NODES" \
'.relayNodes = $relayNodes' \
./src/test-app-config.json > ./src/config.json

View File

@ -35,10 +35,10 @@
pubSubTopic = 'mobymask'
peerIdFile = './peer-id.json'
enableDebugInfo = true
enableL2Txs = REPLACE_WITH_ENABLE_PEER_L2_TXS
enableL2Txs = REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS
[server.p2p.peer.l2TxsConfig]
privateKey = 'REPLACE_WITH_PRIVATE_KEY_PEER'
privateKey = 'REPLACE_WITH_CERC_PRIVATE_KEY_PEER'
contractAddress = 'REPLACE_WITH_CONTRACT_ADDRESS'
[metrics]
@ -60,7 +60,7 @@
[upstream]
[upstream.ethServer]
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
rpcProviderEndpoint = "REPLACE_WITH_L2_GETH_RPC_ENDPOINT"
rpcProviderEndpoint = "REPLACE_WITH_CERC_L2_GETH_RPC_ENDPOINT"
blockDelayInMilliSecs = 60000
[upstream.cache]

View File

@ -42,26 +42,26 @@ Create and update an env file to be used in the next step ([defaults](../../conf
```bash
# External L2 endpoints
L2_GETH_RPC=
L2_GETH_HOST=
L2_GETH_PORT=
CERC_L2_GETH_RPC=
CERC_L2_GETH_HOST=
CERC_L2_GETH_PORT=
L2_NODE_HOST=
L2_NODE_PORT=
CERC_L2_NODE_HOST=
CERC_L2_NODE_PORT=
# Credentials for accounts to perform txs on L2
PRIVATE_KEY_DEPLOYER=
PRIVATE_KEY_PEER=
CERC_PRIVATE_KEY_DEPLOYER=
CERC_PRIVATE_KEY_PEER=
# Base URI for mobymask-app
# (used for generating a root invite link after deploying the contract)
MOBYMASK_APP_BASE_URI="http://127.0.0.1:3002/#"
CERC_MOBYMASK_APP_BASE_URI="http://127.0.0.1:3002/#"
# Set to false for disabling watcher peer to send txs to L2
ENABLE_PEER_L2_TXS=true
CERC_ENABLE_PEER_L2_TXS=true
# (Optional) Set already deployed MobyMask contract address to avoid deploying contract in the stack
DEPLOYED_CONTRACT=
CERC_DEPLOYED_CONTRACT=
```
* NOTE: If Optimism is running on the host machine, use `host.docker.internal` as the hostname to access the host port

View File

@ -42,22 +42,22 @@ Create and update an env file to be used in the next step ([defaults](../../conf
```bash
# Set relay nodes to be used by the web-app
RELAY_NODES=["/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"]
CERC_RELAY_NODES=["/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"]
# Also add if running MobyMask app:
# External watcher endpoint (to check if watcher is up)
WATCHER_HOST=
WATCHER_PORT=
CERC_WATCHER_HOST=
CERC_WATCHER_PORT=
# Watcher endpoint used by the app for GQL queries
APP_WATCHER_URL="http://127.0.0.1:3001"
CERC_APP_WATCHER_URL="http://127.0.0.1:3001"
# Set deployed MobyMask contract address to be used in MobyMask app's config
DEPLOYED_CONTRACT=
CERC_DEPLOYED_CONTRACT=
# L2 Chain ID used by mobymask web-app for L2 txs
CHAIN_ID=42069
CERC_CHAIN_ID=42069
```
* NOTE: If watcher is running on the host machine, use `host.docker.internal` as the hostname to access the host port