From 76c2384039f4f223f7727d3852ad443dbb03ae05 Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Wed, 8 May 2024 19:48:12 +0000 Subject: [PATCH] Add ts-nitro example app. (#6) Reviewed-on: https://git.vdb.to/cerc-io/din-payments-stack/pulls/6 Co-authored-by: Thomas E Lackey Co-committed-by: Thomas E Lackey --- .../compose/docker-compose-go-nitro-auth.yml | 113 ------------------ .../config/go-nitro-auth/alice.env | 19 --- .../config/go-nitro-auth/bob.env | 19 --- .../config/go-nitro-auth/bootnode.env | 17 --- .../config/go-nitro-auth/caddy/Caddyfile | 42 ------- stack-orchestrator/config/ts-nitro/run.sh | 45 +++++++ .../container-build/cerc-ts-nitro/Dockerfile | 12 ++ .../container-build/cerc-ts-nitro/build.sh | 9 ++ .../stacks/din-payments/stack.yml | 12 +- 9 files changed, 72 insertions(+), 216 deletions(-) delete mode 100644 stack-orchestrator/compose/docker-compose-go-nitro-auth.yml delete mode 100644 stack-orchestrator/config/go-nitro-auth/alice.env delete mode 100644 stack-orchestrator/config/go-nitro-auth/bob.env delete mode 100644 stack-orchestrator/config/go-nitro-auth/bootnode.env delete mode 100644 stack-orchestrator/config/go-nitro-auth/caddy/Caddyfile create mode 100755 stack-orchestrator/config/ts-nitro/run.sh create mode 100644 stack-orchestrator/container-build/cerc-ts-nitro/Dockerfile create mode 100755 stack-orchestrator/container-build/cerc-ts-nitro/build.sh diff --git a/stack-orchestrator/compose/docker-compose-go-nitro-auth.yml b/stack-orchestrator/compose/docker-compose-go-nitro-auth.yml deleted file mode 100644 index 7fa6a90..0000000 --- a/stack-orchestrator/compose/docker-compose-go-nitro-auth.yml +++ /dev/null @@ -1,113 +0,0 @@ -version: '3.7' - -services: - go-nitro-alice: - image: cerc/go-nitro:local - hostname: go-nitro-alice - restart: on-failure - depends_on: - - go-nitro-bootnode - environment: - CERC_NITRO_CHAIN_PK: ${CERC_NITRO_CHAIN_PK_ALICE:-888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218} - CERC_NITRO_CHAIN_URL: ${CERC_NITRO_CHAIN_URL:-ws://fixturenet-eth-geth-1:8546} - CERC_NA_ADDRESS: ${CERC_NA_ADDRESS} - CERC_VPA_ADDRESS: ${CERC_VPA_ADDRESS} - CERC_CA_ADDRESS: ${CERC_CA_ADDRESS} - env_file: - - ../config/go-nitro-auth/alice.env - entrypoint: ["bash", "-c", "/app/run-nitro-node.sh"] - volumes: - - nitro_deployment:/app/deployment - - go_nitro_data_alice:/app/data - - ../config/go-nitro/run-nitro-node.sh:/app/run-nitro-node.sh - healthcheck: - test: ["CMD", "nc", "-vz", "localhost", "4006"] - interval: 5s - timeout: 5s - retries: 100 - start_period: 100s - ports: - - "3006" - - "4006" - - "5006" - - "4106" - - "4206" - - "4216" - - go-nitro-bob: - image: cerc/go-nitro:local - hostname: go-nitro-bob - restart: on-failure - depends_on: - - go-nitro-bootnode - environment: - CERC_NITRO_CHAIN_PK: ${CERC_NITRO_CHAIN_PK_BOB:-570b909da9669b2f35a0b1ac70b8358516d55ae1b5b3710e95e9a94395090597} - CERC_NITRO_CHAIN_URL: ${CERC_NITRO_CHAIN_URL:-ws://fixturenet-eth-geth-1:8546} - CERC_NA_ADDRESS: ${CERC_NA_ADDRESS} - CERC_VPA_ADDRESS: ${CERC_VPA_ADDRESS} - CERC_CA_ADDRESS: ${CERC_CA_ADDRESS} - env_file: - - ../config/go-nitro-auth/bob.env - entrypoint: ["bash", "-c", "/app/run-nitro-node.sh"] - volumes: - - nitro_deployment:/app/deployment - - go_nitro_data_bob:/app/data - - ../config/go-nitro/run-nitro-node.sh:/app/run-nitro-node.sh - healthcheck: - test: ["CMD", "nc", "-vz", "localhost", "4007"] - interval: 5s - timeout: 5s - retries: 100 - start_period: 100s - ports: - - "3007" - - "4007" - - "5007" - - "4107" - - "4207" - - "4217" - - go-nitro-bootnode: - image: cerc/go-nitro:local - hostname: go-nitro-bootnode - restart: on-failure - environment: - CERC_NITRO_CHAIN_URL: ${CERC_NITRO_CHAIN_URL:-ws://fixturenet-eth-geth-1:8546} - CERC_NA_ADDRESS: ${CERC_NA_ADDRESS} - CERC_VPA_ADDRESS: ${CERC_VPA_ADDRESS} - CERC_CA_ADDRESS: ${CERC_CA_ADDRESS} - CERC_NITRO_RELAY_ON: true - env_file: - - ../config/go-nitro-auth/bootnode.env - entrypoint: [ "bash", "-c", "/app/run-nitro-node.sh" ] - volumes: - - nitro_deployment:/app/deployment - - go_nitro_data_bootnode:/app/data - - ../config/go-nitro/run-nitro-node.sh:/app/run-nitro-node.sh - healthcheck: - test: [ "CMD", "nc", "-vz", "localhost", "4008" ] - interval: 5s - timeout: 5s - retries: 100 - start_period: 100s - ports: - - "9090" - - nitro-caddy: - image: caddy:2-alpine - restart: always - environment: - CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT:-http://fixturenet-eth-geth-1:8545} - volumes: - - ../config/go-nitro-auth/caddy/Caddyfile:/etc/caddy/Caddyfile - ports: - - "5678" - depends_on: - - go-nitro-alice - - go-nitro-bob - -volumes: - go_nitro_data_alice: - go_nitro_data_bob: - go_nitro_data_bootnode: - nitro_deployment: \ No newline at end of file diff --git a/stack-orchestrator/config/go-nitro-auth/alice.env b/stack-orchestrator/config/go-nitro-auth/alice.env deleted file mode 100644 index 2de2a01..0000000 --- a/stack-orchestrator/config/go-nitro-auth/alice.env +++ /dev/null @@ -1,19 +0,0 @@ -# SET ME! Your on-chain private key. -#CERC_NITRO_CHAIN_PK= - -# Default is CERC_NITRO_CHAIN_PK. -#CERC_NITRO_PK= - -# SET ME! The WebSocket to connect to. -#CERC_NITRO_CHAIN_URL=wss://linea-sepolia.infura.io/ws/v3/ - -CERC_NITRO_AUTH_ON=false -CERC_NITRO_AUTH_RPC_PORT=4006 -CERC_NITRO_AUTH_UI_PORT=4206 -CERC_NITRO_BOOT_PEERS="/dns4/go-nitro-bootnode/tcp/3008/p2p/16Uiu2HAmFYz5YPf3GtkfQsAwYJfDsKSm34U9qAiTwxW7RJUVGMRK" -CERC_NITRO_DURABLE_STORE_FOLDER=/app/data/nitro-store -CERC_NITRO_MSG_PORT=3006 -CERC_NITRO_RPC_PORT=4006 -CERC_NITRO_UI_PORT=4106 -CERC_NITRO_USE_DURABLE_STORE=true -CERC_NITRO_WS_MSG_PORT=5006 \ No newline at end of file diff --git a/stack-orchestrator/config/go-nitro-auth/bob.env b/stack-orchestrator/config/go-nitro-auth/bob.env deleted file mode 100644 index fc280b5..0000000 --- a/stack-orchestrator/config/go-nitro-auth/bob.env +++ /dev/null @@ -1,19 +0,0 @@ -# SET ME! Your on-chain private key. -#CERC_NITRO_CHAIN_PK= - -# Default is CERC_NITRO_CHAIN_PK. -#CERC_NITRO_PK= - -# SET ME! The WebSocket to connect to. -#CERC_NITRO_CHAIN_URL=wss://linea-sepolia.infura.io/ws/v3/ - -CERC_NITRO_AUTH_ON=true -CERC_NITRO_AUTH_RPC_PORT=4007 -CERC_NITRO_AUTH_UI_PORT=4207 -CERC_NITRO_BOOT_PEERS="/dns4/go-nitro-bootnode/tcp/3008/p2p/16Uiu2HAmFYz5YPf3GtkfQsAwYJfDsKSm34U9qAiTwxW7RJUVGMRK" -CERC_NITRO_DURABLE_STORE_FOLDER=/app/data/nitro-store -CERC_NITRO_MSG_PORT=3007 -CERC_NITRO_RPC_PORT=4007 -CERC_NITRO_UI_PORT=4107 -CERC_NITRO_USE_DURABLE_STORE=true -CERC_NITRO_WS_MSG_PORT=5007 diff --git a/stack-orchestrator/config/go-nitro-auth/bootnode.env b/stack-orchestrator/config/go-nitro-auth/bootnode.env deleted file mode 100644 index 241fbb0..0000000 --- a/stack-orchestrator/config/go-nitro-auth/bootnode.env +++ /dev/null @@ -1,17 +0,0 @@ -CERC_NITRO_CHAIN_PK=596db2ac27479cfdf60f708bf64ae44a1c5090e9446cca011d72bc9a59b47d3d -CERC_NITRO_PK=f41086394674cf00a66448c6688295d7330af39f6f38fed89ea023e39382d6a0 - -# The WebSocket to connect to. -#CERC_NITRO_CHAIN_URL=wss://linea-sepolia.infura.io/ws/v3/ - -CERC_NITRO_AUTH_ON=false -CERC_NITRO_AUTH_RPC_PORT=4008 -CERC_NITRO_AUTH_UI_PORT=4208 -CERC_NITRO_DURABLE_STORE_FOLDER=/app/data/nitro-store -CERC_NITRO_MSG_PORT=3008 -CERC_NITRO_RPC_PORT=4008 -CERC_NITRO_UI_PORT=4108 -CERC_NITRO_USE_DURABLE_STORE=true -CERC_NITRO_WS_MSG_PORT=5008 - -CERC_SCRIPT_DEBUG=true \ No newline at end of file diff --git a/stack-orchestrator/config/go-nitro-auth/caddy/Caddyfile b/stack-orchestrator/config/go-nitro-auth/caddy/Caddyfile deleted file mode 100644 index 13a1160..0000000 --- a/stack-orchestrator/config/go-nitro-auth/caddy/Caddyfile +++ /dev/null @@ -1,42 +0,0 @@ -:5678 { - handle /pay* { - reverse_proxy http://go-nitro-bob:8547 - } - - @eth-key-in-header { - path_regexp /eth/?$ - header X-Api-Key * - } - - handle @eth-key-in-header { - forward_auth go-nitro-bob:8547 { - uri /auth/{header.x-api-key} - } - rewrite * / - reverse_proxy {$CERC_ETH_RPC_ENDPOINT} { - header_up Host {upstream_hostport} - } - } - - @eth-key-in-path { - path_regexp apikey eth/(.+)$ - } - - handle @eth-key-in-path { - forward_auth go-nitro-bob:8547 { - uri /auth/{re.apikey.1} - } - rewrite * / - reverse_proxy {$CERC_ETH_RPC_ENDPOINT} { - header_up Host {upstream_hostport} - } - } - - handle /eth* { - respond "401 Unauthorized" 401 - } - - handle { - reverse_proxy http://go-nitro-alice:4206 - } -} \ No newline at end of file diff --git a/stack-orchestrator/config/ts-nitro/run.sh b/stack-orchestrator/config/ts-nitro/run.sh new file mode 100755 index 0000000..6157017 --- /dev/null +++ b/stack-orchestrator/config/ts-nitro/run.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +if [ -z "$CERC_NITRO_CHAIN_PK" ] || [ -z "$CERC_NITRO_CHAIN_URL" ]; then + echo "You most set both CERC_NITRO_CHAIN_PK and CERC_NITRO_CHAIN_URL." 1>&2 + exit 1 +fi + +nitro_addresses_file="/app/deployment/nitro-addresses.json" + +# Check if CERC_NA_ADDRESS environment variable is set +if [ -n "$CERC_NA_ADDRESS" ]; then + echo "CERC_NA_ADDRESS is set to '$CERC_NA_ADDRESS'" + echo "CERC_VPA_ADDRESS is set to '$CERC_VPA_ADDRESS'" + echo "CERC_CA_ADDRESS is set to '$CERC_CA_ADDRESS'" + echo "Using the above Nitro addresses" + + NA_ADDRESS=${CERC_NA_ADDRESS} + VPA_ADDRESS=${CERC_VPA_ADDRESS} + CA_ADDRESS=${CERC_CA_ADDRESS} +elif [ -f ${nitro_addresses_file} ]; then + echo "Reading Nitro addresses from ${nitro_addresses_file}" + + NA_ADDRESS=$(jq -r '.nitroAdjudicatorAddress' ${nitro_addresses_file}) + VPA_ADDRESS=$(jq -r '.virtualPaymentAppAddress' ${nitro_addresses_file}) + CA_ADDRESS=$(jq -r '.consensusAppAddress' ${nitro_addresses_file}) +else + echo "File ${nitro_addresses_file} not found" + exit 1 +fi + +cd /app/packages/example-web-app +cat > .env < /dev/null && pwd ) + +docker build -t cerc/ts-nitro:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/ts-nitro diff --git a/stack-orchestrator/stacks/din-payments/stack.yml b/stack-orchestrator/stacks/din-payments/stack.yml index 00267c4..fac00e9 100644 --- a/stack-orchestrator/stacks/din-payments/stack.yml +++ b/stack-orchestrator/stacks/din-payments/stack.yml @@ -1,17 +1,17 @@ version: "1.0" -name: go-nitro-auth +name: din-payments description: "Stack to demonstrate payments between various services" repos: - # for nitro-contracts - - github.com/cerc-io/ts-nitro@v0.1.15 - # for go-nitro and nitro-rpc-client + # for nitro-contracts and ts-nitro example app + - github.com/cerc-io/ts-nitro@telackey/nitro-auth-example-app + # for go-nitro, nitro-rpc-client, and go-nitro-auth example app - github.com/cerc-io/go-nitro@telackey/update containers: # nitro - cerc/nitro-contracts + - cerc/ts-nitro - cerc/go-nitro - cerc/nitro-rpc-client pods: - nitro-contracts - - go-nitro-auth - + - nitro-auth