Add a fixturenet-payments stack (#540)

* Add a fixturenet-payments stack

* Export the WebSocket port in fixturenet-eth-geth service

* Add container to run a go-nitro node

* Add container to deploy Nitro contracts

* Read contract addresses from a volume when running the Nitro node

* Add a service for Nitro reverse payment proxy

* Expose payment proxy endpoint to be accessible from host

* Map nitro node messaging and payment proxy ports to host

* Use container to deploy Nitro contracts in mobymask-v3 stack

* Use a common contract deployment script from mobymask-v3 stack

* Add MobyMask contract deployment and watcher services

* Fixes for contract deployment and watcher scripts

* Add a container and service for mobymask-snap

* Add MobyMask app service

* Add container and service for a ponder app

* Fix ponder setup and update instructions

* Handle review comments

* Use enablepaidrpcmethods flag in reverse payment proxy server

* Update go-nitro branch

* Fixes for mobymask-v3 stack

---------

Co-authored-by: Nabarun <nabarun@deepstacksoft.com>
This commit is contained in:
prathamesh0
2023-10-03 17:40:34 +05:30
committed by GitHub
co-authored by nabarun
parent b485a3b8d8
commit cf039d9562
36 changed files with 836 additions and 212 deletions
@@ -0,0 +1,25 @@
# Required for:
# Nitro contracts deployment
# MobyMask contract deployment
CERC_PRIVATE_KEY_DEPLOYER="0x888814df89c4358d7ddb3fa4b0213e7331239a80e1f013eaa7b2deca2a41a218"
# ipld-eth-server's go-nitro node credentials
NITRO_PK=2d999770f7b5d49b694080f987b82bbc9fc9ac2b4dcc10b0f8aba7d700f69c6d
NITRO_CHAIN_PK=570b909da9669b2f35a0b1ac70b8358516d55ae1b5b3710e95e9a94395090597
# Watcher's nitro node credentials
CERC_WATCHER_NITRO_PK="0279651921cd800ac560c21ceea27aab0107b67daf436cdd25ce84cad30159b4"
# Used for sending MobyMask chain txs; also serves as chain pk for watcher's nitro node
CERC_PRIVATE_KEY_PEER="111b7500bdce494d6f4bcfe8c2a0dde2ef92f751d9070fac6475dbd6d8021b3f"
# Ponder app's nitro node credentials
CERC_PONDER_NITRO_PK=58368d20ff12f17669c06158c21d885897aa56f9be430edc789614bf9851d53f
CERC_PONDER_NITRO_CHAIN_PK=fb1e9af328c283ca3e2486e7c24d13582b7912057d8b9542ff41503c85bc05c0
# Used by watcher and ponder app for sending upstream payments
CERC_UPSTREAM_NITRO_ADDRESS="0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE" # corresponds to NITRO_PK
CERC_UPSTREAM_NITRO_MULTIADDR="/dns4/go-nitro/tcp/5005/ws/p2p/16Uiu2HAmSjXJqsyBJgcBUU2HQmykxGseafSatbpq5471XmuaUqyv"
# Used by the the MobyMask app to make payments to watcher
CERC_PAYMENT_NITRO_ADDRESS="0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94" # corresponds to CERC_WATCHER_NITRO_PK
@@ -0,0 +1,70 @@
# fixturenet-payments
## Setup
Clone required repositories:
```bash
laconic-so --stack fixturenet-payments setup-repositories --pull
```
Build the container images:
```bash
laconic-so --stack fixturenet-payments build-containers
```
## Deploy
### Configuration
Deploy the stack:
```bash
laconic-so --stack fixturenet-payments deploy --cluster payments up
# Exposed on host ports:
# 5005: go-nitro node's p2p msg port
# 8081: reverse payment proxy's RPC endpoint
# 15432: MobyMask v3 watcher's db endpoint
# 3001: MobyMask v3 watcher endpoint
# 9090: MobyMask v3 watcher relay node endpoint
# 8080: MobyMask snap
# 3004: MobyMask v3 app
```
Check the logs of the MobyMask contract deployment container to get the deployed contract's address and generated root invite link:
```bash
docker logs -f $(docker ps -aq --filter name="mobymask-1")
```
Check the reverse payment proxy container logs:
```bash
docker logs -f $(docker ps -aq --filter name="nitro-reverse-payment-proxy")
```
Run the ponder app:
```bash
docker exec -it payments-ponder-app-1 bash -c "pnpm start"
```
## Clean up
Stop all the services running in background:
```bash
laconic-so --stack fixturenet-payments deploy --cluster payments down 30
```
Clear volumes created by this stack:
```bash
# List all relevant volumes
docker volume ls -q --filter "name=[payments"
# Remove all the listed volumes
docker volume rm $(docker volume ls -q --filter "name=[payments")
```
@@ -0,0 +1,53 @@
version: "1.0"
name: fixturenet-payments
description: "Stack to demonstrate payments between various services"
repos:
# fixturenet repos
- github.com/cerc-io/go-ethereum
- github.com/cerc-io/lighthouse
- github.com/cerc-io/ipld-eth-db
- github.com/cerc-io/ipld-eth-server
# nitro repos
- github.com/cerc-io/ts-nitro@v0.1.12
- github.com/cerc-io/go-nitro@v0.1.0-ts-port-0.1.4 # TODO: Update after fixes
# mobymask watcher repos
- github.com/cerc-io/watcher-ts@v0.2.61
- github.com/cerc-io/mobymask-v2-watcher-ts@v3 # TODO: Update after fixes
- github.com/cerc-io/MobyMask@v0.1.3
# mobymask app repos
- github.com/cerc-io/mobymask-snap
- github.com/cerc-io/mobymask-ui@v0.2.0
# ponder repo
- github.com/cerc-io/ponder@laconic
containers:
# fixturenet images
- cerc/go-ethereum
- cerc/lighthouse
- cerc/lighthouse-cli
- cerc/fixturenet-eth-genesis
- cerc/fixturenet-eth-geth
- cerc/fixturenet-eth-lighthouse
- cerc/ipld-eth-db
- cerc/ipld-eth-server
- cerc/nitro-contracts
- cerc/go-nitro
# mobymask watcher images
- cerc/watcher-ts
- cerc/watcher-mobymask-v3
- cerc/mobymask
# mobymask app images
- cerc/mobymask-snap
- cerc/mobymask-ui
# ponder image
- cerc/ponder
pods:
- fixturenet-eth
- ipld-eth-server
- ipld-eth-db
- nitro-contracts
- go-nitro
- nitro-reverse-payment-proxy
- watcher-mobymask-v3
- mobymask-snap
- mobymask-app-v3
- ponder
+5 -2
View File
@@ -2,15 +2,18 @@ version: "1.0"
description: "MobyMask v3 stack"
name: mobymask-v3
repos:
- github.com/cerc-io/ts-nitrov0.1.12
- github.com/cerc-io/watcher-ts@v0.2.57
- github.com/cerc-io/mobymask-v2-watcher-ts@v3
- github.com/cerc-io/mobymask-v2-watcher-ts@v3 # TODO: Update after fixes
- github.com/cerc-io/MobyMask@v0.1.3
- github.com/cerc-io/mobymask-ui
- github.com/cerc-io/mobymask-ui@v0.2.0
containers:
- cerc/nitro-contracts
- cerc/watcher-ts
- cerc/watcher-mobymask-v3
- cerc/mobymask
- cerc/mobymask-ui
pods:
- nitro-contracts
- watcher-mobymask-v3
- mobymask-app-v3
+19 -21
View File
@@ -2,7 +2,7 @@
## Setup
Prerequisite: L2 Optimism Geth and Node RPC endpoints
Prerequisite: L2 Optimism Geth RPC endpoint
Clone required repositories:
@@ -23,21 +23,16 @@ laconic-so --stack mobymask-v3 build-containers --exclude cerc/mobymask-ui
Create and update an env file to be used in the next step ([defaults](../../config/watcher-mobymask-v3/mobymask-params.env)):
```bash
# External L2 endpoints
CERC_L2_GETH_RPC=
# External ETH RPC endpoint (L2 Optimism geth)
CERC_ETH_RPC_ENDPOINT=
# Endpoints waited on before contract deployment
CERC_L2_GETH_HOST=
CERC_L2_GETH_PORT=
# External ETH RPC endpoint used for queries in the watcher
CERC_ETH_RPC_QUERY_ENDPOINT=
CERC_L2_NODE_HOST=
CERC_L2_NODE_PORT=
# External ETH RPC endpoint used for mutations in the watcher
CERC_ETH_RPC_MUTATION_ENDPOINT=
# URL (fixturenet-eth-bootnode-lighthouse) to get CSV with credentials for accounts on L1 to perform txs on L2
CERC_L1_ACCOUNTS_CSV_URL=
# OR
# Specify the required account credentials
# Specify the an account PK for contract deployment
CERC_PRIVATE_KEY_DEPLOYER=
# Base URI for mobymask-app
@@ -71,11 +66,14 @@ Create and update an env file to be used in the next step ([defaults](../../conf
CERC_PRIVATE_KEY_PEER=
# Specify private key for the Nitro account
CERC_PRIVATE_KEY_NITRO=
CERC_WATCHER_NITRO_PK=
# (Optional) Set a pre-existing peer id to be used (enables consensus)
# Uses a generated peer id if not set (disables consensus)
CERC_PEER_ID=
# Disable payments to upstream ETH server
CERC_ENABLE_UPSTREAM_PAYMENTS=false
```
* NOTE: If Optimism is running on the host machine, use `host.docker.internal` as the hostname to access the host port
@@ -83,13 +81,13 @@ Create and update an env file to be used in the next step ([defaults](../../conf
### Deploy the stack
```bash
laconic-so --stack mobymask-v3 deploy --cluster mobymask_v3 --include watcher-mobymask-v3 --env-file <PATH_TO_ENV_FILE> up
laconic-so --stack mobymask-v3 deploy --cluster mobymask_v3 --exclude mobymask-app-v3 --env-file <PATH_TO_ENV_FILE> up
```
* To list down and monitor the running containers:
```bash
laconic-so --stack mobymask-v3 deploy --cluster mobymask_v3 --include watcher-mobymask-v3 ps
laconic-so --stack mobymask-v3 deploy --cluster mobymask_v3 --exclude mobymask-app-v3 ps
# With status
docker ps -a
@@ -106,18 +104,18 @@ laconic-so --stack mobymask-v3 deploy --cluster mobymask_v3 --include watcher-mo
docker logs -f $(docker ps -aq --filter name="mobymask-1")
```
* Check the logs of the watcher server container to get the deployed Nitro contracts' addresses:
* Check logs of the Nitro contracts container to get the deployed Nitro contracts' addresses:
```bash
docker exec -it $(docker ps -q --filter name="mobymask-watcher-server") bash -c "cat /nitro/nitro-addresses.json"
```
```bash
docker exec -it $(docker ps -q --filter name="nitro-contracts") bash -c "cat /app/deployment/nitro-addresses.json"
```
## Clean up
Stop all services running in the background:
```bash
laconic-so --stack mobymask-v3 deploy --cluster mobymask_v3 --include watcher-mobymask-v3 down
laconic-so --stack mobymask-v3 deploy --cluster mobymask_v3 --exclude mobymask-app-v3 down
```
Clear volumes created by this stack:
+1 -1
View File
@@ -56,7 +56,7 @@ Create and update an env file to be used in the next step ([defaults](../../conf
# Nitro account address to make the query and mutation payments to
CERC_PAYMENT_NITRO_ADDRESS=
# Endpoint for Mobymask snap installation
# (Optional) Endpoint for Mobymask snap installation
CERC_SNAP_URL=
```