From 7c29b8c36c1952b44fc26d2d8e273f72d5dcf584 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Tue, 20 Feb 2024 19:12:46 +0530 Subject: [PATCH] Setup mobymask app in the stack --- .../docker-compose-mobymask-app-v3.yml | 17 +---- ...ocker-compose-watcher-mobymask-v3-demo.yml | 2 +- .../watcher-mobymask-v3-demo/local/config.env | 8 ++- .../local/keys/watcher-1.json | 1 + .../local/keys/watcher-2.json | 1 + .../local/keys/watcher-3.json | 1 + .../mobymask-app-start.sh | 68 +++++++++++++++++++ 7 files changed, 80 insertions(+), 18 deletions(-) create mode 100644 stack_orchestrator/data/config/watcher-mobymask-v3-demo/mobymask-app-start.sh diff --git a/stack_orchestrator/data/compose/docker-compose-mobymask-app-v3.yml b/stack_orchestrator/data/compose/docker-compose-mobymask-app-v3.yml index 244fb29b..3925cb5b 100644 --- a/stack_orchestrator/data/compose/docker-compose-mobymask-app-v3.yml +++ b/stack_orchestrator/data/compose/docker-compose-mobymask-app-v3.yml @@ -5,27 +5,15 @@ services: mobymask-v3-app: restart: unless-stopped image: cerc/mobymask-ui:local - env_file: - - ../config/watcher-mobymask-v3/mobymask-params.env environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_CHAIN_ID: ${CERC_CHAIN_ID} - CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT} - CERC_RELAY_NODES: ${CERC_RELAY_NODES} - CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS} - CERC_PUBSUB: ${CERC_PUBSUB} - CERC_GOSSIPSUB_DIRECT_PEERS: ${CERC_GOSSIPSUB_DIRECT_PEERS} - CERC_NA_ADDRESS: ${CERC_NA_ADDRESS} - CERC_VPA_ADDRESS: ${CERC_VPA_ADDRESS} - CERC_CA_ADDRESS: ${CERC_CA_ADDRESS} CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL} - CERC_PAYMENT_NITRO_ADDRESS: ${CERC_PAYMENT_NITRO_ADDRESS:-0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94} CERC_SNAP_URL: ${CERC_SNAP_URL} working_dir: /app command: ["bash", "/scripts/mobymask-app-start.sh"] volumes: - - ../config/watcher-mobymask-v3/mobymask-app-start.sh:/scripts/mobymask-app-start.sh - - peers_ids:/peers + - ../config/watcher-mobymask-v3-demo/mobymask-app-start.sh:/scripts/mobymask-app-start.sh + - ../config/watcher-mobymask-v3-demo/local/keys:/server/keys - mobymask_deployment:/server - nitro_deployment:/nitro ports: @@ -40,6 +28,5 @@ services: - "host.docker.internal:host-gateway" volumes: - peers_ids: mobymask_deployment: nitro_deployment: diff --git a/stack_orchestrator/data/compose/docker-compose-watcher-mobymask-v3-demo.yml b/stack_orchestrator/data/compose/docker-compose-watcher-mobymask-v3-demo.yml index 5bb5f03a..d8e4a15f 100644 --- a/stack_orchestrator/data/compose/docker-compose-watcher-mobymask-v3-demo.yml +++ b/stack_orchestrator/data/compose/docker-compose-watcher-mobymask-v3-demo.yml @@ -29,7 +29,7 @@ services: working_dir: /app/packages/server environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - # ENV: "PROD" + # ENV: "PROD" # Check if required CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} CERC_PRIVATE_KEY_DEPLOYER: ${CERC_PRIVATE_KEY_DEPLOYER} CERC_MOBYMASK_APP_BASE_URI: ${CERC_MOBYMASK_APP_BASE_URI} diff --git a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/config.env b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/config.env index 3b2c1638..c0bb1f74 100644 --- a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/config.env +++ b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/config.env @@ -1,7 +1,11 @@ +# Watchers CERC_ETH_RPC_ENDPOINT="http://op-geth:8545" -CERC_PRIVATE_KEY_DEPLOYER="0xbe4aa664815ea3bc3d63118649a733f6c96b243744310806ecb6d96359ab62cf" # L1 faucet account #4 +CERC_PRIVATE_KEY_DEPLOYER="0xbe4aa664815ea3bc3d63118649a733f6c96b243744310806ecb6d96359ab62cf" # L1 faucet account #4, funded on L2 CERC_MOBYMASK_APP_BASE_URI="http://127.0.0.1:3004/#" CERC_ETH_RPC_QUERY_ENDPOINT="http://op-geth:8545" CERC_ETH_RPC_MUTATION_ENDPOINT="http://op-geth:8545" -CERC_NITRO_CHAIN_URL="http://op-geth:8546" + +# App +CERC_APP_WATCHER_URL="http://localhost:3001" +CERC_SNAP_URL=http://localhost:8080 diff --git a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-1.json b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-1.json index d4dfdfc7..23c8254e 100644 --- a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-1.json +++ b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-1.json @@ -11,6 +11,7 @@ }, "peer": { "privateKey": "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", + "nitroAddress": "0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE", "nitroPrivateKey": "2d999770f7b5d49b694080f987b82bbc9fc9ac2b4dcc10b0f8aba7d700f69c6d" }, "consensus": { diff --git a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-2.json b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-2.json index 7bf99cb3..8bac1eec 100644 --- a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-2.json +++ b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-2.json @@ -11,6 +11,7 @@ }, "peer": { "privateKey": "59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d", + "nitroAddress": "0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94", "nitroPrivateKey": "0279651921cd800ac560c21ceea27aab0107b67daf436cdd25ce84cad30159b4" }, "consensus": { diff --git a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-3.json b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-3.json index 5129c8c5..2a0b22bf 100644 --- a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-3.json +++ b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/local/keys/watcher-3.json @@ -11,6 +11,7 @@ }, "peer": { "privateKey": "47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a", + "nitroAddress": "0x67D5b55604d1aF90074FcB69b8C51838FFF84f8d", "nitroPrivateKey": "58368d20ff12f17669c06158c21d885897aa56f9be430edc789614bf9851d53f" }, "consensus": { diff --git a/stack_orchestrator/data/config/watcher-mobymask-v3-demo/mobymask-app-start.sh b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/mobymask-app-start.sh new file mode 100644 index 00000000..d063f6de --- /dev/null +++ b/stack_orchestrator/data/config/watcher-mobymask-v3-demo/mobymask-app-start.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +watcher_keys_dir="/server/keys" + +# Configure relay nodes to connect to +# Note: Assuming host ports for watchers (1-3) relay nodes +RELAY_NODES="[\"/ip4/127.0.0.1/tcp/9090/ws/p2p/$(jq -r '.relayPeerId.id' ${watcher_keys_dir}/watcher-1.json)\", \"/ip4/127.0.0.1/tcp/9091/ws/p2p/$(jq -r '.relayPeerId.id' ${watcher_keys_dir}/watcher-2.json)\", \"/ip4/127.0.0.1/tcp/9092/ws/p2p/$(jq -r '.relayPeerId.id' ${watcher_keys_dir}/watcher-3.json)\"]" + +# Configure watcher (1) Nitro account to make payments to +PAYMENT_NITRO_ADDRESS=$(jq -r '.peer.nitroAddress' ${watcher_keys_dir}/watcher-1.json) + +echo "Using RELAY_NODES $RELAY_NODES" +echo "Using PAYMENT_NITRO_ADDRESS $PAYMENT_NITRO_ADDRESS" + +# Use config from mounted volume +echo "Taking config for deployed contracts from mounted volume" +while [ ! -f /server/config.json ]; do + echo "Config not found, retrying in 5 seconds..." + sleep 5 +done + +# Get deployed contract address and chain id +DEPLOYED_CONTRACT=$(jq -r '.address' /server/config.json | tr -d '"') +CHAIN_ID=$(jq -r '.chainId' /server/config.json) + +echo "Using DEPLOYED_CONTRACT $DEPLOYED_CONTRACT" +echo "Using CHAIN_ID $CHAIN_ID" + +nitro_addresses_file="/nitro/nitro-addresses.json" +nitro_addresses_destination_file="/app/src/utils/nitro-addresses.json" +if [ -f ${nitro_addresses_file} ]; then + echo "Using Nitro addresses from ${nitro_addresses_file}:" + cat "$nitro_addresses_file" + cat "$nitro_addresses_file" > "$nitro_addresses_destination_file" +else + echo "Nitro addresses not available" + exit 1 +fi + +# Export config values in a json file +app_config_file="/app/src/utils/config.json" +app_config_json=$(jq -n \ + --arg name "MobyMask" \ + --argjson enableDebugInfo true \ + --arg address "$DEPLOYED_CONTRACT" \ + --argjson chainId "$CHAIN_ID" \ + --argjson relayNodes "$RELAY_NODES" \ + --argjson denyMultiaddrs "[]" \ + --arg pubsub "" \ + --argjson directPeers "[]" \ + '.name = $name | .address = $address | .chainId = $chainId | .relayNodes = $relayNodes | .peer.enableDebugInfo = $enableDebugInfo | .peer.denyMultiaddrs = $denyMultiaddrs | .peer.pubsub = $pubsub | .peer.directPeers = $directPeers') +echo "$app_config_json" > "${app_config_file}" + +echo "Using CERC_APP_WATCHER_URL $CERC_APP_WATCHER_URL" +echo "Using CERC_SNAP_URL $CERC_SNAP_URL" + +REACT_APP_DEBUG_PEER=true \ +REACT_APP_WATCHER_URI="$CERC_APP_WATCHER_URL/graphql" \ +REACT_APP_PAY_TO_NITRO_ADDRESS="$PAYMENT_NITRO_ADDRESS" \ +REACT_APP_SNAP_ORIGIN="local:$CERC_SNAP_URL" \ +yarn build + +http-server -p 80 /app/build