forked from cerc-io/stack-orchestrator
Run go-nitro node in process in ipld-eth-server (#575)
* Setup ipld-eth-server to run in-process Nitro node * Update watcher version in fixturenet-payments stack * Update upstream nitro multiaddr in watcher setup * Change RPC query endpoint to ipld-eth-server * Update Ponder config to pay ipld-eth-server Nitro node * Separate nitro-rpc-client service and update demo.md * Remove unnecessary volumes * Update ipld-eth-server branch * Fix clean up steps --------- Co-authored-by: Nabarun <nabarun@deepstacksoft.com> Co-authored-by: Shreerang Kale <shreerangkale@gmail.com>
This commit is contained in:
parent
a68abe5f5d
commit
246d3d8732
@ -5,6 +5,9 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
ipld-eth-db:
|
ipld-eth-db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
# Wait for Nitro contracts to be deployed
|
||||||
|
nitro-contracts:
|
||||||
|
condition: service_completed_successfully
|
||||||
image: cerc/ipld-eth-server:local
|
image: cerc/ipld-eth-server:local
|
||||||
environment:
|
environment:
|
||||||
SERVER_HTTP_PATH: 0.0.0.0:8081
|
SERVER_HTTP_PATH: 0.0.0.0:8081
|
||||||
@ -27,18 +30,37 @@ services:
|
|||||||
PROM_HTTP_PORT: "8090"
|
PROM_HTTP_PORT: "8090"
|
||||||
LOG_LEVEL: "debug"
|
LOG_LEVEL: "debug"
|
||||||
CERC_REMOTE_DEBUG: ${CERC_REMOTE_DEBUG:-true}
|
CERC_REMOTE_DEBUG: ${CERC_REMOTE_DEBUG:-true}
|
||||||
|
NITRO_PK: ${CERC_NITRO_PK:-2d999770f7b5d49b694080f987b82bbc9fc9ac2b4dcc10b0f8aba7d700f69c6d}
|
||||||
|
NITRO_CHAIN_PK: ${CERC_NITRO_CHAIN_PK:-570b909da9669b2f35a0b1ac70b8358516d55ae1b5b3710e95e9a94395090597}
|
||||||
|
NITRO_CHAIN_URL: ${CERC_NITRO_CHAIN_URL:-ws://fixturenet-eth-geth-1:8546}
|
||||||
|
NITRO_USE_DURABLE_STORE: ${CERC_NITRO_USE_DURABLE_STORE:-false}
|
||||||
|
NITRO_DURABLE_STORE_FOLDER: ${CERC_NITRO_DURABLE_STORE_FOLDER:-/app/data/nitro-store}
|
||||||
|
CERC_NA_ADDRESS: ${CERC_NA_ADDRESS}
|
||||||
|
CERC_VPA_ADDRESS: ${CERC_VPA_ADDRESS}
|
||||||
|
CERC_CA_ADDRESS: ${CERC_CA_ADDRESS}
|
||||||
|
entrypoint: ["bash", "-c", "/app/entrypoint.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ../config/ipld-eth-server/chain.json
|
source: ../config/ipld-eth-server/chain.json
|
||||||
target: /tmp/chain.json
|
target: /tmp/chain.json
|
||||||
|
- eth_server_nitro_data:/app/data
|
||||||
|
- nitro_deployment:/app/deployment
|
||||||
|
- ../config/ipld-eth-server/entrypoint.sh:/app/entrypoint.sh
|
||||||
ports:
|
ports:
|
||||||
- "8081"
|
- "8081"
|
||||||
- "8082"
|
- "8082"
|
||||||
- "8090"
|
- "8090"
|
||||||
- "40000"
|
- "40000"
|
||||||
|
- "3005"
|
||||||
|
- "4005:4005"
|
||||||
|
- "5005:5005"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-v", "localhost", "8081"]
|
test: ["CMD", "nc", "-v", "localhost", "8081"]
|
||||||
interval: 20s
|
interval: 20s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 15
|
retries: 15
|
||||||
start_period: 5s
|
start_period: 5s
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
eth_server_nitro_data:
|
||||||
|
nitro_deployment:
|
||||||
|
7
app/data/compose/docker-compose-nitro-rpc-client.yml
Normal file
7
app/data/compose/docker-compose-nitro-rpc-client.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
nitro-rpc-client:
|
||||||
|
image: cerc/nitro-rpc-client:local
|
||||||
|
hostname: nitro-rpc-client
|
||||||
|
restart: on-failure
|
||||||
|
command: ["bash", "-c", "tail -f /dev/null"]
|
@ -8,14 +8,14 @@ services:
|
|||||||
working_dir: /app/examples/token-erc20
|
working_dir: /app/examples/token-erc20
|
||||||
environment:
|
environment:
|
||||||
CERC_PONDER_CHAIN_ID: ${PONDER_CHAIN_ID:-99}
|
CERC_PONDER_CHAIN_ID: ${PONDER_CHAIN_ID:-99}
|
||||||
CERC_PONDER_RPC_URL_1: ${PONDER_RPC_URL_1:-http://nitro-reverse-payment-proxy:8081}
|
CERC_PONDER_RPC_URL_1: ${PONDER_RPC_URL_1:-http://ipld-eth-server:8081}
|
||||||
CERC_PONDER_NITRO_PK: ${CERC_PONDER_INDEXER_NITRO_PK:-58368d20ff12f17669c06158c21d885897aa56f9be430edc789614bf9851d53f}
|
CERC_PONDER_NITRO_PK: ${CERC_PONDER_INDEXER_NITRO_PK:-58368d20ff12f17669c06158c21d885897aa56f9be430edc789614bf9851d53f}
|
||||||
CERC_PONDER_NITRO_CHAIN_PK: ${CERC_PONDER_INDEXER_NITRO_CHAIN_PK:-fb1e9af328c283ca3e2486e7c24d13582b7912057d8b9542ff41503c85bc05c0}
|
CERC_PONDER_NITRO_CHAIN_PK: ${CERC_PONDER_INDEXER_NITRO_CHAIN_PK:-fb1e9af328c283ca3e2486e7c24d13582b7912057d8b9542ff41503c85bc05c0}
|
||||||
CERC_PONDER_NITRO_CHAIN_URL: ${CERC_PONDER_NITRO_CHAIN_URL:-http://fixturenet-eth-geth-1:8546}
|
CERC_PONDER_NITRO_CHAIN_URL: ${CERC_PONDER_NITRO_CHAIN_URL:-http://fixturenet-eth-geth-1:8546}
|
||||||
CERC_RELAY_MULTIADDR: ${CERC_RELAY_MULTIADDR}
|
CERC_RELAY_MULTIADDR: ${CERC_RELAY_MULTIADDR}
|
||||||
CERC_UPSTREAM_NITRO_ADDRESS: ${CERC_UPSTREAM_NITRO_ADDRESS:-0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE}
|
CERC_UPSTREAM_NITRO_ADDRESS: ${CERC_UPSTREAM_NITRO_ADDRESS:-0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE}
|
||||||
CERC_UPSTREAM_NITRO_MULTIADDR: ${CERC_UPSTREAM_NITRO_MULTIADDR:-/dns4/go-nitro/tcp/5005/ws/p2p/16Uiu2HAmSjXJqsyBJgcBUU2HQmykxGseafSatbpq5471XmuaUqyv}
|
CERC_UPSTREAM_NITRO_MULTIADDR: ${CERC_UPSTREAM_NITRO_MULTIADDR:-/dns4/ipld-eth-server/tcp/5005/ws/p2p/16Uiu2HAmSjXJqsyBJgcBUU2HQmykxGseafSatbpq5471XmuaUqyv}
|
||||||
CERC_UPSTREAM_NITRO_PAY_AMOUNT: ${CERC_UPSTREAM_NITRO_PAY_AMOUNT:-5000}
|
CERC_UPSTREAM_NITRO_PAY_AMOUNT: ${CERC_UPSTREAM_NITRO_PAY_AMOUNT:-100}
|
||||||
command: ["bash", "./ponder-start.sh"]
|
command: ["bash", "./ponder-start.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/ponder/ponder-start.sh:/app/examples/token-erc20/ponder-start.sh
|
- ../config/ponder/ponder-start.sh:/app/examples/token-erc20/ponder-start.sh
|
||||||
|
@ -89,8 +89,8 @@ services:
|
|||||||
CERC_PEER_ID: ${CERC_PEER_ID}
|
CERC_PEER_ID: ${CERC_PEER_ID}
|
||||||
CERC_ENABLE_UPSTREAM_PAYMENTS: ${CERC_ENABLE_UPSTREAM_PAYMENTS}
|
CERC_ENABLE_UPSTREAM_PAYMENTS: ${CERC_ENABLE_UPSTREAM_PAYMENTS}
|
||||||
CERC_UPSTREAM_NITRO_ADDRESS: ${CERC_UPSTREAM_NITRO_ADDRESS:-0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE}
|
CERC_UPSTREAM_NITRO_ADDRESS: ${CERC_UPSTREAM_NITRO_ADDRESS:-0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE}
|
||||||
CERC_UPSTREAM_NITRO_MULTIADDR: ${CERC_UPSTREAM_NITRO_MULTIADDR:-/dns4/go-nitro/tcp/5005/ws/p2p/16Uiu2HAmSjXJqsyBJgcBUU2HQmykxGseafSatbpq5471XmuaUqyv}
|
CERC_UPSTREAM_NITRO_MULTIADDR: ${CERC_UPSTREAM_NITRO_MULTIADDR:-/dns4/ipld-eth-server/tcp/5005/ws/p2p/16Uiu2HAmSjXJqsyBJgcBUU2HQmykxGseafSatbpq5471XmuaUqyv}
|
||||||
CERC_UPSTREAM_NITRO_PAY_AMOUNT: ${CERC_UPSTREAM_NITRO_PAY_AMOUNT:-5000}
|
CERC_UPSTREAM_NITRO_PAY_AMOUNT: ${CERC_UPSTREAM_NITRO_PAY_AMOUNT:-100}
|
||||||
command: ["bash", "./start-server.sh"]
|
command: ["bash", "./start-server.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/watcher-mobymask-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
- ../config/watcher-mobymask-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
||||||
|
57
app/data/config/ipld-eth-server/entrypoint.sh
Executable file
57
app/data/config/ipld-eth-server/entrypoint.sh
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
|
export NITRO_NA_ADDRESS=${CERC_NA_ADDRESS}
|
||||||
|
export NITRO_VPA_ADDRESS=${CERC_VPA_ADDRESS}
|
||||||
|
export NITRO_CA_ADDRESS=${CERC_CA_ADDRESS}
|
||||||
|
elif [ -f ${nitro_addresses_file} ]; then
|
||||||
|
echo "Reading Nitro addresses from ${nitro_addresses_file}"
|
||||||
|
|
||||||
|
export NITRO_NA_ADDRESS=$(jq -r '.nitroAdjudicatorAddress' ${nitro_addresses_file})
|
||||||
|
export NITRO_VPA_ADDRESS=$(jq -r '.virtualPaymentAppAddress' ${nitro_addresses_file})
|
||||||
|
export NITRO_CA_ADDRESS=$(jq -r '.consensusAppAddress' ${nitro_addresses_file})
|
||||||
|
else
|
||||||
|
echo "File ${nitro_addresses_file} not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Wait till chain endpoint is available
|
||||||
|
retry_interval=5
|
||||||
|
while true; do
|
||||||
|
# Assuming NITRO_CHAIN_URL is of format <ws|http>://host:port
|
||||||
|
ws_host=$(echo "$NITRO_CHAIN_URL" | awk -F '://' '{print $2}' | cut -d ':' -f 1)
|
||||||
|
ws_port=$(echo "$NITRO_CHAIN_URL" | awk -F '://' '{print $2}' | cut -d ':' -f 2)
|
||||||
|
nc -z -w 1 "$ws_host" "$ws_port"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Chain endpoint is available"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Chain endpoint not yet available, retrying in $retry_interval seconds..."
|
||||||
|
sleep $retry_interval
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Beginning the ipld-eth-server process"
|
||||||
|
|
||||||
|
START_CMD="./ipld-eth-server"
|
||||||
|
if [ "true" == "$CERC_REMOTE_DEBUG" ] && [ -x "/usr/local/bin/dlv" ]; then
|
||||||
|
START_CMD="/usr/local/bin/dlv --listen=:40000 --headless=true --api-version=2 --accept-multiclient exec `pwd`/ipld-eth-server --continue --"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo running: $START_CMD ${VDB_COMMAND} --config=`pwd`/config.toml
|
||||||
|
$START_CMD ${VDB_COMMAND} --config=`pwd`/config.toml
|
||||||
|
rv=$?
|
||||||
|
|
||||||
|
if [ $rv != 0 ]; then
|
||||||
|
echo "ipld-eth-server startup failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -4,7 +4,7 @@
|
|||||||
DEFAULT_CERC_ETH_RPC_ENDPOINT="http://fixturenet-eth-geth-1:8545"
|
DEFAULT_CERC_ETH_RPC_ENDPOINT="http://fixturenet-eth-geth-1:8545"
|
||||||
|
|
||||||
# ETH RPC endpoint used for queries in the watcher
|
# ETH RPC endpoint used for queries in the watcher
|
||||||
DEFAULT_CERC_ETH_RPC_QUERY_ENDPOINT="http://nitro-reverse-payment-proxy:8081"
|
DEFAULT_CERC_ETH_RPC_QUERY_ENDPOINT="http://ipld-eth-server:8081"
|
||||||
|
|
||||||
# ETH RPC endpoint used for mutations in the watcher
|
# ETH RPC endpoint used for mutations in the watcher
|
||||||
DEFAULT_CERC_ETH_RPC_MUTATION_ENDPOINT="http://fixturenet-eth-geth-1:8545"
|
DEFAULT_CERC_ETH_RPC_MUTATION_ENDPOINT="http://fixturenet-eth-geth-1:8545"
|
||||||
|
@ -38,6 +38,7 @@ fixturenet-sushiswap-subgraph-v3
|
|||||||
watcher-mobymask-v3
|
watcher-mobymask-v3
|
||||||
mobymask-app-v3
|
mobymask-app-v3
|
||||||
go-nitro
|
go-nitro
|
||||||
|
nitro-rpc-client
|
||||||
nitro-contracts
|
nitro-contracts
|
||||||
nitro-reverse-payment-proxy
|
nitro-reverse-payment-proxy
|
||||||
mobymask-snap
|
mobymask-snap
|
||||||
|
@ -32,6 +32,7 @@ laconic-so --stack fixturenet-payments deploy --cluster payments up
|
|||||||
# 9090: MobyMask v3 watcher relay node endpoint
|
# 9090: MobyMask v3 watcher relay node endpoint
|
||||||
# 8080: MobyMask snap
|
# 8080: MobyMask snap
|
||||||
# 3004: MobyMask v3 app
|
# 3004: MobyMask v3 app
|
||||||
|
# 32***: geth in statediffing mode
|
||||||
```
|
```
|
||||||
|
|
||||||
## Demo
|
## Demo
|
||||||
@ -50,8 +51,8 @@ Clear volumes created by this stack:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# List all relevant volumes
|
# List all relevant volumes
|
||||||
docker volume ls -q --filter "name=[payments"
|
docker volume ls -q --filter "name=payments"
|
||||||
|
|
||||||
# Remove all the listed volumes
|
# Remove all the listed volumes
|
||||||
docker volume rm $(docker volume ls -q --filter "name=[payments")
|
docker volume rm $(docker volume ls -q --filter "name=payments")
|
||||||
```
|
```
|
||||||
|
@ -3,12 +3,11 @@
|
|||||||
Stack components:
|
Stack components:
|
||||||
* `ipld-eth-db` database for statediffed data
|
* `ipld-eth-db` database for statediffed data
|
||||||
* Local geth + lighthouse blockchain "fixturenet" running in statediffing mode
|
* Local geth + lighthouse blockchain "fixturenet" running in statediffing mode
|
||||||
* `ipld-eth-server` which runs an ETH RPC API and a GQL server; serves data from `ipld-eth-db`
|
* `ipld-eth-server` which runs an ETH RPC API and a GQL server; serves data from `ipld-eth-db`; also runs an in-process go-nitro node for payments required for configured RPC requests
|
||||||
* A go-nitro deployment acting as the Nitro node for `ipld-eth-server`
|
|
||||||
* A modified reverse payment proxy server (based on the one from go-nitro) that proxies requests to `ipld-eth-server`'s RPC endpoint; it talks to `ipld-eth-server`'s Nitro node to accept and validate payments required for configured RPC requests
|
|
||||||
* A MobyMask v3 watcher that pays the `ipld-eth-server` for ETH RPC requests
|
* A MobyMask v3 watcher that pays the `ipld-eth-server` for ETH RPC requests
|
||||||
* A MobyMask v3 app that pays the watcher for reads (GQL queries) and writes
|
* A MobyMask v3 app that pays the watcher for reads (GQL queries) and writes
|
||||||
* An example ERC20 Ponder app that pays the `ipld-eth-server` for ETH RPC requests
|
* An example ERC20 Ponder indexer app that pays the `ipld-eth-server` for ETH RPC requests
|
||||||
|
* An example ERC20 Ponder watcher app that pays the Ponder indexer app for GQL queries
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
@ -38,7 +37,7 @@ Stack components:
|
|||||||
* Check the payment channel status:
|
* Check the payment channel status:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker exec payments-nitro-rpc-client-1 npm exec -c "nitro-rpc-client get-payment-channel $WATCHER_UPSTREAM_PAYMENT_CHANNEL -h go-nitro -p 4005"
|
docker exec payments-nitro-rpc-client-1 npm exec -c "nitro-rpc-client get-payment-channel $WATCHER_UPSTREAM_PAYMENT_CHANNEL -h ipld-eth-server -p 4005"
|
||||||
|
|
||||||
# Expected output:
|
# Expected output:
|
||||||
# {
|
# {
|
||||||
@ -54,10 +53,10 @@ Stack components:
|
|||||||
# }
|
# }
|
||||||
```
|
```
|
||||||
|
|
||||||
* In another terminal, check the reverse payment proxy server's logs to keep track of incoming payments and RPC requests:
|
* In another terminal, check `ipld-eth-server`'s logs to keep track of incoming payments and RPC requests:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker logs -f $(docker ps -aq --filter name="nitro-reverse-payment-proxy")
|
docker logs -f $(docker ps -aq --filter name="ipld-eth-server")
|
||||||
```
|
```
|
||||||
|
|
||||||
* MetaMask flask wallet setup for running the MobyMask app:
|
* MetaMask flask wallet setup for running the MobyMask app:
|
||||||
@ -140,26 +139,30 @@ Stack components:
|
|||||||
# vulcanize:indexer isPhisher: db miss, fetching from upstream server
|
# vulcanize:indexer isPhisher: db miss, fetching from upstream server
|
||||||
# laconic:payments Making RPC call: eth_chainId
|
# laconic:payments Making RPC call: eth_chainId
|
||||||
# laconic:payments Making RPC call: eth_getBlockByHash
|
# laconic:payments Making RPC call: eth_getBlockByHash
|
||||||
|
# 2023-10-13T06:33:58.443Z ts-nitro:engine{"msg":"Sent message","_msg":{"to":"0xAAA662","from":"0xBBB676", "payloadSummaries":[],"proposalSummaries":[],"payments":[{"amount":200,"channelId":"0x9a4bdfe03c8e72f368aab07e6bd18f1cd6821170e1a93e59864aad6ee6a853a2"}],"rejectedObjectives":[]}}
|
||||||
# laconic:payments Making RPC call: eth_chainId
|
# laconic:payments Making RPC call: eth_chainId
|
||||||
# laconic:payments Making RPC call: eth_getStorageAt
|
# laconic:payments Making RPC call: eth_getStorageAt
|
||||||
|
# 2023-10-13T06:34:00.483Z ts-nitro:engine {"msg":"Sent message","_msg":{"to":"0xAAA662","from":"0xBBB676",# "payloadSummaries":[],"proposalSummaries":[],"payments":[{"amount":300,"channelId":"0x9a4bdfe03c8e72f368aab07e6bd18f1cd6821170e1a93e59864aad6ee6a853a2"}],"rejectedObjectives":[]}}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* The watcher makes several ETH RPC requests to `ipld-eth-server` to fetch data required for satisfying the GQL request(s); check the payment proxy server logs for charged RPC requests (`eth_getBlockByHash`, `eth_getBlockByNumber`, `eth_getStorageAt`):
|
* The watcher makes several ETH RPC requests to `ipld-eth-server` to fetch data required for satisfying the GQL request(s); check `ipld-eth-server` logs for charged RPC requests (`eth_getBlockByHash`, `eth_getBlockByNumber`, `eth_getStorageAt`):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Expected output:
|
# Expected output:
|
||||||
# ...
|
# ...
|
||||||
# {"time":"2023-10-06T06:46:52.769009314Z","level":"DEBUG","msg":"Serving RPC request","method":"eth_chainId"}
|
# 2023/10/13 06:34:57 INFO Received a voucher payer=0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94 amount=100
|
||||||
# {"time":"2023-10-06T06:46:52.773006426Z","level":"DEBUG","msg":"Serving RPC request","method":"eth_getBlockByNumber"}
|
# 2023/10/13 06:34:59 INFO Serving a paid RPC request method=eth_getBlockByHash sender=0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94
|
||||||
# {"time":"2023-10-06T06:46:52.811142054Z","level":"DEBUG","msg":"Request cost","cost-per-byte":1,"response-length":1480,"cost":1480,"method":"eth_getBlockByNumber"}
|
# time="2023-10-13T06:34:59Z" level=debug msg=START api_method=eth_getBlockByHash api_params="[0x46411a554f30e607bdd79cd157a60a7c8b314c0709557be3357ed2fef53d6c3d false]" api_reqid=52 conn="192.168.64.4:59644" user_id= uuid=a1893211-6992-11ee-a67a-0242c0a8400c
|
||||||
# {"time":"2023-10-06T06:46:52.811418494Z","level":"DEBUG","msg":"sent message","address":"0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE","method":"receive_voucher"}
|
# WARN [10-13|06:34:59.133] Attempting GerRPCCalls, but default PluginLoader has not been initialized
|
||||||
# {"time":"2023-10-06T06:46:52.812557482Z","level":"DEBUG","msg":"Received voucher","delta":5000}
|
# time="2023-10-13T06:34:59Z" level=debug msg=END api_method=eth_getBlockByHash api_params="[0x46411a554f30e607bdd79cd157a60a7c8b314c0709557be3357ed2fef53d6c3d false]" api_reqid=52 conn="192.168.64.4:59644" duration=5 user_id= uuid=a1893211-6992-11ee-a67a-0242c0a8400c
|
||||||
# ...
|
# 2023/10/13 06:34:59 INFO Serving a free RPC request method=eth_chainId
|
||||||
# {"time":"2023-10-06T06:46:52.87525215Z","level":"DEBUG","msg":"Serving RPC request","method":"eth_getStorageAt"}
|
# time="2023-10-13T06:34:59Z" level=debug msg=START api_method=eth_chainId api_params="[]" api_reqid=53 conn="192.168.64.4:59658" user_id= uuid=a18a96d9-6992-11ee-a67a-0242c0a8400c
|
||||||
# {"time":"2023-10-06T06:46:52.882859654Z","level":"DEBUG","msg":"Request cost","cost-per-byte":1,"response-length":104,"cost":104,"method":"eth_getStorageAt"}
|
# time="2023-10-13T06:34:59Z" level=debug msg=END api_method=eth_chainId api_params="[]" api_reqid=53 conn="192.168.64.4:59658" duration=0 user_id= uuid=a18a96d9-6992-11ee-a67a-0242c0a8400c
|
||||||
# {"time":"2023-10-06T06:46:52.882946485Z","level":"DEBUG","msg":"sent message","address":"0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE","method":"receive_voucher"}
|
# 2023/10/13 06:34:59 INFO Received a voucher payer=0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94 amount=100
|
||||||
# {"time":"2023-10-06T06:46:52.884012641Z","level":"DEBUG","msg":"Received voucher","delta":5000}
|
# 2023/10/13 06:35:01 INFO Serving a paid RPC request method=eth_getStorageAt sender=0xBBB676f9cFF8D242e9eaC39D063848807d3D1D94
|
||||||
# {"time":"2023-10-06T06:46:52.884032961Z","level":"DEBUG","msg":"Destination request","url":"http://ipld-eth-server:8081/"}
|
# time="2023-10-13T06:35:01Z" level=debug msg=START api_method=eth_getStorageAt api_params="[0x2b6afbd4f479ce4101df722cf4e05f941523ead9 0xf76621c2cc1c1705fabbc22d30ffc5ded7f26e4995feb8d1c9812a2697ba1278 0x46411a554f30e607bdd79cd157a60a7c8b314c0709557be3357ed2fef53d6c3d]" api_reqid=54 conn="192.168.64.4:59660" user_id= uuid=a2bd75d2-6992-11ee-a67a-0242c0a8400c
|
||||||
|
# time="2023-10-13T06:35:01Z" level=debug msg=END api_method=eth_getStorageAt api_params="[0x2b6afbd4f479ce4101df722cf4e05f941523ead9 0xf76621c2cc1c1705fabbc22d30ffc5ded7f26e4995feb8d1c9812a2697ba1278 0x46411a554f30e607bdd79cd157a60a7c8b314c0709557be3357ed2fef53d6c3d]" api_reqid=54 conn="192.168.64.4:59660" duration=7 user_id= uuid=a2bd75d2-6992-11ee-a67a-0242c0a8400c
|
||||||
```
|
```
|
||||||
|
|
||||||
* Change the amount besides `PAY` button in debug panel to `>=100` for phisher reports next
|
* Change the amount besides `PAY` button in debug panel to `>=100` for phisher reports next
|
||||||
@ -186,7 +189,7 @@ Stack components:
|
|||||||
* Check the watcher - ipld-eth-server payment channel status after a few requests:
|
* Check the watcher - ipld-eth-server payment channel status after a few requests:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker exec payments-nitro-rpc-client-1 npm exec -c "nitro-rpc-client get-payment-channel $WATCHER_UPSTREAM_PAYMENT_CHANNEL -h go-nitro -p 4005"
|
docker exec payments-nitro-rpc-client-1 npm exec -c "nitro-rpc-client get-payment-channel $WATCHER_UPSTREAM_PAYMENT_CHANNEL -h ipld-eth-server -p 4005"
|
||||||
|
|
||||||
# Expected output ('PaidSoFar' should be non zero):
|
# Expected output ('PaidSoFar' should be non zero):
|
||||||
# {
|
# {
|
||||||
@ -228,28 +231,28 @@ Stack components:
|
|||||||
|
|
||||||
* On starting the Ponder app in indexer mode, it creates a payment channel with the `ipld-eth-server`'s Nitro node and then starts the historical sync service
|
* On starting the Ponder app in indexer mode, it creates a payment channel with the `ipld-eth-server`'s Nitro node and then starts the historical sync service
|
||||||
|
|
||||||
* The sync service makes several ETH RPC requests to the `ipld-eth-server` to fetch required data; check the payment proxy server logs for charged RPC requests (`eth_getBlockByNumber`, `eth_getLogs`)
|
* The sync service makes several ETH RPC requests to the `ipld-eth-server` to fetch required data; check the `ipld-eth-server` logs for charged RPC requests (`eth_getBlockByNumber`, `eth_getLogs`):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Expected output:
|
# Expected output:
|
||||||
# ...
|
# ...
|
||||||
# {"time":"2023-10-06T06:51:45.214478402Z","level":"DEBUG","msg":"Serving RPC request","method":"eth_getBlockByNumber"}
|
# 2023/10/13 06:59:49 INFO Received a voucher payer=0x67D5b55604d1aF90074FcB69b8C51838FFF84f8d amount=100
|
||||||
# {"time":"2023-10-06T06:51:45.22251171Z","level":"DEBUG","msg":"Request cost","cost-per-byte":1,"response-length":576,"cost":576,"method":"eth_getBlockByNumber"}
|
# time="2023-10-13T06:59:51Z" level=debug msg=START api_method=eth_getLogs api_params="[map[address:0x32353a6c91143bfd6c7d363b546e62a9a2489a20 fromBlock:0x5 toBlock:0x68]]" api_reqid=1 conn="192.168.64.2:55578" user_id= uuid=1aedde38-6996-11ee-a67a-0242c0a8400c
|
||||||
# {"time":"2023-10-06T06:51:45.222641963Z","level":"DEBUG","msg":"sent message","address":"0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE","method":"receive_voucher"}
|
# 2023/10/13 06:59:51 INFO Serving a paid RPC request method=eth_getLogs sender=0x67D5b55604d1aF90074FcB69b8C51838FFF84f8d
|
||||||
# {"time":"2023-10-06T06:51:45.224042391Z","level":"DEBUG","msg":"Received voucher","delta":5000}
|
# WARN [10-13|06:59:51.287] Attempting GerRPCCalls, but default PluginLoader has not been initialized
|
||||||
# {"time":"2023-10-06T06:51:45.224061411Z","level":"DEBUG","msg":"Destination request","url":"http://ipld-eth-server:8081/"}
|
# time="2023-10-13T06:59:51Z" level=debug msg="retrieving log cids for receipt ids"
|
||||||
# {"time":"2023-10-06T06:51:45.242064953Z","level":"DEBUG","msg":"Serving RPC request","method":"eth_getLogs"}
|
# time="2023-10-13T06:59:51Z" level=debug msg=END api_method=eth_getLogs api_params="[map[address:0x32353a6c91143bfd6c7d363b546e62a9a2489a20 fromBlock:0x5 toBlock:0x68]]" api_reqid=1 conn="192.168.64.2:55578" duration=17 user_id= uuid=1aedde38-6996-11ee-a67a-0242c0a8400c
|
||||||
# {"time":"2023-10-06T06:51:45.249118517Z","level":"DEBUG","msg":"Request cost","cost-per-byte":1,"response-length":61,"cost":61,"method":"eth_getLogs"}
|
# 2023/10/13 06:59:51 INFO Received a voucher payer=0x67D5b55604d1aF90074FcB69b8C51838FFF84f8d amount=100
|
||||||
# {"time":"2023-10-06T06:51:45.249189892Z","level":"DEBUG","msg":"sent message","address":"0xAAA6628Ec44A8a742987EF3A114dDFE2D4F7aDCE","method":"receive_voucher"}
|
# 2023/10/13 06:59:53 INFO Serving a paid RPC request method=eth_getBlockByNumber sender=0x67D5b55604d1aF90074FcB69b8C51838FFF84f8d
|
||||||
# {"time":"2023-10-06T06:51:45.249743149Z","level":"DEBUG","msg":"Received voucher","delta":5000}
|
# 2023/10/13 06:59:53 INFO Received a voucher payer=0x67D5b55604d1aF90074FcB69b8C51838FFF84f8d amount=100
|
||||||
# {"time":"2023-10-06T06:51:45.249760631Z","level":"DEBUG","msg":"Destination request","url":"http://ipld-eth-server:8081/"}
|
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
* Check the ponder - ipld-eth-server payment channel status:
|
* Check the ponder - ipld-eth-server payment channel status:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker exec payments-nitro-rpc-client-1 npm exec -c "nitro-rpc-client get-payment-channel $PONDER_UPSTREAM_PAYMENT_CHANNEL -h go-nitro -p 4005"
|
docker exec payments-nitro-rpc-client-1 npm exec -c "nitro-rpc-client get-payment-channel $PONDER_UPSTREAM_PAYMENT_CHANNEL -h ipld-eth-server -p 4005"
|
||||||
|
|
||||||
# Expected output ('PaidSoFar' is non zero):
|
# Expected output ('PaidSoFar' is non zero):
|
||||||
# {
|
# {
|
||||||
@ -266,6 +269,7 @@ Stack components:
|
|||||||
```
|
```
|
||||||
|
|
||||||
* In another terminal run the ponder app in watcher mode:
|
* In another terminal run the ponder app in watcher mode:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker exec -it payments-ponder-app-watcher-1 bash -c "DEBUG=laconic:payments pnpm start"
|
docker exec -it payments-ponder-app-watcher-1 bash -c "DEBUG=laconic:payments pnpm start"
|
||||||
|
|
||||||
@ -280,7 +284,8 @@ Stack components:
|
|||||||
# 11:23:22.436 INFO server Started responding as healthy
|
# 11:23:22.436 INFO server Started responding as healthy
|
||||||
```
|
```
|
||||||
|
|
||||||
* Check the terminal in which indexer mode ponder is running. Logs of payment for `eth_getLogs` queries can be seen:
|
* Check the terminal in which ponder is running in indexer mode. Logs of payment for `eth_getLogs` queries can be seen:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# ...
|
# ...
|
||||||
# 08:02:37.763 DEBUG realtime Finished processing new head block 89 (network=fixturenet)
|
# 08:02:37.763 DEBUG realtime Finished processing new head block 89 (network=fixturenet)
|
||||||
|
@ -6,13 +6,13 @@ repos:
|
|||||||
- git.vdb.to/cerc-io/go-ethereum@v1.11.6-statediff-v5
|
- git.vdb.to/cerc-io/go-ethereum@v1.11.6-statediff-v5
|
||||||
- git.vdb.to/cerc-io/lighthouse
|
- git.vdb.to/cerc-io/lighthouse
|
||||||
- git.vdb.to/cerc-io/ipld-eth-db@v5
|
- git.vdb.to/cerc-io/ipld-eth-db@v5
|
||||||
- git.vdb.to/cerc-io/ipld-eth-server@v1.11.6-statediff-v5
|
- git.vdb.to/cerc-io/ipld-eth-server@payments
|
||||||
# nitro repos
|
# nitro repo
|
||||||
- github.com/cerc-io/ts-nitro@v0.1.13
|
- github.com/cerc-io/ts-nitro@v0.1.13
|
||||||
- github.com/cerc-io/go-nitro@v0.1.1-ts-port-0.1.5
|
- github.com/cerc-io/go-nitro@v0.1.1-ts-port-0.1.7
|
||||||
# mobymask watcher repos
|
# mobymask watcher repos
|
||||||
- github.com/cerc-io/watcher-ts@v0.2.63
|
- github.com/cerc-io/watcher-ts@v0.2.65
|
||||||
- github.com/cerc-io/mobymask-v2-watcher-ts@v0.2.2
|
- github.com/cerc-io/mobymask-v2-watcher-ts@v0.2.3
|
||||||
- github.com/cerc-io/MobyMask@v0.1.3
|
- github.com/cerc-io/MobyMask@v0.1.3
|
||||||
# mobymask app repos
|
# mobymask app repos
|
||||||
- github.com/cerc-io/mobymask-snap
|
- github.com/cerc-io/mobymask-snap
|
||||||
@ -30,7 +30,7 @@ containers:
|
|||||||
- cerc/ipld-eth-db
|
- cerc/ipld-eth-db
|
||||||
- cerc/ipld-eth-server
|
- cerc/ipld-eth-server
|
||||||
- cerc/nitro-contracts
|
- cerc/nitro-contracts
|
||||||
- cerc/go-nitro
|
# - cerc/go-nitro
|
||||||
- cerc/nitro-rpc-client
|
- cerc/nitro-rpc-client
|
||||||
# mobymask watcher images
|
# mobymask watcher images
|
||||||
- cerc/watcher-ts
|
- cerc/watcher-ts
|
||||||
@ -46,8 +46,8 @@ pods:
|
|||||||
- ipld-eth-server
|
- ipld-eth-server
|
||||||
- ipld-eth-db
|
- ipld-eth-db
|
||||||
- nitro-contracts
|
- nitro-contracts
|
||||||
- go-nitro
|
# - go-nitro
|
||||||
- nitro-reverse-payment-proxy
|
- nitro-rpc-client
|
||||||
- watcher-mobymask-v3
|
- watcher-mobymask-v3
|
||||||
- mobymask-snap
|
- mobymask-snap
|
||||||
- mobymask-app-v3
|
- mobymask-app-v3
|
||||||
|
Loading…
Reference in New Issue
Block a user