Archived
Compare commits
19
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42a4035a64 | ||
|
|
7cce68959f | ||
|
|
0cd90ad3dc | ||
|
|
90d92c3e15 | ||
|
|
202c68d996 | ||
|
|
236dea1b44 | ||
|
|
9aa02fc26a | ||
|
|
80e039d70e | ||
|
|
d7f06ad51e | ||
|
|
343d31c324 | ||
|
|
fd00143b76 | ||
|
|
36e89b5a78 | ||
|
|
80b299c1e5 | ||
|
|
f20dcb8457 | ||
|
|
7929a137b6 | ||
|
|
247025de28 | ||
|
|
76821f00a0 | ||
|
|
78219c0e04 | ||
|
|
9e87088328 |
@@ -43,19 +43,3 @@ jobs:
|
|||||||
run: ./scripts/build_shiv_package.sh
|
run: ./scripts/build_shiv_package.sh
|
||||||
- name: "Run fixturenet-eth tests"
|
- name: "Run fixturenet-eth tests"
|
||||||
run: ./tests/fixturenet-eth-plugeth/run-test.sh
|
run: ./tests/fixturenet-eth-plugeth/run-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -47,19 +47,3 @@ jobs:
|
|||||||
sleep 5
|
sleep 5
|
||||||
- name: "Run fixturenet-eth tests"
|
- name: "Run fixturenet-eth tests"
|
||||||
run: ./tests/fixturenet-eth-plugeth/run-test.sh
|
run: ./tests/fixturenet-eth-plugeth/run-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -45,19 +45,4 @@ jobs:
|
|||||||
sleep 5
|
sleep 5
|
||||||
- name: "Run fixturenet-eth tests"
|
- name: "Run fixturenet-eth tests"
|
||||||
run: ./tests/fixturenet-eth/run-test.sh
|
run: ./tests/fixturenet-eth/run-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: "Run Laconicd fixturenet and Laconic CLI tests"
|
name: "Run an Laconicd fixturenet test"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: 'Update'
|
- name: 'Update'
|
||||||
@@ -46,21 +46,3 @@ jobs:
|
|||||||
run: ./scripts/build_shiv_package.sh
|
run: ./scripts/build_shiv_package.sh
|
||||||
- name: "Run fixturenet-laconicd tests"
|
- name: "Run fixturenet-laconicd tests"
|
||||||
run: ./tests/fixturenet-laconicd/run-test.sh
|
run: ./tests/fixturenet-laconicd/run-test.sh
|
||||||
- name: "Run laconic CLI tests"
|
|
||||||
run: ./tests/fixturenet-laconicd/run-cli-test.sh
|
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -19,19 +19,3 @@ jobs:
|
|||||||
python-version: '3.8'
|
python-version: '3.8'
|
||||||
- name : "Run flake8"
|
- name : "Run flake8"
|
||||||
uses: py-actions/flake8@v2
|
uses: py-actions/flake8@v2
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -54,19 +54,3 @@ jobs:
|
|||||||
# Hack using endsWith to workaround Gitea sometimes sending "publish-test" vs "refs/heads/publish-test"
|
# Hack using endsWith to workaround Gitea sometimes sending "publish-test" vs "refs/heads/publish-test"
|
||||||
draft: ${{ endsWith('publish-test', github.ref ) }}
|
draft: ${{ endsWith('publish-test', github.ref ) }}
|
||||||
files: ./laconic-so
|
files: ./laconic-so
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -51,19 +51,4 @@ jobs:
|
|||||||
source /opt/bash-utils/cgroup-helper.sh
|
source /opt/bash-utils/cgroup-helper.sh
|
||||||
join_cgroup
|
join_cgroup
|
||||||
./tests/container-registry/run-test.sh
|
./tests/container-registry/run-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -49,19 +49,4 @@ jobs:
|
|||||||
source /opt/bash-utils/cgroup-helper.sh
|
source /opt/bash-utils/cgroup-helper.sh
|
||||||
join_cgroup
|
join_cgroup
|
||||||
./tests/database/run-test.sh
|
./tests/database/run-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -47,19 +47,3 @@ jobs:
|
|||||||
sleep 5
|
sleep 5
|
||||||
- name: "Run deploy tests"
|
- name: "Run deploy tests"
|
||||||
run: ./tests/deploy/run-deploy-test.sh
|
run: ./tests/deploy/run-deploy-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -51,19 +51,4 @@ jobs:
|
|||||||
source /opt/bash-utils/cgroup-helper.sh
|
source /opt/bash-utils/cgroup-helper.sh
|
||||||
join_cgroup
|
join_cgroup
|
||||||
./tests/k8s-deploy/run-deploy-test.sh
|
./tests/k8s-deploy/run-deploy-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -49,19 +49,3 @@ jobs:
|
|||||||
sleep 5
|
sleep 5
|
||||||
- name: "Run webapp tests"
|
- name: "Run webapp tests"
|
||||||
run: ./tests/webapp-test/run-webapp-test.sh
|
run: ./tests/webapp-test/run-webapp-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -47,19 +47,5 @@ jobs:
|
|||||||
sleep 5
|
sleep 5
|
||||||
- name: "Run smoke tests"
|
- name: "Run smoke tests"
|
||||||
run: ./tests/smoke-test/run-smoke-test.sh
|
run: ./tests/smoke-test/run-smoke-test.sh
|
||||||
- name: Notify Vulcanize Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.VULCANIZE_SLACK_CI_ALERTS }}
|
|
||||||
- name: Notify DeepStack Slack on CI failure
|
|
||||||
if: ${{ always() && github.ref_name == 'main' }}
|
|
||||||
uses: ravsamhq/notify-slack-action@v2
|
|
||||||
with:
|
|
||||||
status: ${{ job.status }}
|
|
||||||
notify_when: 'failure'
|
|
||||||
env:
|
|
||||||
SLACK_WEBHOOK_URL: ${{ secrets.DEEPSTACK_SLACK_CI_ALERTS }}
|
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
Change this file to trigger running the fixturenet-laconicd-test CI job
|
Change this file to trigger running the fixturenet-laconicd-test CI job
|
||||||
Trigger
|
Trigger
|
||||||
Trigger
|
Trigger
|
||||||
Trigger
|
|
||||||
Trigger
|
|
||||||
Trigger
|
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
|
|
||||||
# From: https://raw.githubusercontent.com/blast-io/deployment/master/docker-compose.yml
|
|
||||||
services:
|
|
||||||
# generate jwt.txt if it's absent
|
|
||||||
generate-jwt:
|
|
||||||
image: blastio/openssl
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast:rw
|
|
||||||
command: >
|
|
||||||
sh -c "[ ! -f /blast/jwt.txt ] && openssl rand -hex 32 | tr -d '\n' > /blast/jwt.txt || exit 0"
|
|
||||||
# initialise geth db
|
|
||||||
geth-init:
|
|
||||||
image: blastio/blast-geth:${NETWORK:-testnet-sepolia}
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast:rw
|
|
||||||
- ../config/fixturenet-blast/genesis.json:/blast/genesis.json
|
|
||||||
entrypoint: /bin/sh
|
|
||||||
command: >
|
|
||||||
-c "[ ! -d /blast/${GETH_DATA_DIR:-blast-geth-data}/geth ] && /usr/local/bin/geth init --datadir=/blast/${GETH_DATA_DIR:-blast-geth-data} /blast/genesis.json || exit 0"
|
|
||||||
depends_on:
|
|
||||||
generate-jwt:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-blast/${NETWORK:-fixturenet}.config
|
|
||||||
blast-geth:
|
|
||||||
image: blastio/blast-geth:${NETWORK:-testnet-sepolia}
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast
|
|
||||||
ports:
|
|
||||||
- "9545"
|
|
||||||
- "9546"
|
|
||||||
command: >
|
|
||||||
--datadir=/blast/${GETH_DATA_DIR:-blast-geth-data}
|
|
||||||
--http
|
|
||||||
--http.corsdomain="*"
|
|
||||||
--http.vhosts="*"
|
|
||||||
--http.addr=0.0.0.0
|
|
||||||
--http.port=9545
|
|
||||||
--http.api=web3,debug,eth,txpool,net,engine
|
|
||||||
--ws
|
|
||||||
--ws.addr=0.0.0.0
|
|
||||||
--ws.port=9546
|
|
||||||
--ws.origins="*"
|
|
||||||
--ws.api=debug,eth,txpool,net,engine
|
|
||||||
--authrpc.addr="0.0.0.0"
|
|
||||||
--authrpc.port="8551"
|
|
||||||
--authrpc.vhosts="*"
|
|
||||||
--authrpc.jwtsecret=/blast/jwt.txt
|
|
||||||
--syncmode=full
|
|
||||||
--gcmode=archive
|
|
||||||
--nodiscover
|
|
||||||
--maxpeers=0
|
|
||||||
--rollup.disabletxpoolgossip=true
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-blast/${NETWORK:-fixturenet}.config
|
|
||||||
depends_on:
|
|
||||||
geth-init:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
op-node:
|
|
||||||
image: blastio/blast-optimism:${NETWORK:-testnet-sepolia}
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast
|
|
||||||
- ../config/fixturenet-blast/rollup.json:/blast/rollup.json
|
|
||||||
ports:
|
|
||||||
- "9003"
|
|
||||||
command: >
|
|
||||||
op-node
|
|
||||||
--l1="${CERC_L1_RPC}"
|
|
||||||
--l1.rpckind="any"
|
|
||||||
--l1.trustrpc=true
|
|
||||||
--l2="http://blast-geth:8551"
|
|
||||||
--l2.jwt-secret=/blast/jwt.txt
|
|
||||||
--rollup.config="/blast/rollup.json"
|
|
||||||
depends_on:
|
|
||||||
- blast-geth
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-blast/${NETWORK:-fixturenet}.config
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
blast-data:
|
|
||||||
@@ -3,9 +3,6 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: cerc/laconicd:local
|
image: cerc/laconicd:local
|
||||||
command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
||||||
environment:
|
|
||||||
TEST_AUCTION_ENABLED: ${TEST_AUCTION_ENABLED}
|
|
||||||
TEST_REGISTRY_EXPIRY: ${TEST_REGISTRY_EXPIRY}
|
|
||||||
volumes:
|
volumes:
|
||||||
# The cosmos-sdk node's database directory:
|
# The cosmos-sdk node's database directory:
|
||||||
- laconicd-data:/root/.laconicd
|
- laconicd-data:/root/.laconicd
|
||||||
@@ -28,7 +25,6 @@ services:
|
|||||||
image: cerc/laconic-registry-cli:local
|
image: cerc/laconic-registry-cli:local
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/fixturenet-laconicd/registry-cli-config-template.yml:/registry-cli-config-template.yml
|
- ../config/fixturenet-laconicd/registry-cli-config-template.yml:/registry-cli-config-template.yml
|
||||||
- ${BASE_DIR:-~/cerc}/laconic-registry-cli:/laconic-registry-cli
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
laconicd-data:
|
laconicd-data:
|
||||||
|
|||||||
@@ -0,0 +1,113 @@
|
|||||||
|
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:
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
|
|
||||||
# From: https://raw.githubusercontent.com/blast-io/deployment/master/docker-compose.yml
|
|
||||||
services:
|
|
||||||
# generate jwt.txt if it's absent
|
|
||||||
generate-jwt:
|
|
||||||
image: blastio/openssl
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast:rw
|
|
||||||
command: >
|
|
||||||
sh -c "[ ! -f /blast/jwt.txt ] && openssl rand -hex 32 | tr -d '\n' > /blast/jwt.txt || exit 0"
|
|
||||||
# initialise geth db
|
|
||||||
geth-init:
|
|
||||||
image: blastio/blast-geth:${NETWORK:-mainnet}
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast:rw
|
|
||||||
entrypoint: /bin/sh
|
|
||||||
command: >
|
|
||||||
-c "[ ! -d /blast/${GETH_DATA_DIR:-blast-geth-data}/geth ] && /usr/local/bin/geth init --datadir=/blast/${GETH_DATA_DIR:-blast-geth-data} /blast/genesis.json || exit 0"
|
|
||||||
depends_on:
|
|
||||||
generate-jwt:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
env_file:
|
|
||||||
- ../config/mainnet-blast/${NETWORK:-mainnet}.config
|
|
||||||
blast-geth:
|
|
||||||
image: blastio/blast-geth:${NETWORK:-mainnet}
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast
|
|
||||||
ports:
|
|
||||||
- "9545"
|
|
||||||
- "9546"
|
|
||||||
- "6060"
|
|
||||||
command: >
|
|
||||||
--datadir=/blast/${GETH_DATA_DIR:-blast-geth-data}
|
|
||||||
--http
|
|
||||||
--http.corsdomain="*"
|
|
||||||
--http.vhosts="*"
|
|
||||||
--http.addr=0.0.0.0
|
|
||||||
--http.port=9545
|
|
||||||
--http.api=web3,debug,eth,txpool,net,engine
|
|
||||||
--ws
|
|
||||||
--ws.addr=0.0.0.0
|
|
||||||
--ws.port=9546
|
|
||||||
--ws.origins="*"
|
|
||||||
--ws.api=debug,eth,txpool,net,engine
|
|
||||||
--authrpc.addr="0.0.0.0"
|
|
||||||
--authrpc.port="8551"
|
|
||||||
--authrpc.vhosts="*"
|
|
||||||
--authrpc.jwtsecret=/blast/jwt.txt
|
|
||||||
--syncmode=full
|
|
||||||
--metrics
|
|
||||||
--metrics.addr=0.0.0.0
|
|
||||||
--gcmode=archive
|
|
||||||
--nodiscover
|
|
||||||
--maxpeers=0
|
|
||||||
--rollup.disabletxpoolgossip=true
|
|
||||||
--override.canyon="${OVERRIDE_CANYON:-0}"
|
|
||||||
--override.ecotone="${OVERRIDE_ECOTONE:-1716843599}"
|
|
||||||
env_file:
|
|
||||||
- ../config/mainnet-blast/${NETWORK:-mainnet}.config
|
|
||||||
depends_on:
|
|
||||||
geth-init:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
op-node:
|
|
||||||
image: blastio/blast-optimism:${NETWORK:-mainnet}
|
|
||||||
volumes:
|
|
||||||
- blast-data:/blast
|
|
||||||
ports:
|
|
||||||
- "9003"
|
|
||||||
- "7300"
|
|
||||||
command: >
|
|
||||||
op-node
|
|
||||||
--l1="${L1_RPC:-https://eth-mainnet-1.vdb.to/}"
|
|
||||||
--l1.beacon="${L1_RPC_BEACON:-https://eth-mainnet-1.vdb.to/}"
|
|
||||||
--l1.rpckind="any"
|
|
||||||
--l1.trustrpc=true
|
|
||||||
--l2="${L2_RPC:-http://blast-geth:8551}"
|
|
||||||
--l2.jwt-secret=/blast/jwt.txt
|
|
||||||
--rollup.config="/blast/rollup.json"
|
|
||||||
--metrics.enabled
|
|
||||||
depends_on:
|
|
||||||
- blast-geth
|
|
||||||
env_file:
|
|
||||||
- ../config/mainnet-blast/${NETWORK:-mainnet}.config
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
blast-data:
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
version: '3.2'
|
|
||||||
|
|
||||||
services:
|
|
||||||
ajna-watcher-db:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: postgres:14-alpine
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=vdbm
|
|
||||||
- POSTGRES_MULTIPLE_DATABASES=ajna-watcher,ajna-watcher-job-queue
|
|
||||||
- POSTGRES_EXTENSION=ajna-watcher-job-queue:pgcrypto
|
|
||||||
- POSTGRES_PASSWORD=password
|
|
||||||
volumes:
|
|
||||||
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
|
||||||
- ajna_watcher_db_data:/var/lib/postgresql/data
|
|
||||||
ports:
|
|
||||||
- "5432"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 10s
|
|
||||||
|
|
||||||
ajna-watcher-job-runner:
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
ajna-watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
image: cerc/watcher-ajna:local
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT}
|
|
||||||
command: ["bash", "./start-job-runner.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-ajna/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-ajna/start-job-runner.sh:/app/start-job-runner.sh
|
|
||||||
ports:
|
|
||||||
- "9000"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "9000"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
ajna-watcher-server:
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
ajna-watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
ajna-watcher-job-runner:
|
|
||||||
condition: service_healthy
|
|
||||||
image: cerc/watcher-ajna:local
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT}
|
|
||||||
command: ["bash", "./start-server.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-ajna/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-ajna/start-server.sh:/app/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3008"
|
|
||||||
- "9001"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "3008"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
ajna_watcher_db_data:
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
GETH_ROLLUP_SEQUENCERHTTP=https://sequencer.s2.testblast.io
|
|
||||||
OP_NODE_P2P_BOOTNODES=enr:-J-4QM3GLUFfKMSJQuP1UvuKQe8DyovE7Eaiit0l6By4zjTodkR4V8NWXJxNmlg8t8rP-Q-wp3jVmeAOml8cjMj__ROGAYznzb_HgmlkgnY0gmlwhA-cZ_eHb3BzdGFja4X947FQAIlzZWNwMjU2azGhAiuDqvB-AsVSRmnnWr6OHfjgY8YfNclFy9p02flKzXnOg3RjcIJ2YYN1ZHCCdmE,enr:-J-4QDCVpByqQ8nFqCS9aHicqwUfXgzFDslvpEyYz19lvkHLIdtcIGp2d4q5dxHdjRNTO6HXCsnIKxUeuZSPcEbyVQCGAYznzz0RgmlkgnY0gmlwhANiQfuHb3BzdGFja4X947FQAIlzZWNwMjU2azGhAy3AtF2Jh_aPdOohg506Hjmtx-fQ1AKmu71C7PfkWAw9g3RjcIJ2YYN1ZHCCdmE
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
{
|
|
||||||
"config": {
|
|
||||||
"chainId": 608943043,
|
|
||||||
"homesteadBlock": 0,
|
|
||||||
"eip150Block": 0,
|
|
||||||
"eip155Block": 0,
|
|
||||||
"eip158Block": 0,
|
|
||||||
"byzantiumBlock": 0,
|
|
||||||
"constantinopleBlock": 0,
|
|
||||||
"petersburgBlock": 0,
|
|
||||||
"istanbulBlock": 0,
|
|
||||||
"muirGlacierBlock": 0,
|
|
||||||
"berlinBlock": 0,
|
|
||||||
"londonBlock": 0,
|
|
||||||
"arrowGlacierBlock": 0,
|
|
||||||
"grayGlacierBlock": 0,
|
|
||||||
"mergeNetsplitBlock": 0,
|
|
||||||
"shanghaiTime": 0,
|
|
||||||
"bedrockBlock": 0,
|
|
||||||
"regolithTime": 0,
|
|
||||||
"canyonTime": 0,
|
|
||||||
"terminalTotalDifficulty": 0,
|
|
||||||
"terminalTotalDifficultyPassed": true,
|
|
||||||
"optimism": {
|
|
||||||
"eip1559Elasticity": 6,
|
|
||||||
"eip1559Denominator": 50,
|
|
||||||
"eip1559DenominatorCanyon": 250
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"alloc": {
|
|
||||||
"0000000000000000000000000000000000000000": {
|
|
||||||
"balance": "0x1"
|
|
||||||
},
|
|
||||||
"4200000000000000000000000000000000000000": {
|
|
||||||
"code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100ae5780638f283970146100db578063f851a440146100fb5761005d565b3661005d5761005b610110565b005b61005b610110565b34801561007157600080fd5b5061005b610080366004610521565b6101c8565b61009861009336600461053c565b61020e565b6040516100a591906105bf565b60405180910390f35b3480156100ba57600080fd5b506100c361033e565b6040516001600160a01b0390911681526020016100a5565b3480156100e757600080fd5b5061005b6100f6366004610521565b6103a9565b34801561010757600080fd5b506100c36103e4565b600061013a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b0381166101a55760405162461bcd60e51b815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e697469616044820152641b1a5e995960da1b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e806101c2573d6000fd5b503d6000f35b600080516020610625833981519152546001600160a01b0316336001600160a01b031614806101f5575033155b156102065761020381610432565b50565b610203610110565b60606102266000805160206106258339815191525490565b6001600160a01b0316336001600160a01b03161480610243575033155b1561032f5761025184610432565b600080856001600160a01b0316858560405161026e929190610614565b600060405180830381855af49150503d80600081146102a9576040519150601f19603f3d011682016040523d82523d6000602084013e6102ae565b606091505b5091509150816103265760405162461bcd60e51b815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c656400000000000000606482015260840161019c565b91506103379050565b610337610110565b9392505050565b60006103566000805160206106258339815191525490565b6001600160a01b0316336001600160a01b03161480610373575033155b1561039e57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6103a6610110565b90565b600080516020610625833981519152546001600160a01b0316336001600160a01b031614806103d6575033155b15610206576102038161048e565b60006103fc6000805160206106258339815191525490565b6001600160a01b0316336001600160a01b03161480610419575033155b1561039e57506000805160206106258339815191525490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8181556040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b60006104a66000805160206106258339815191525490565b600080516020610625833981519152838155604080516001600160a01b0380851682528616602082015292935090917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a1505050565b80356001600160a01b038116811461051c57600080fd5b919050565b60006020828403121561053357600080fd5b61033782610505565b60008060006040848603121561055157600080fd5b61055a84610505565b9250602084013567ffffffffffffffff8082111561057757600080fd5b818601915086601f83011261058b57600080fd5b81358181111561059a57600080fd5b8760208285010111156105ac57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156105ec578581018301518582016040015282016105d0565b818111156105fe576000604083870101525b50601f01601f1916929092016040019392505050565b818382376000910190815291905056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300080f000a",
|
|
||||||
"storage": {
|
|
||||||
"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d30000",
|
|
||||||
"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000004200000000000000000000000000000000000018"
|
|
||||||
},
|
|
||||||
"balance": "0x0",
|
|
||||||
"flags": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nonce": "0x0",
|
|
||||||
"timestamp": "0x659b7460",
|
|
||||||
"extraData": "0x424544524f434b",
|
|
||||||
"gasLimit": "0x1c9c380",
|
|
||||||
"difficulty": "0x0",
|
|
||||||
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
||||||
"coinbase": "0x4200000000000000000000000000000000000011",
|
|
||||||
"number": "0x0",
|
|
||||||
"gasUsed": "0x0",
|
|
||||||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
||||||
"baseFeePerGas": "0x3b9aca00",
|
|
||||||
"excessBlobGas": null,
|
|
||||||
"blobGasUsed": null
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
"genesis": {
|
|
||||||
"l1": {
|
|
||||||
"hash": "0x17728cf4d8e0b4f292d2390a869fd7c632d39e72efb00ca3462b4387c6aa2437",
|
|
||||||
"number": 5044255
|
|
||||||
},
|
|
||||||
"l2": {
|
|
||||||
"hash": "0x26a1c0faad7b041f34569a1bb383f00ab74b335883a44bed53e9f41ced5fd906",
|
|
||||||
"number": 0
|
|
||||||
},
|
|
||||||
"l2_time": 1704686688,
|
|
||||||
"system_config": {
|
|
||||||
"batcherAddr": "0xba26fee2fa917443e05e65de8d4350bcd2f59222",
|
|
||||||
"overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc",
|
|
||||||
"scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0",
|
|
||||||
"gasLimit": 30000000
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"block_time": 2,
|
|
||||||
"max_sequencer_drift": 600,
|
|
||||||
"seq_window_size": 3600,
|
|
||||||
"channel_timeout": 300,
|
|
||||||
"l1_chain_id": 11155111,
|
|
||||||
"l2_chain_id": 608943043,
|
|
||||||
"regolith_time": 0,
|
|
||||||
"canyon_time": 0,
|
|
||||||
"batch_inbox_address": "0x1c3b85a2108784eab6a4bf56cdd6f722e415b331",
|
|
||||||
"deposit_contract_address": "0x2757e4430e694f27b73ec9c02257cab3a498c8c5",
|
|
||||||
"l1_system_config_address": "0x329faf078c364a316e08bf6a17b7eee6ae75a613",
|
|
||||||
"protocol_versions_address": "0x0000000000000000000000000000000000000000"
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# SET ME! Your on-chain private key.
|
||||||
|
#CERC_NITRO_CHAIN_PK=<MY_PK_GOES_HERE>
|
||||||
|
|
||||||
|
# Default is CERC_NITRO_CHAIN_PK.
|
||||||
|
#CERC_NITRO_PK=<MY_PK_GOES_HERE>
|
||||||
|
|
||||||
|
# SET ME! The WebSocket to connect to.
|
||||||
|
#CERC_NITRO_CHAIN_URL=wss://linea-sepolia.infura.io/ws/v3/<MY_API_KEY_GOES_HERE>
|
||||||
|
|
||||||
|
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
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# SET ME! Your on-chain private key.
|
||||||
|
#CERC_NITRO_CHAIN_PK=<MY_PK_GOES_HERE>
|
||||||
|
|
||||||
|
# Default is CERC_NITRO_CHAIN_PK.
|
||||||
|
#CERC_NITRO_PK=<MY_PK_GOES_HERE>
|
||||||
|
|
||||||
|
# SET ME! The WebSocket to connect to.
|
||||||
|
#CERC_NITRO_CHAIN_URL=wss://linea-sepolia.infura.io/ws/v3/<MY_API_KEY_GOES_HERE>
|
||||||
|
|
||||||
|
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
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
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/<MY_API_KEY_GOES_HERE>
|
||||||
|
|
||||||
|
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
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
: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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,11 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
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"
|
nitro_addresses_file="/app/deployment/nitro-addresses.json"
|
||||||
|
|
||||||
# Check if CERC_NA_ADDRESS environment variable is set
|
# Check if CERC_NA_ADDRESS environment variable is set
|
||||||
@@ -29,22 +34,86 @@ fi
|
|||||||
|
|
||||||
echo "Running Nitro node"
|
echo "Running Nitro node"
|
||||||
|
|
||||||
# Assuming CERC_NITRO_CHAIN_URL is of format <ws|http>://host:port
|
if [[ "${CERC_GO_NITRO_WAIT_FOR_CHAIN:-true}" == "true" ]]; then
|
||||||
ws_host=$(echo "$CERC_NITRO_CHAIN_URL" | awk -F '://' '{print $2}' | cut -d ':' -f 1)
|
# Assuming CERC_NITRO_CHAIN_URL is of format <ws|http>://host[:port][/foo]
|
||||||
ws_port=$(echo "$CERC_NITRO_CHAIN_URL" | awk -F '://' '{print $2}' | cut -d ':' -f 2)
|
ws_host=$(echo "$CERC_NITRO_CHAIN_URL" | awk -F '://' '{print $2}' | cut -d'/' -f 1 | cut -d ':' -f 1)
|
||||||
|
ws_port=$(echo "$CERC_NITRO_CHAIN_URL" | awk -F '://' '{print $2}' | cut -d'/' -f 1 | cut -d ':' -f 2)
|
||||||
# Wait till chain endpoint is available
|
if [[ "$ws_port" == "$ws_host" ]]; then
|
||||||
retry_interval=5
|
ws_port=""
|
||||||
while true; do
|
|
||||||
nc -z -w 1 "$ws_host" "$ws_port"
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "Chain endpoint is available"
|
|
||||||
break
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Chain endpoint not yet available, retrying in $retry_interval seconds..."
|
# Wait till chain endpoint is available
|
||||||
sleep $retry_interval
|
retry_interval=5
|
||||||
done
|
while true; do
|
||||||
|
nc -z -w 1 "$ws_host" "${ws_port:-443}"
|
||||||
|
|
||||||
./nitro -chainurl ${CERC_NITRO_CHAIN_URL} -msgport ${CERC_NITRO_MSG_PORT} -rpcport ${CERC_NITRO_RPC_PORT} -wsmsgport ${CERC_NITRO_WS_MSG_PORT} -publicip "0.0.0.0" -pk ${CERC_NITRO_PK} -chainpk ${CERC_NITRO_CHAIN_PK} -naaddress ${NA_ADDRESS} -vpaaddress ${VPA_ADDRESS} -caaddress ${CA_ADDRESS} -usedurablestore ${CERC_NITRO_USE_DURABLE_STORE} -durablestorefolder ${CERC_NITRO_DURABLE_STORE_FOLDER} -tlscertfilepath "" -tlsKeyFilepath ""
|
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
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$CERC_NITRO_UI_PORT" ]] && [[ -d "/app-node/packages/nitro-gui/dist" ]]; then
|
||||||
|
for f in `ls /app-node/packages/nitro-gui/dist/assets/*.js`; do
|
||||||
|
sed -i "s#\"CERC_RUNTIME_ENV_RPC_HOST\"#\"localhost:${CERC_NITRO_RPC_PORT}\"#g" "$f"
|
||||||
|
sed -i "s#\"CERC_RUNTIME_ENV_TARGET_URL\"#\"http://localhost:5678\"#g" "$f"
|
||||||
|
done
|
||||||
|
http-server -p $CERC_NITRO_UI_PORT /app-node/packages/nitro-gui/dist &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$CERC_NITRO_AUTH_UI_PORT" ]] && [[ -d "/app-node/packages/nitro-auth-gui/dist" ]]; then
|
||||||
|
for f in `ls /app-node/packages/nitro-auth-gui/dist/assets/*.js`; do
|
||||||
|
sed -i "s#\"CERC_RUNTIME_ENV_RPC_URL\"#\"http://localhost:${CERC_NITRO_RPC_PORT}\"#g" "$f"
|
||||||
|
sed -i "s#\"CERC_RUNTIME_ENV_TARGET_URL\"#\"http://localhost:5678\"#g" "$f"
|
||||||
|
done
|
||||||
|
http-server -p $CERC_NITRO_AUTH_UI_PORT /app-node/packages/nitro-auth-gui/dist &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CERC_NITRO_AUTH_ON" == "true" ]] && [[ -d "/app-node/packages/nitro-auth/dist" ]]; then
|
||||||
|
bash -c "sleep 6 && cd /app-node/packages/nitro-auth && yarn start" &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CERC_NITRO_RELAY_ON" == "true" ]]; then
|
||||||
|
if [[ ! -f "/app/deployment/relay-node.json" ]]; then
|
||||||
|
node /usr/local/lib/node_modules/@cerc-io/peer/dist/cli/create-peer.js \
|
||||||
|
-f /app/deployment/relay-node.json
|
||||||
|
fi
|
||||||
|
DEBUG='laconic:*' node /usr/local/lib/node_modules/@cerc-io/peer/dist/cli/relay.js \
|
||||||
|
--host 0.0.0.0 \
|
||||||
|
-f /app/deployment/relay-node.json &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$CERC_CHAIN_START_BLOCK" ]]; then
|
||||||
|
if [[ ! -f "/app/deployment/chainstartblock.json" ]]; then
|
||||||
|
curl --location "$(echo $CERC_NITRO_CHAIN_URL | sed 's/^ws/http/' | sed 's#/ws/#/#')" \
|
||||||
|
--header 'Content-Type: application/json' \
|
||||||
|
--data '{
|
||||||
|
"jsonrpc": "2.0",
|
||||||
|
"id": 124,
|
||||||
|
"method": "eth_blockNumber",
|
||||||
|
"params": []
|
||||||
|
}' > /app/deployment/chainstartblock.json
|
||||||
|
fi
|
||||||
|
CERC_CHAIN_START_BLOCK=$(printf "%d" `cat /app/deployment/chainstartblock.json | jq -r '.result'`)
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd /app
|
||||||
|
./nitro \
|
||||||
|
-chainurl ${CERC_NITRO_CHAIN_URL} \
|
||||||
|
-msgport ${CERC_NITRO_MSG_PORT} \
|
||||||
|
-rpcport ${CERC_NITRO_RPC_PORT} \
|
||||||
|
-wsmsgport ${CERC_NITRO_WS_MSG_PORT} \
|
||||||
|
-publicip "0.0.0.0" \
|
||||||
|
-pk ${CERC_NITRO_PK:-$CERC_NITRO_CHAIN_PK} \
|
||||||
|
-chainpk ${CERC_NITRO_CHAIN_PK} \
|
||||||
|
-naaddress ${NA_ADDRESS} \
|
||||||
|
-vpaaddress ${VPA_ADDRESS} \
|
||||||
|
-caaddress ${CA_ADDRESS} \
|
||||||
|
-usedurablestore=${CERC_NITRO_USE_DURABLE_STORE} \
|
||||||
|
-durablestorefolder ${CERC_NITRO_DURABLE_STORE_FOLDER} \
|
||||||
|
-bootpeers "${CERC_NITRO_BOOT_PEERS}" \
|
||||||
|
-chainstartblock $CERC_CHAIN_START_BLOCK
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -1,32 +0,0 @@
|
|||||||
POSTGRES_DB=keycloak
|
|
||||||
POSTGRES_USER=keycloak
|
|
||||||
POSTGRES_PASSWORD=keycloak
|
|
||||||
# Don't change this unless you also change the healthcheck in docker-compose-mainnet-eth-keycloak.yml
|
|
||||||
PGPORT=35432
|
|
||||||
KC_DB=postgres
|
|
||||||
KC_DB_URL_HOST=keycloak-db
|
|
||||||
KC_DB_URL_PORT=${PGPORT}
|
|
||||||
KC_DB_URL_DATABASE=${POSTGRES_DB}
|
|
||||||
KC_DB_USERNAME=${POSTGRES_USER}
|
|
||||||
KC_DB_PASSWORD=${POSTGRES_PASSWORD}
|
|
||||||
KC_DB_SCHEMA=public
|
|
||||||
KC_HOSTNAME=localhost
|
|
||||||
KC_HTTP_ENABLED="true"
|
|
||||||
KC_HTTP_RELATIVE_PATH="/auth"
|
|
||||||
KC_HOSTNAME_STRICT_HTTPS="false"
|
|
||||||
KEYCLOAK_ADMIN=admin
|
|
||||||
KEYCLOAK_ADMIN_PASSWORD=admin
|
|
||||||
X_API_CHECK_REALM=cerc
|
|
||||||
X_API_CHECK_CLIENT_ID="%user_id%"
|
|
||||||
|
|
||||||
|
|
||||||
# keycloak-reg-api
|
|
||||||
CERC_KCUSERREG_LISTEN_PORT=9292
|
|
||||||
CERC_KCUSERREG_LISTEN_ADDR='0.0.0.0'
|
|
||||||
CERC_KCUSERREG_API_URL='http://keycloak:8080/auth'
|
|
||||||
CERC_KCUSERREG_REG_USER="${KEYCLOAK_ADMIN}"
|
|
||||||
CERC_KCUSERREG_REG_PW="${KEYCLOAK_ADMIN_PASSWORD}"
|
|
||||||
CERC_KCUSERREG_REG_CLIENT_ID='admin-cli'
|
|
||||||
CERC_KCUSERREG_TARGET_REALM=cerc
|
|
||||||
CERC_KCUSERREG_TARGET_GROUPS=eth
|
|
||||||
CERC_KCUSERREG_CREATE_ENABLED=true
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# Enable startup script debug output.
|
|
||||||
CERC_SCRIPT_DEBUG=false
|
|
||||||
|
|
||||||
# Specify any other lighthouse CLI options.
|
|
||||||
LIGHTHOUSE_OPTS=""
|
|
||||||
|
|
||||||
# Override the advertised public IP (optional)
|
|
||||||
# --enr-address
|
|
||||||
#LIGHTHOUSE_ENR_ADDRESS=""
|
|
||||||
|
|
||||||
# --checkpoint-sync-url
|
|
||||||
LIGHTHOUSE_CHECKPOINT_SYNC_URL="https://beaconstate.ethstaker.cc"
|
|
||||||
|
|
||||||
# --checkpoint-sync-url-timeout
|
|
||||||
LIGHTHOUSE_CHECKPOINT_SYNC_URL_TIMEOUT=300
|
|
||||||
|
|
||||||
# --datadir
|
|
||||||
LIGHTHOUSE_DATADIR=/data
|
|
||||||
|
|
||||||
# --debug-level
|
|
||||||
LIGHTHOUSE_DEBUG_LEVEL=info
|
|
||||||
|
|
||||||
# --http-port
|
|
||||||
LIGHTHOUSE_HTTP_PORT=5052
|
|
||||||
|
|
||||||
# --execution-jwt
|
|
||||||
LIGHTHOUSE_JWTSECRET=/etc/mainnet-eth/jwtsecret
|
|
||||||
|
|
||||||
# --metrics-port
|
|
||||||
LIGHTHOUSE_METRICS_PORT=5054
|
|
||||||
|
|
||||||
# --port --enr-udp-port --enr-tcp-port
|
|
||||||
LIGHTHOUSE_NETWORK_PORT=9000
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
GETH_ROLLUP_SEQUENCERHTTP=https://sequencer.blast.io
|
|
||||||
OP_NODE_P2P_BOOTNODES=enr:-J64QGwHl9uYLfC_cnmxSA6wQH811nkOWJDWjzxqkEUlJoZHWvI66u-BXgVcPCeMUmg0dBpFQAPotFchG67FHJMZ9OSGAY3d6wevgmlkgnY0gmlwhANizeSHb3BzdGFja4Sx_AQAiXNlY3AyNTZrMaECg4pk0cskPAyJ7pOmo9E6RqGBwV-Lex4VS9a3MQvu7PWDdGNwgnZhg3VkcIJ2YQ,enr:-J64QDge2jYBQtcNEpRqmKfci5E5BHAhNBjgv4WSdwH1_wPqbueq2bDj38-TSW8asjy5lJj1Xftui6Or8lnaYFCqCI-GAY3d6wf3gmlkgnY0gmlwhCO2D9yHb3BzdGFja4Sx_AQAiXNlY3AyNTZrMaEDo4aCTq7pCEN8om9U5n_VyWdambGnQhwHNwKc8o-OicaDdGNwgnZhg3VkcIJ2YQ
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"genesis": {
|
|
||||||
"l1": {
|
|
||||||
"hash": "0xfcfb8d586bdae763f1189988789211c69eb893a895e7ba48be3ca6289f0941b7",
|
|
||||||
"number": 19300102
|
|
||||||
},
|
|
||||||
"l2": {
|
|
||||||
"hash": "0xb689b35ef29d0bec5816938e0e52683c7257d2e325420ea69b739a2be4754b89",
|
|
||||||
"number": 0
|
|
||||||
},
|
|
||||||
"l2_time": 1708809815,
|
|
||||||
"system_config": {
|
|
||||||
"batcherAddr": "0x415c8893d514f9bc5211d36eeda4183226b84aa7",
|
|
||||||
"overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc",
|
|
||||||
"scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0",
|
|
||||||
"gasLimit": 30000000
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"block_time": 2,
|
|
||||||
"max_sequencer_drift": 600,
|
|
||||||
"seq_window_size": 3600,
|
|
||||||
"channel_timeout": 300,
|
|
||||||
"l1_chain_id": 1,
|
|
||||||
"l2_chain_id": 81457,
|
|
||||||
"regolith_time": 0,
|
|
||||||
"canyon_time": 0,
|
|
||||||
"batch_inbox_address": "0xff00000000000000000000000000000000081457",
|
|
||||||
"deposit_contract_address": "0x0ec68c5b10f21effb74f2a5c61dfe6b08c0db6cb",
|
|
||||||
"l1_system_config_address": "0x5531dcff39ec1ec727c4c5d2fc49835368f805a9",
|
|
||||||
"protocol_versions_address": "0x0000000000000000000000000000000000000000"
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
if [[ "true" == "$CERC_SCRIPT_DEBUG" ]]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
ENR_OPTS=""
|
|
||||||
if [[ -n "$LIGHTHOUSE_ENR_ADDRESS" ]]; then
|
|
||||||
ENR_OPTS="--enr-address $LIGHTHOUSE_ENR_ADDRESS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec lighthouse bn \
|
|
||||||
--checkpoint-sync-url "$LIGHTHOUSE_CHECKPOINT_SYNC_URL" \
|
|
||||||
--checkpoint-sync-url-timeout ${LIGHTHOUSE_CHECKPOINT_SYNC_URL_TIMEOUT} \
|
|
||||||
--datadir "$LIGHTHOUSE_DATADIR" \
|
|
||||||
--debug-level $LIGHTHOUSE_DEBUG_LEVEL \
|
|
||||||
--disable-deposit-contract-sync \
|
|
||||||
--disable-upnp \
|
|
||||||
--enr-tcp-port $LIGHTHOUSE_NETWORK_PORT \
|
|
||||||
--enr-udp-port $LIGHTHOUSE_NETWORK_PORT \
|
|
||||||
--execution-endpoint "$LIGHTHOUSE_EXECUTION_ENDPOINT" \
|
|
||||||
--execution-jwt /etc/mainnet-eth/jwtsecret \
|
|
||||||
--http \
|
|
||||||
--http-address 0.0.0.0 \
|
|
||||||
--http-port $LIGHTHOUSE_HTTP_PORT \
|
|
||||||
--metrics \
|
|
||||||
--metrics-address=0.0.0.0 \
|
|
||||||
--metrics-port $LIGHTHOUSE_METRICS_PORT \
|
|
||||||
--network mainnet \
|
|
||||||
--port $LIGHTHOUSE_NETWORK_PORT \
|
|
||||||
$ENR_OPTS $LIGHTHOUSE_OPTS
|
|
||||||
@@ -50,6 +50,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="azimuth", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -126,6 +142,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="censures", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -202,6 +234,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="claims", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -278,6 +326,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="conditional_star_release", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -354,6 +418,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="delegated_sending", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -430,6 +510,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="ecliptic", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -506,6 +602,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="azimuth", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -582,6 +694,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="azimuth", instance="polls", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -660,6 +788,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="sushi", instance="sushiswap", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
@@ -736,6 +880,22 @@ groups:
|
|||||||
legendFormat: __auto
|
legendFormat: __auto
|
||||||
range: false
|
range: false
|
||||||
refId: latest_external
|
refId: latest_external
|
||||||
|
- refId: latest_indexed
|
||||||
|
relativeTimeRange:
|
||||||
|
from: 600
|
||||||
|
to: 0
|
||||||
|
datasourceUid: PBFA97CFB590B2093
|
||||||
|
model:
|
||||||
|
datasource:
|
||||||
|
type: prometheus
|
||||||
|
uid: PBFA97CFB590B2093
|
||||||
|
editorMode: code
|
||||||
|
expr: sync_status_block_number{job="sushi", instance="merkl_sushiswap", kind="latest_indexed"}
|
||||||
|
hide: false
|
||||||
|
instant: true
|
||||||
|
legendFormat: __auto
|
||||||
|
range: false
|
||||||
|
refId: latest_indexed
|
||||||
- refId: condition
|
- refId: condition
|
||||||
relativeTimeRange:
|
relativeTimeRange:
|
||||||
from: 600
|
from: 600
|
||||||
|
|||||||
@@ -0,0 +1,99 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CERC_NITRO_RPC_FUND_AMOUNT=${CERC_NITRO_RPC_FUND_AMOUNT:-0}
|
||||||
|
CERC_NITRO_RPC_HOST_ALICE=${CERC_NITRO_RPC_HOST_ALICE:-go-nitro-alice}
|
||||||
|
CERC_NITRO_RPC_PORT_ALICE=${CERC_NITRO_RPC_PORT_ALICE:-4006}
|
||||||
|
CERC_NITRO_USE_TLS=${CERC_NITRO_USE_TLS:-false}
|
||||||
|
CERC_NITRO_ADDRESS_BOB=${CERC_NITRO_ADDRESS_BOB:-0xe07e314501cc73b24cf45a6577486017300e153c}
|
||||||
|
|
||||||
|
|
||||||
|
# Wait till chain endpoint is available
|
||||||
|
retry_interval=5
|
||||||
|
while true; do
|
||||||
|
nc -z -w 1 "$CERC_NITRO_RPC_HOST_ALICE" "$CERC_NITRO_RPC_PORT_ALICE"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Nitro endpoint is available"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Nitro endpoint not yet available, retrying in $retry_interval seconds..."
|
||||||
|
sleep $retry_interval
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$CERC_NITRO_RPC_FUND_AMOUNT" -gt 0 ]]; then
|
||||||
|
nitro-rpc-client -h $CERC_NITRO_RPC_HOST_ALICE \
|
||||||
|
-p $CERC_NITRO_RPC_PORT_ALICE \
|
||||||
|
-s=$CERC_NITRO_USE_TLS \
|
||||||
|
get-all-ledger-channels | \
|
||||||
|
jq "[.[] | select(.Status == \"Open\") | select(.Balance.Them == \"$CERC_NITRO_ADDRESS_BOB\")] | first" > \
|
||||||
|
/app/deployment/nitro-ledger-channel-alice-to-bob.json
|
||||||
|
|
||||||
|
ledger_channel=$(jq -r '.ID' /app/deployment/nitro-ledger-channel-alice-to-bob.json 2>/dev/null | sed 's/^null$//')
|
||||||
|
|
||||||
|
if [[ -z "${ledger_channel}" ]]; then
|
||||||
|
echo "Creating new ledger channel ..."
|
||||||
|
nitro-rpc-client -h $CERC_NITRO_RPC_HOST_ALICE \
|
||||||
|
-p $CERC_NITRO_RPC_PORT_ALICE \
|
||||||
|
-s=$CERC_NITRO_USE_TLS \
|
||||||
|
-n \
|
||||||
|
direct-fund --amount $CERC_NITRO_RPC_FUND_AMOUNT $CERC_NITRO_ADDRESS_BOB
|
||||||
|
|
||||||
|
nitro-rpc-client -h $CERC_NITRO_RPC_HOST_ALICE \
|
||||||
|
-p $CERC_NITRO_RPC_PORT_ALICE \
|
||||||
|
-s=$CERC_NITRO_USE_TLS \
|
||||||
|
get-all-ledger-channels | \
|
||||||
|
jq "[.[] | select(.Status == \"Open\") | select(.Balance.Them == \"$CERC_NITRO_ADDRESS_BOB\")] | first" > \
|
||||||
|
/app/deployment/nitro-ledger-channel-alice-to-bob.json
|
||||||
|
|
||||||
|
ledger_channel=$(jq -r '.ID' /app/deployment/nitro-ledger-channel-alice-to-bob.json)
|
||||||
|
fi
|
||||||
|
|
||||||
|
nitro-rpc-client -h $CERC_NITRO_RPC_HOST_ALICE \
|
||||||
|
-p $CERC_NITRO_RPC_PORT_ALICE \
|
||||||
|
-s=$CERC_NITRO_USE_TLS \
|
||||||
|
get-payment-channels-by-ledger $ledger_channel > \
|
||||||
|
/app/deployment/nitro-payment-channels-alice-to-bob.json
|
||||||
|
|
||||||
|
first_open_channel=$(jq '[.[] | select(.Status == "Open")] | first' /app/deployment/nitro-payment-channels-alice-to-bob.json | sed 's/^null$//')
|
||||||
|
|
||||||
|
if [[ -z "$first_open_channel" ]]; then
|
||||||
|
echo "Creating new payment channel ..."
|
||||||
|
nitro-rpc-client -h $CERC_NITRO_RPC_HOST_ALICE \
|
||||||
|
-p $CERC_NITRO_RPC_PORT_ALICE \
|
||||||
|
-s=$CERC_NITRO_USE_TLS \
|
||||||
|
-n \
|
||||||
|
virtual-fund --amount $((CERC_NITRO_RPC_FUND_AMOUNT/2)) $CERC_NITRO_ADDRESS_BOB
|
||||||
|
|
||||||
|
nitro-rpc-client -h $CERC_NITRO_RPC_HOST_ALICE \
|
||||||
|
-p $CERC_NITRO_RPC_PORT_ALICE \
|
||||||
|
-s=$CERC_NITRO_USE_TLS \
|
||||||
|
get-payment-channels-by-ledger $ledger_channel > \
|
||||||
|
/app/deployment/nitro-payment-channels-alice-to-bob.json
|
||||||
|
|
||||||
|
first_open_channel=$(jq '[.[] | select(.Status == "Open")] | first' /app/deployment/nitro-payment-channels-alice-to-bob.json | sed 's/^null$//')
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "################################################################"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "LEDGER:"
|
||||||
|
cat /app/deployment/nitro-ledger-channel-alice-to-bob.json | jq
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "PAYMENT:"
|
||||||
|
cat /app/deployment/nitro-payment-channels-alice-to-bob.json | jq
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
exec "$@"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [ 1 -eq 1 ]; do
|
||||||
|
sleep 100
|
||||||
|
done
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
set -u
|
|
||||||
|
|
||||||
echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}"
|
|
||||||
|
|
||||||
# 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_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ")
|
|
||||||
|
|
||||||
# Write the modified content to a new file
|
|
||||||
echo "$WATCHER_CONFIG" > environments/local.toml
|
|
||||||
|
|
||||||
echo "Running job-runner..."
|
|
||||||
DEBUG=vulcanize:* exec node --enable-source-maps dist/job-runner.js
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
set -u
|
|
||||||
|
|
||||||
echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}"
|
|
||||||
|
|
||||||
# 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_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ")
|
|
||||||
|
|
||||||
# Write the modified content to a new file
|
|
||||||
echo "$WATCHER_CONFIG" > environments/local.toml
|
|
||||||
|
|
||||||
echo "Running server..."
|
|
||||||
DEBUG=vulcanize:* exec node --enable-source-maps dist/server.js
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
[server]
|
|
||||||
host = "0.0.0.0"
|
|
||||||
port = 3008
|
|
||||||
kind = "active"
|
|
||||||
gqlPath = "/"
|
|
||||||
|
|
||||||
# Checkpointing state.
|
|
||||||
checkpointing = true
|
|
||||||
|
|
||||||
# Checkpoint interval in number of blocks.
|
|
||||||
checkpointInterval = 2000
|
|
||||||
|
|
||||||
# Enable state creation
|
|
||||||
# CAUTION: Disable only if state creation is not desired or can be filled subsequently
|
|
||||||
enableState = false
|
|
||||||
|
|
||||||
subgraphPath = "./subgraph-build"
|
|
||||||
|
|
||||||
# Interval to restart wasm instance periodically
|
|
||||||
wasmRestartBlocksInterval = 20
|
|
||||||
|
|
||||||
# Interval in number of blocks at which to clear entities cache.
|
|
||||||
clearEntitiesCacheInterval = 1000
|
|
||||||
|
|
||||||
# Max block range for which to return events in eventsInRange GQL query.
|
|
||||||
# Use -1 for skipping check on block range.
|
|
||||||
maxEventsBlockRange = 1000
|
|
||||||
|
|
||||||
# Flag to specify whether RPC endpoint supports block hash as block tag parameter
|
|
||||||
rpcSupportsBlockHashParam = false
|
|
||||||
|
|
||||||
# GQL cache settings
|
|
||||||
[server.gqlCache]
|
|
||||||
enabled = true
|
|
||||||
|
|
||||||
# Max in-memory cache size (in bytes) (default 8 MB)
|
|
||||||
# maxCacheSize
|
|
||||||
|
|
||||||
# GQL cache-control max-age settings (in seconds)
|
|
||||||
maxAge = 15
|
|
||||||
timeTravelMaxAge = 86400 # 1 day
|
|
||||||
|
|
||||||
[metrics]
|
|
||||||
host = "0.0.0.0"
|
|
||||||
port = 9000
|
|
||||||
[metrics.gql]
|
|
||||||
port = 9001
|
|
||||||
|
|
||||||
[database]
|
|
||||||
type = "postgres"
|
|
||||||
host = "ajna-watcher-db"
|
|
||||||
port = 5432
|
|
||||||
database = "ajna-watcher"
|
|
||||||
username = "vdbm"
|
|
||||||
password = "password"
|
|
||||||
synchronize = true
|
|
||||||
logging = false
|
|
||||||
|
|
||||||
[upstream]
|
|
||||||
[upstream.ethServer]
|
|
||||||
rpcProviderEndpoint = "REPLACE_WITH_CERC_ETH_RPC_ENDPOINT"
|
|
||||||
|
|
||||||
# Boolean flag to specify if rpc-eth-client should be used for RPC endpoint instead of ipld-eth-client (ipld-eth-server GQL client)
|
|
||||||
rpcClient = true
|
|
||||||
|
|
||||||
# Boolean flag to specify if rpcProviderEndpoint is an FEVM RPC endpoint
|
|
||||||
isFEVM = true
|
|
||||||
|
|
||||||
# Boolean flag to filter event logs by contracts
|
|
||||||
filterLogsByAddresses = true
|
|
||||||
# Boolean flag to filter event logs by topics
|
|
||||||
filterLogsByTopics = true
|
|
||||||
|
|
||||||
[upstream.cache]
|
|
||||||
name = "requests"
|
|
||||||
enabled = false
|
|
||||||
deleteOnStart = false
|
|
||||||
|
|
||||||
[jobQueue]
|
|
||||||
dbConnectionString = "postgres://vdbm:password@ajna-watcher-db/ajna-watcher-job-queue"
|
|
||||||
maxCompletionLagInSecs = 300
|
|
||||||
jobDelayInMilliSecs = 100
|
|
||||||
eventsInBatch = 50
|
|
||||||
subgraphEventsOrder = true
|
|
||||||
# Filecoin block time: https://docs.filecoin.io/basics/the-blockchain/blocks-and-tipsets#blocktime
|
|
||||||
blockDelayInMilliSecs = 30000
|
|
||||||
|
|
||||||
# Boolean to switch between modes of processing events when starting the server.
|
|
||||||
# Setting to true will fetch filtered events and required blocks in a range of blocks and then process them.
|
|
||||||
# Setting to false will fetch blocks consecutively with its events and then process them (Behaviour is followed in realtime processing near head).
|
|
||||||
useBlockRanges = true
|
|
||||||
|
|
||||||
# Block range in which logs are fetched during historical blocks processing
|
|
||||||
historicalLogsBlockRange = 2000
|
|
||||||
|
|
||||||
# Max block range of historical processing after which it waits for completion of events processing
|
|
||||||
# If set to -1 historical processing does not wait for events processing and completes till latest canonical block
|
|
||||||
historicalMaxFetchAhead = 10000
|
|
||||||
@@ -8,9 +8,30 @@ COPY . .
|
|||||||
RUN go build -v -o nitro .
|
RUN go build -v -o nitro .
|
||||||
|
|
||||||
# Reduce image size
|
# Reduce image size
|
||||||
FROM debian:bullseye-slim
|
FROM node:18-bullseye-slim as builder-node
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y ca-certificates jq netcat
|
RUN apt-get install -y make
|
||||||
|
WORKDIR /app
|
||||||
|
COPY . .
|
||||||
|
RUN find . -name 'node_modules' | xargs -n1 rm -rf
|
||||||
|
RUN find . -name 'dist' | xargs -n1 rm -rf
|
||||||
|
RUN yarn
|
||||||
|
WORKDIR /app/packages/nitro-gui
|
||||||
|
RUN VITE_RPC_HOST=CERC_RUNTIME_ENV_RPC_HOST yarn build
|
||||||
|
RUN if [ -d /app/packages/nitro-auth-gui ]; then \
|
||||||
|
cd /app/packages/nitro-auth-gui && \
|
||||||
|
VITE_RPC_URL=CERC_RUNTIME_ENV_RPC_URL VITE_TARGET_URL=CERC_RUNTIME_ENV_TARGET_URL yarn build; \
|
||||||
|
fi
|
||||||
|
WORKDIR /app/packages/nitro-auth
|
||||||
|
RUN if [ -d /app/packages/nitro-auth ]; then cd /app/packages/nitro-auth && yarn build; fi
|
||||||
|
|
||||||
|
FROM node:18-bullseye-slim
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y ca-certificates jq netcat make curl wget
|
||||||
RUN rm -rf /var/lib/apt/lists/*
|
RUN rm -rf /var/lib/apt/lists/*
|
||||||
|
RUN npm install -g http-server
|
||||||
|
RUN npm config set @cerc-io:registry https://git.vdb.to/api/packages/cerc-io/npm/
|
||||||
|
RUN npm install -g @cerc-io/peer
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=builder /app/nitro .
|
COPY --from=builder /app/nitro .
|
||||||
|
COPY --from=builder-node /app /app-node
|
||||||
@@ -4,9 +4,10 @@ RUN apk --update --no-cache add python3 alpine-sdk bash curl jq
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY . .
|
COPY packages/nitro-rpc-client .
|
||||||
|
|
||||||
RUN echo "Installing dependencies" && \
|
RUN echo "Installing dependencies" && \
|
||||||
yarn
|
yarn
|
||||||
|
|
||||||
RUN cd packages/nitro-rpc-client
|
RUN yarn build
|
||||||
|
RUN ln -s /app/bin/nitro-rpc-client.js /bin/nitro-rpc-client
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
FROM node:18.17.1-alpine3.18
|
|
||||||
|
|
||||||
RUN apk --update --no-cache add git python3 alpine-sdk bash curl jq
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
RUN echo "Installing dependencies and building ajna-watcher-ts" && \
|
|
||||||
yarn && yarn build
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Build cerc/watcher-ajna
|
|
||||||
|
|
||||||
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
|
||||||
|
|
||||||
# See: https://stackoverflow.com/a/246128/1701505
|
|
||||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
||||||
|
|
||||||
docker build -t cerc/watcher-ajna:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/ajna-watcher-ts
|
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
# Ajna Watcher
|
|
||||||
|
|
||||||
## Setup
|
|
||||||
|
|
||||||
Clone required repositories:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack ajna setup-repositories --git-ssh --pull
|
|
||||||
```
|
|
||||||
|
|
||||||
Build the container images:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack ajna build-containers
|
|
||||||
```
|
|
||||||
|
|
||||||
## Deploy
|
|
||||||
|
|
||||||
Create a spec file for the deployment:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack ajna deploy init --output ajna-spec.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
### Ports
|
|
||||||
|
|
||||||
Edit `network` in the spec file to map container ports to host ports as required:
|
|
||||||
|
|
||||||
```yml
|
|
||||||
...
|
|
||||||
network:
|
|
||||||
ports:
|
|
||||||
ajna-watcher-db:
|
|
||||||
- 15432:5432
|
|
||||||
ajna-watcher-job-runner:
|
|
||||||
- 9000:9000
|
|
||||||
ajna-watcher-server:
|
|
||||||
- 3008:3008
|
|
||||||
- 9001:9001
|
|
||||||
```
|
|
||||||
|
|
||||||
### Create a deployment
|
|
||||||
|
|
||||||
Create a deployment from the spec file:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack ajna deploy create --spec-file ajna-spec.yml --deployment-dir ajna-deployment
|
|
||||||
```
|
|
||||||
|
|
||||||
### Configuration
|
|
||||||
|
|
||||||
Inside deployment directory, open the `config.env` file and set following env variables:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# External Filecoin (ETH RPC) endpoint to point the watcher to
|
|
||||||
CERC_ETH_RPC_ENDPOINT=https://example-lotus-endpoint/rpc/v1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Start the deployment
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so deployment --dir ajna-deployment start
|
|
||||||
```
|
|
||||||
|
|
||||||
* To list down and monitor the running containers:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# With status
|
|
||||||
docker ps -a
|
|
||||||
|
|
||||||
# Check logs for a container
|
|
||||||
docker logs -f <CONTAINER_ID>
|
|
||||||
```
|
|
||||||
|
|
||||||
* Open the GQL playground at <http://localhost:3008/graphql>
|
|
||||||
|
|
||||||
```graphql
|
|
||||||
# Example query
|
|
||||||
query {
|
|
||||||
_meta {
|
|
||||||
block {
|
|
||||||
hash
|
|
||||||
number
|
|
||||||
timestamp
|
|
||||||
}
|
|
||||||
deployment
|
|
||||||
hasIndexingErrors
|
|
||||||
}
|
|
||||||
|
|
||||||
accounts {
|
|
||||||
id
|
|
||||||
txCount
|
|
||||||
tokensDelegated
|
|
||||||
rewardsClaimed
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Clean up
|
|
||||||
|
|
||||||
Stop all the ajna services running in background:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Only stop the docker containers
|
|
||||||
laconic-so deployment --dir ajna-deployment stop
|
|
||||||
|
|
||||||
# Run 'start' to restart the deployment
|
|
||||||
```
|
|
||||||
|
|
||||||
To stop all the ajna services and also delete data:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Stop the docker containers
|
|
||||||
laconic-so deployment --dir ajna-deployment stop --delete-volumes
|
|
||||||
|
|
||||||
# Remove deployment directory (deployment will have to be recreated for a re-run)
|
|
||||||
rm -r ajna-deployment
|
|
||||||
```
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
version: "1.0"
|
|
||||||
name: ajna
|
|
||||||
description: "Ajna watcher stack"
|
|
||||||
repos:
|
|
||||||
- git.vdb.to/cerc-io/ajna-watcher-ts@v0.1.1
|
|
||||||
containers:
|
|
||||||
- cerc/watcher-ajna
|
|
||||||
pods:
|
|
||||||
- watcher-ajna
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# Blast stack
|
|
||||||
|
|
||||||
## Clone required repositories
|
|
||||||
```
|
|
||||||
$ laconic-so --stack fixturenet-blast setup-repositories
|
|
||||||
```
|
|
||||||
## Build the stack's containers
|
|
||||||
```
|
|
||||||
$ laconic-so --stack fixturenet-blast build-containers
|
|
||||||
```
|
|
||||||
## Create a deployment of the stack
|
|
||||||
```
|
|
||||||
$ laconic-so --stack fixturenet-blast deploy init --map-ports-to-host any-same --output blast-spec.yml
|
|
||||||
```
|
|
||||||
[Insert details on how to configure the stack]
|
|
||||||
```
|
|
||||||
$ laconic-so --stack fixturenet-blast deploy create --deployment-dir blast-deployment --spec-file blast-spec.yml
|
|
||||||
```
|
|
||||||
## Start the stack
|
|
||||||
```
|
|
||||||
$ laconic-so deployment --dir blast-deployment start
|
|
||||||
```
|
|
||||||
Check logs:
|
|
||||||
```
|
|
||||||
$ laconic-so deployment --dir blast-deployment logs
|
|
||||||
```
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
version: "1.0"
|
|
||||||
name: fixturenet-blast
|
|
||||||
description: "A blast devnet stack"
|
|
||||||
repos:
|
|
||||||
- github.com/blast-io/blast
|
|
||||||
- git.vdb.to/cerc-io/lighthouse
|
|
||||||
containers:
|
|
||||||
- cerc/webapp-base
|
|
||||||
- cerc/lighthouse
|
|
||||||
- cerc/lighthouse-cli
|
|
||||||
- cerc/foundry
|
|
||||||
- cerc/fixturenet-eth-lighthouse
|
|
||||||
|
|
||||||
pods:
|
|
||||||
- fixturenet-blast
|
|
||||||
- foundry
|
|
||||||
|
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
# go-nitro-auth
|
||||||
|
|
||||||
|
Deploy a stack for demoing Nitro-based auth, using either a local fixturenet (fully self-contained) or remote testnet.
|
||||||
|
|
||||||
|
## Local Fixturenet (Self-Contained)
|
||||||
|
|
||||||
|
### Clone required repositories
|
||||||
|
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-eth setup-repositories
|
||||||
|
$ laconic-so --stack go-nitro-auth setup-repositories
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build containers
|
||||||
|
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-eth build-containers
|
||||||
|
$ laconic-so --stack go-nitro-auth build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create a deployment
|
||||||
|
|
||||||
|
```
|
||||||
|
$ laconic-so --stack fixturenet-eth deploy init --output nitro-net.yml
|
||||||
|
$ laconic-so --stack fixturenet-eth deploy create --spec-file nitro-net.yml --deployment-dir /srv/nitro-net
|
||||||
|
|
||||||
|
$ laconic-so --stack go-nitro-auth deploy init --map-ports-to-host any-same --output nitro-auth.yml
|
||||||
|
$ laconic-so --stack go-nitro-auth deploy create --spec-file nitro-auth.yml --deployment-dir /srv/nitro-auth
|
||||||
|
|
||||||
|
# Place them both in the same namespace (TODO: support setting the deployment name via --cluster).
|
||||||
|
$ cp /srv/nitro-net/deployment.yml /srv/nitro-auth/deployment.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Start the containers
|
||||||
|
|
||||||
|
```
|
||||||
|
$ laconic-so deployment --dir /srv/nitro-net up
|
||||||
|
$ laconic-so deployment --dir /srv/nitro-auth up
|
||||||
|
```
|
||||||
|
|
||||||
|
### Open the webapp
|
||||||
|
|
||||||
|
Visit http://localhost:5678
|
||||||
|
|
||||||
|
## Remote Testnet
|
||||||
|
|
||||||
|
This example will use the Linea Sepolia testnet.
|
||||||
|
|
||||||
|
### Clone required repositories
|
||||||
|
|
||||||
|
```
|
||||||
|
$ laconic-so --stack go-nitro-auth setup-repositories
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build containers
|
||||||
|
|
||||||
|
```
|
||||||
|
$ laconic-so --stack go-nitro-auth build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create a deployment
|
||||||
|
|
||||||
|
```
|
||||||
|
$ laconic-so --stack go-nitro-auth deploy init --map-ports-to-host any-same --output nitro-auth.yml
|
||||||
|
$ laconic-so --stack go-nitro-auth deploy create --spec-file nitro-auth.yml --deployment-dir /srv/nitro-auth
|
||||||
|
```
|
||||||
|
|
||||||
|
### Set your keys, contract addresses, etc.
|
||||||
|
|
||||||
|
You must set the private keys for two accounts with funds on the target network, as well as the contract addresses
|
||||||
|
(if they already exist) or else an account to create them. You must also set the URL to use for WebSocket connections,
|
||||||
|
eg, `wss://linea-sepolia.infura.io/ws/v3/<MY_API_KEY>`
|
||||||
|
|
||||||
|
#### Config
|
||||||
|
|
||||||
|
```
|
||||||
|
$ vim /srv/nitro-auth/config.env
|
||||||
|
# Addresses of existing contracts.
|
||||||
|
CERC_CA_ADDRESS="0x1Ae815c3e7556e16ceaB6B6d46306C1870EB6d24"
|
||||||
|
CERC_NA_ADDRESS="0xc453C5E3f304bb545A3Df7bBa02fe6274A056636"
|
||||||
|
CERC_VPA_ADDRESS="0xA11af80D75b1150631FA78178c94fa451c7172a8"
|
||||||
|
|
||||||
|
# Else the private key of an account and RPC URL to use create them.
|
||||||
|
CERC_PRIVATE_KEY_DEPLOYER=<PRIV_KEY_HERE>
|
||||||
|
CERC_ETH_RPC_ENDPOINT=https://rpc.sepolia.linea.build
|
||||||
|
|
||||||
|
# The WebSocket chain URL.
|
||||||
|
CERC_NITRO_CHAIN_URL=wss://linea-sepolia.infura.io/ws/v3/<MY_API_KEY_HERE>
|
||||||
|
|
||||||
|
# Private key for "Alice" account (payer)
|
||||||
|
CERC_NITRO_CHAIN_PK_ALICE=<ALICE_PRIVATE_KEY_HERE>
|
||||||
|
|
||||||
|
# Private key for "Bob" account (payee)
|
||||||
|
CERC_NITRO_CHAIN_PK_BOB=<BOB_PRIVATE_KEY_HERE>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Start the stack
|
||||||
|
```
|
||||||
|
$ laconic-so deployment --dir /srv/nitro-auth up
|
||||||
|
```
|
||||||
|
|
||||||
|
### Open the webapp
|
||||||
|
|
||||||
|
Visit http://localhost:5678
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
version: "1.0"
|
||||||
|
name: go-nitro-auth
|
||||||
|
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
|
||||||
|
- github.com/cerc-io/go-nitro@telackey/update
|
||||||
|
containers:
|
||||||
|
# nitro
|
||||||
|
- cerc/nitro-contracts
|
||||||
|
- cerc/go-nitro
|
||||||
|
- cerc/nitro-rpc-client
|
||||||
|
pods:
|
||||||
|
- nitro-contracts
|
||||||
|
- go-nitro-auth
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# Blast stack
|
|
||||||
|
|
||||||
## Clone required repositories
|
|
||||||
```
|
|
||||||
$ laconic-so --stack mainnet-blast setup-repositories
|
|
||||||
```
|
|
||||||
## Build the stack's containers
|
|
||||||
```
|
|
||||||
$ laconic-so --stack mainnet-blast build-containers
|
|
||||||
```
|
|
||||||
## Create a deployment of the stack
|
|
||||||
```
|
|
||||||
$ laconic-so --stack mainnet-blast deploy init --map-ports-to-host any-same --output blast-spec.yml
|
|
||||||
```
|
|
||||||
[Insert details on how to configure the stack]
|
|
||||||
```
|
|
||||||
$ laconic-so --stack mainnet-blast deploy create --deployment-dir blast-deployment --spec-file blast-spec.yml
|
|
||||||
```
|
|
||||||
## Start the stack
|
|
||||||
```
|
|
||||||
$ laconic-so deployment --dir blast-deployment start
|
|
||||||
```
|
|
||||||
Check logs:
|
|
||||||
```
|
|
||||||
$ laconic-so deployment --dir blast-deployment logs
|
|
||||||
```
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
# Copyright © 2023 Vulcanize
|
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
|
||||||
from pathlib import Path
|
|
||||||
from shutil import copy
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
|
|
||||||
def create(context, extra_args):
|
|
||||||
# Our goal here is just to copy the json files for blast
|
|
||||||
yml_path = context.deployment_dir.joinpath("spec.yml")
|
|
||||||
with open(yml_path, 'r') as file:
|
|
||||||
data = yaml.safe_load(file)
|
|
||||||
|
|
||||||
mount_point = data['volumes']['blast-data']
|
|
||||||
if mount_point[0] == "/":
|
|
||||||
deploy_dir = Path(mount_point)
|
|
||||||
else:
|
|
||||||
deploy_dir = context.deployment_dir.joinpath(mount_point)
|
|
||||||
|
|
||||||
command_context = extra_args[2]
|
|
||||||
compose_file = [f for f in command_context.cluster_context.compose_files if "mainnet-blast" in f][0]
|
|
||||||
source_config_file = Path(compose_file).parent.parent.joinpath("config", "mainnet-blast", "genesis.json")
|
|
||||||
copy(source_config_file, deploy_dir)
|
|
||||||
source_config_file = Path(compose_file).parent.parent.joinpath("config", "mainnet-blast", "rollup.json")
|
|
||||||
copy(source_config_file, deploy_dir)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
version: "1.0"
|
|
||||||
name: mainnet-blast
|
|
||||||
description: "A blast stack"
|
|
||||||
repos:
|
|
||||||
- github.com/blast-io/blast
|
|
||||||
- git.vdb.to/cerc-io/lighthouse
|
|
||||||
containers:
|
|
||||||
- cerc/webapp-base
|
|
||||||
- cerc/lighthouse
|
|
||||||
- cerc/lighthouse-cli
|
|
||||||
pods:
|
|
||||||
- mainnet-blast
|
|
||||||
@@ -16,55 +16,26 @@ laconic-so --stack merkl-sushiswap-v3 build-containers
|
|||||||
|
|
||||||
## Deploy
|
## Deploy
|
||||||
|
|
||||||
Create a spec file for the deployment:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack merkl-sushiswap-v3 deploy init --output merkl-sushiswap-v3-spec.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
### Ports
|
|
||||||
|
|
||||||
Edit `network` in the spec file to map container ports to host ports as required:
|
|
||||||
|
|
||||||
```
|
|
||||||
...
|
|
||||||
network:
|
|
||||||
ports:
|
|
||||||
merkl-sushiswap-v3-watcher-db:
|
|
||||||
- '5432'
|
|
||||||
merkl-sushiswap-v3-watcher-job-runner:
|
|
||||||
- 9002:9000
|
|
||||||
merkl-sushiswap-v3-watcher-server:
|
|
||||||
- 127.0.0.1:3007:3008
|
|
||||||
- 9003:9001
|
|
||||||
```
|
|
||||||
|
|
||||||
### Create a deployment
|
|
||||||
|
|
||||||
Create a deployment from the spec file:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack merkl-sushiswap-v3 deploy create --spec-file merkl-sushiswap-v3-spec.yml --deployment-dir merkl-sushiswap-v3-deployment
|
|
||||||
```
|
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
Inside deployment directory, open the `config.env` file and set following env variables:
|
Create and update an env file to be used in the next step:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# External Filecoin (ETH RPC) endpoint to point the watcher
|
||||||
|
CERC_ETH_RPC_ENDPOINT=
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy the stack
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# External Filecoin (ETH RPC) endpoint to point the watcher to
|
laconic-so --stack merkl-sushiswap-v3 deploy --cluster merkl_sushiswap_v3 --env-file <PATH_TO_ENV_FILE> up
|
||||||
CERC_ETH_RPC_ENDPOINT=https://example-lotus-endpoint/rpc/v1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Start the deployment
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so deployment --dir merkl-sushiswap-v3-deployment start
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* To list down and monitor the running containers:
|
* To list down and monitor the running containers:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
laconic-so --stack merkl-sushiswap-v3 deploy --cluster merkl_sushiswap_v3 ps
|
||||||
|
|
||||||
# With status
|
# With status
|
||||||
docker ps -a
|
docker ps -a
|
||||||
|
|
||||||
@@ -75,7 +46,6 @@ laconic-so deployment --dir merkl-sushiswap-v3-deployment start
|
|||||||
* Open the GQL playground at http://localhost:3007/graphql
|
* Open the GQL playground at http://localhost:3007/graphql
|
||||||
|
|
||||||
```graphql
|
```graphql
|
||||||
# Example query
|
|
||||||
{
|
{
|
||||||
_meta {
|
_meta {
|
||||||
block {
|
block {
|
||||||
@@ -94,21 +64,18 @@ laconic-so deployment --dir merkl-sushiswap-v3-deployment start
|
|||||||
|
|
||||||
## Clean up
|
## Clean up
|
||||||
|
|
||||||
Stop all the merkl-sushiswap-v3 services running in background:
|
Stop all the services running in background:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Only stop the docker containers
|
laconic-so --stack merkl-sushiswap-v3 deploy --cluster merkl_sushiswap_v3 down
|
||||||
laconic-so deployment --dir merkl-sushiswap-v3-deployment stop
|
|
||||||
|
|
||||||
# Run 'start' to restart the deployment
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To stop all the merkl-sushiswap-v3 services and also delete data:
|
Clear volumes created by this stack:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Stop the docker containers
|
# List all relevant volumes
|
||||||
laconic-so deployment --dir merkl-sushiswap-v3-deployment stop --delete-volumes
|
docker volume ls -q --filter "name=merkl_sushiswap_v3"
|
||||||
|
|
||||||
# Remove deployment directory (deployment will have to be recreated for a re-run)
|
# Remove all the listed volumes
|
||||||
rm -r merkl-sushiswap-v3-deployment
|
docker volume rm $(docker volume ls -q --filter "name=merkl_sushiswap_v3")
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ version: "1.0"
|
|||||||
name: merkl-sushiswap-v3
|
name: merkl-sushiswap-v3
|
||||||
description: "SushiSwap v3 watcher stack"
|
description: "SushiSwap v3 watcher stack"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/merkl-sushiswap-v3-watcher-ts@v0.1.7
|
- github.com/cerc-io/merkl-sushiswap-v3-watcher-ts@v0.1.6
|
||||||
containers:
|
containers:
|
||||||
- cerc/watcher-merkl-sushiswap-v3
|
- cerc/watcher-merkl-sushiswap-v3
|
||||||
pods:
|
pods:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
version: "0.1"
|
version: "0.1"
|
||||||
name: monitoring
|
name: monitoring
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/watcher-ts@v0.2.81
|
- github.com/cerc-io/watcher-ts@v0.2.79
|
||||||
containers:
|
containers:
|
||||||
- cerc/watcher-ts
|
- cerc/watcher-ts
|
||||||
pods:
|
pods:
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ ports:
|
|||||||
Create deployment:
|
Create deployment:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
laconic-so --stack sushiswap-subgraph deploy create --spec-file sushiswap-subgraph-spec.yml --deployment-dir sushiswap-subgraph-deployment
|
laconic-so deploy create --spec-file sushiswap-subgraph-spec.yml --deployment-dir sushiswap-subgraph-deployment
|
||||||
```
|
```
|
||||||
|
|
||||||
## Start the stack
|
## Start the stack
|
||||||
|
|||||||
@@ -16,55 +16,26 @@ laconic-so --stack sushiswap-v3 build-containers
|
|||||||
|
|
||||||
## Deploy
|
## Deploy
|
||||||
|
|
||||||
Create a spec file for the deployment:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack sushiswap-v3 deploy init --output sushiswap-v3-spec.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
### Ports
|
|
||||||
|
|
||||||
Edit `network` in the spec file to map container ports to host ports as required:
|
|
||||||
|
|
||||||
```
|
|
||||||
...
|
|
||||||
network:
|
|
||||||
ports:
|
|
||||||
sushiswap-v3-watcher-db:
|
|
||||||
- '5432'
|
|
||||||
sushiswap-v3-watcher-job-runner:
|
|
||||||
- 9000:9000
|
|
||||||
sushiswap-v3-watcher-server:
|
|
||||||
- 127.0.0.1:3008:3008
|
|
||||||
- 9001:9001
|
|
||||||
```
|
|
||||||
|
|
||||||
### Create a deployment
|
|
||||||
|
|
||||||
Create a deployment from the spec file:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so --stack sushiswap-v3 deploy create --spec-file sushiswap-v3-spec.yml --deployment-dir sushiswap-v3-deployment
|
|
||||||
```
|
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
Inside deployment directory, open the `config.env` file and set following env variables:
|
Create and update an env file to be used in the next step:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# External Filecoin (ETH RPC) endpoint to point the watcher
|
||||||
|
CERC_ETH_RPC_ENDPOINT=
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy the stack
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# External Filecoin (ETH RPC) endpoint to point the watcher to
|
laconic-so --stack sushiswap-v3 deploy --cluster sushiswap_v3 --env-file <PATH_TO_ENV_FILE> up
|
||||||
CERC_ETH_RPC_ENDPOINT=https://example-lotus-endpoint/rpc/v1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Start the deployment
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laconic-so deployment --dir sushiswap-v3-deployment start
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* To list down and monitor the running containers:
|
* To list down and monitor the running containers:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
laconic-so --stack sushiswap-v3 deploy --cluster sushiswap_v3 ps
|
||||||
|
|
||||||
# With status
|
# With status
|
||||||
docker ps -a
|
docker ps -a
|
||||||
|
|
||||||
@@ -72,43 +43,20 @@ laconic-so deployment --dir sushiswap-v3-deployment start
|
|||||||
docker logs -f <CONTAINER_ID>
|
docker logs -f <CONTAINER_ID>
|
||||||
```
|
```
|
||||||
|
|
||||||
* Open the GQL playground at http://localhost:3008/graphql
|
|
||||||
|
|
||||||
```graphql
|
|
||||||
# Example query
|
|
||||||
{
|
|
||||||
_meta {
|
|
||||||
block {
|
|
||||||
number
|
|
||||||
timestamp
|
|
||||||
}
|
|
||||||
hasIndexingErrors
|
|
||||||
}
|
|
||||||
|
|
||||||
factories {
|
|
||||||
id
|
|
||||||
poolCount
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Clean up
|
## Clean up
|
||||||
|
|
||||||
Stop all the sushiswap-v3 services running in background:
|
Stop all the services running in background:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Only stop the docker containers
|
laconic-so --stack sushiswap-v3 deploy --cluster sushiswap_v3 down
|
||||||
laconic-so deployment --dir sushiswap-v3-deployment stop
|
|
||||||
|
|
||||||
# Run 'start' to restart the deployment
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To stop all the sushiswap-v3 services and also delete data:
|
Clear volumes created by this stack:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Stop the docker containers
|
# List all relevant volumes
|
||||||
laconic-so deployment --dir sushiswap-v3-deployment stop --delete-volumes
|
docker volume ls -q --filter "name=sushiswap_v3"
|
||||||
|
|
||||||
# Remove deployment directory (deployment will have to be recreated for a re-run)
|
# Remove all the listed volumes
|
||||||
rm -r sushiswap-v3-deployment
|
docker volume rm $(docker volume ls -q --filter "name=sushiswap_v3")
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ version: "1.0"
|
|||||||
name: sushiswap-v3
|
name: sushiswap-v3
|
||||||
description: "SushiSwap v3 watcher stack"
|
description: "SushiSwap v3 watcher stack"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/sushiswap-v3-watcher-ts@v0.1.7
|
- github.com/cerc-io/sushiswap-v3-watcher-ts@v0.1.6
|
||||||
containers:
|
containers:
|
||||||
- cerc/watcher-sushiswap-v3
|
- cerc/watcher-sushiswap-v3
|
||||||
pods:
|
pods:
|
||||||
|
|||||||
@@ -39,11 +39,12 @@ def process_app_deployment_request(
|
|||||||
app_deployment_request,
|
app_deployment_request,
|
||||||
deployment_record_namespace,
|
deployment_record_namespace,
|
||||||
dns_record_namespace,
|
dns_record_namespace,
|
||||||
dns_suffix,
|
default_dns_suffix,
|
||||||
deployment_parent_dir,
|
deployment_parent_dir,
|
||||||
kube_config,
|
kube_config,
|
||||||
image_registry,
|
image_registry,
|
||||||
force_rebuild,
|
force_rebuild,
|
||||||
|
fqdn_policy,
|
||||||
logger
|
logger
|
||||||
):
|
):
|
||||||
logger.log("BEGIN - process_app_deployment_request")
|
logger.log("BEGIN - process_app_deployment_request")
|
||||||
@@ -56,14 +57,15 @@ def process_app_deployment_request(
|
|||||||
requested_name = hostname_for_deployment_request(app_deployment_request, laconic)
|
requested_name = hostname_for_deployment_request(app_deployment_request, laconic)
|
||||||
logger.log(f"Determined requested name: {requested_name}")
|
logger.log(f"Determined requested name: {requested_name}")
|
||||||
|
|
||||||
# HACK
|
|
||||||
if "." in requested_name:
|
if "." in requested_name:
|
||||||
raise Exception("Only unqualified hostnames allowed at this time.")
|
if "allow" == fqdn_policy or "preexisting" == fqdn_policy:
|
||||||
|
fqdn = requested_name
|
||||||
fqdn = f"{requested_name}.{dns_suffix}"
|
else:
|
||||||
|
raise Exception(f"{requested_name} is invalid: only unqualified hostnames are allowed.")
|
||||||
|
else:
|
||||||
|
fqdn = f"{requested_name}.{default_dns_suffix}"
|
||||||
|
|
||||||
# 3. check ownership of existing dnsrecord vs this request
|
# 3. check ownership of existing dnsrecord vs this request
|
||||||
# TODO: Support foreign DNS
|
|
||||||
dns_crn = f"{dns_record_namespace}/{fqdn}"
|
dns_crn = f"{dns_record_namespace}/{fqdn}"
|
||||||
dns_record = laconic.get_record(dns_crn)
|
dns_record = laconic.get_record(dns_crn)
|
||||||
if dns_record:
|
if dns_record:
|
||||||
@@ -75,7 +77,9 @@ def process_app_deployment_request(
|
|||||||
logger.log(f"Matched DnsRecord ownership: {matched_owner}")
|
logger.log(f"Matched DnsRecord ownership: {matched_owner}")
|
||||||
else:
|
else:
|
||||||
raise Exception("Unable to confirm ownership of DnsRecord %s for request %s" %
|
raise Exception("Unable to confirm ownership of DnsRecord %s for request %s" %
|
||||||
(dns_record.id, app_deployment_request.id))
|
(dns_crn, app_deployment_request.id))
|
||||||
|
elif "preexisting" == fqdn_policy:
|
||||||
|
raise Exception(f"No pre-existing DnsRecord {dns_crn} could be found for request {app_deployment_request.id}.")
|
||||||
|
|
||||||
# 4. get build and runtime config from request
|
# 4. get build and runtime config from request
|
||||||
env_filename = None
|
env_filename = None
|
||||||
@@ -191,6 +195,7 @@ def dump_known_requests(filename, requests, status="SEEN"):
|
|||||||
@click.option("--state-file", help="File to store state about previously seen requests.")
|
@click.option("--state-file", help="File to store state about previously seen requests.")
|
||||||
@click.option("--only-update-state", help="Only update the state file, don't process any requests anything.", is_flag=True)
|
@click.option("--only-update-state", help="Only update the state file, don't process any requests anything.", is_flag=True)
|
||||||
@click.option("--dns-suffix", help="DNS domain to use eg, laconic.servesthe.world")
|
@click.option("--dns-suffix", help="DNS domain to use eg, laconic.servesthe.world")
|
||||||
|
@click.option("--fqdn-policy", help="How to handle requests with an FQDN: prohibit, allow, preexisting", default="prohibit")
|
||||||
@click.option("--record-namespace-dns", help="eg, crn://laconic/dns")
|
@click.option("--record-namespace-dns", help="eg, crn://laconic/dns")
|
||||||
@click.option("--record-namespace-deployments", help="eg, crn://laconic/deployments")
|
@click.option("--record-namespace-deployments", help="eg, crn://laconic/deployments")
|
||||||
@click.option("--dry-run", help="Don't do anything, just report what would be done.", is_flag=True)
|
@click.option("--dry-run", help="Don't do anything, just report what would be done.", is_flag=True)
|
||||||
@@ -201,7 +206,7 @@ def dump_known_requests(filename, requests, status="SEEN"):
|
|||||||
@click.pass_context
|
@click.pass_context
|
||||||
def command(ctx, kube_config, laconic_config, image_registry, deployment_parent_dir, # noqa: C901
|
def command(ctx, kube_config, laconic_config, image_registry, deployment_parent_dir, # noqa: C901
|
||||||
request_id, discover, state_file, only_update_state,
|
request_id, discover, state_file, only_update_state,
|
||||||
dns_suffix, record_namespace_dns, record_namespace_deployments, dry_run,
|
dns_suffix, fqdn_policy, record_namespace_dns, record_namespace_deployments, dry_run,
|
||||||
include_tags, exclude_tags, force_rebuild, log_dir):
|
include_tags, exclude_tags, force_rebuild, log_dir):
|
||||||
if request_id and discover:
|
if request_id and discover:
|
||||||
print("Cannot specify both --request-id and --discover", file=sys.stderr)
|
print("Cannot specify both --request-id and --discover", file=sys.stderr)
|
||||||
@@ -220,6 +225,10 @@ def command(ctx, kube_config, laconic_config, image_registry, deployment_parent_
|
|||||||
print("--dns-suffix, --record-namespace-dns, and --record-namespace-deployments are all required", file=sys.stderr)
|
print("--dns-suffix, --record-namespace-dns, and --record-namespace-deployments are all required", file=sys.stderr)
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
|
if fqdn_policy not in ["prohibit", "allow", "preexisting"]:
|
||||||
|
print("--fqdn-policy must be one of 'prohibit', 'allow', or 'preexisting'", file=sys.stderr)
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
# Split CSV and clean up values.
|
# Split CSV and clean up values.
|
||||||
include_tags = [tag.strip() for tag in include_tags.split(",") if tag]
|
include_tags = [tag.strip() for tag in include_tags.split(",") if tag]
|
||||||
exclude_tags = [tag.strip() for tag in exclude_tags.split(",") if tag]
|
exclude_tags = [tag.strip() for tag in exclude_tags.split(",") if tag]
|
||||||
@@ -334,6 +343,7 @@ def command(ctx, kube_config, laconic_config, image_registry, deployment_parent_
|
|||||||
kube_config,
|
kube_config,
|
||||||
image_registry,
|
image_registry,
|
||||||
force_rebuild,
|
force_rebuild,
|
||||||
|
fqdn_policy,
|
||||||
logger
|
logger
|
||||||
)
|
)
|
||||||
status = "DEPLOYED"
|
status = "DEPLOYED"
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$(date +"%Y-%m-%d %T"): Running stack-orchestrator Laconic registry CLI tests"
|
|
||||||
env
|
|
||||||
cat /etc/hosts
|
|
||||||
# Bit of a hack, test the most recent package
|
|
||||||
TEST_TARGET_SO=$( ls -t1 ./package/laconic-so* | head -1 )
|
|
||||||
|
|
||||||
export CERC_REPO_BASE_DIR=$(mktemp -d $(pwd)/stack-orchestrator-fixturenet-laconicd-test.XXXXXXXXXX)
|
|
||||||
echo "$(date +"%Y-%m-%d %T"): Cloning laconic-registry-cli repository into: $CERC_REPO_BASE_DIR"
|
|
||||||
$TEST_TARGET_SO --stack fixturenet-laconicd setup-repositories --include git.vdb.to/cerc-io/laconic-registry-cli
|
|
||||||
|
|
||||||
echo "$(date +"%Y-%m-%d %T"): Starting stack"
|
|
||||||
TEST_AUCTION_ENABLED=true BASE_DIR=${CERC_REPO_BASE_DIR} $TEST_TARGET_SO --stack fixturenet-laconicd deploy --cluster laconicd up
|
|
||||||
echo "$(date +"%Y-%m-%d %T"): Stack started"
|
|
||||||
|
|
||||||
# Verify that the fixturenet is up and running
|
|
||||||
$TEST_TARGET_SO --stack fixturenet-laconicd deploy --cluster laconicd ps
|
|
||||||
|
|
||||||
# Get the fixturenet account address
|
|
||||||
laconicd_account_address=$(docker exec laconicd-laconicd-1 laconicd keys list | awk '/- address:/ {print $3}')
|
|
||||||
|
|
||||||
# Copy over config
|
|
||||||
docker exec laconicd-cli-1 cp config.yml laconic-registry-cli/
|
|
||||||
|
|
||||||
# Wait for the laconid endpoint to come up
|
|
||||||
echo "Waiting for the RPC endpoint to come up"
|
|
||||||
docker exec laconicd-laconicd-1 sh -c "curl --retry 20 --retry-delay 3 --retry-connrefused http://127.0.0.1:9473/api"
|
|
||||||
|
|
||||||
# Run the tests
|
|
||||||
echo "Running the tests"
|
|
||||||
docker exec -e TEST_ACCOUNT=$laconicd_account_address laconicd-cli-1 sh -c 'cd laconic-registry-cli && yarn && yarn test'
|
|
||||||
|
|
||||||
# Clean up
|
|
||||||
$TEST_TARGET_SO --stack fixturenet-laconicd deploy --cluster laconicd down --delete-volumes
|
|
||||||
echo "$(date +"%Y-%m-%d %T"): Removing cloned repositories"
|
|
||||||
rm -rf $CERC_REPO_BASE_DIR
|
|
||||||
echo "$(date +"%Y-%m-%d %T"): Test finished"
|
|
||||||
@@ -12,7 +12,6 @@ cat /etc/hosts
|
|||||||
TEST_TARGET_SO=$( ls -t1 ./package/laconic-so* | head -1 )
|
TEST_TARGET_SO=$( ls -t1 ./package/laconic-so* | head -1 )
|
||||||
# Set a new unique repo dir
|
# Set a new unique repo dir
|
||||||
export CERC_REPO_BASE_DIR=$(mktemp -d $(pwd)/stack-orchestrator-fixturenet-laconicd-test.XXXXXXXXXX)
|
export CERC_REPO_BASE_DIR=$(mktemp -d $(pwd)/stack-orchestrator-fixturenet-laconicd-test.XXXXXXXXXX)
|
||||||
|
|
||||||
echo "$(date +"%Y-%m-%d %T"): Testing this package: $TEST_TARGET_SO"
|
echo "$(date +"%Y-%m-%d %T"): Testing this package: $TEST_TARGET_SO"
|
||||||
echo "$(date +"%Y-%m-%d %T"): Test version command"
|
echo "$(date +"%Y-%m-%d %T"): Test version command"
|
||||||
reported_version_string=$( $TEST_TARGET_SO version )
|
reported_version_string=$( $TEST_TARGET_SO version )
|
||||||
|
|||||||
@@ -32,14 +32,14 @@ set +e
|
|||||||
|
|
||||||
CONTAINER_ID=$(docker run -p 3000:80 -d -e CERC_SCRIPT_DEBUG=$CERC_SCRIPT_DEBUG cerc/test-progressive-web-app:local)
|
CONTAINER_ID=$(docker run -p 3000:80 -d -e CERC_SCRIPT_DEBUG=$CERC_SCRIPT_DEBUG cerc/test-progressive-web-app:local)
|
||||||
sleep 3
|
sleep 3
|
||||||
wget --tries 20 --retry-connrefused --waitretry=3 -O test.before -m http://localhost:3000
|
wget -t 7 -O test.before -m http://localhost:3000
|
||||||
|
|
||||||
docker logs $CONTAINER_ID
|
docker logs $CONTAINER_ID
|
||||||
docker remove -f $CONTAINER_ID
|
docker remove -f $CONTAINER_ID
|
||||||
|
|
||||||
CONTAINER_ID=$(docker run -p 3000:80 -e CERC_WEBAPP_DEBUG=$CHECK -e CERC_SCRIPT_DEBUG=$CERC_SCRIPT_DEBUG -d cerc/test-progressive-web-app:local)
|
CONTAINER_ID=$(docker run -p 3000:80 -e CERC_WEBAPP_DEBUG=$CHECK -e CERC_SCRIPT_DEBUG=$CERC_SCRIPT_DEBUG -d cerc/test-progressive-web-app:local)
|
||||||
sleep 3
|
sleep 3
|
||||||
wget --tries 20 --retry-connrefused --waitretry=3 -O test.after -m http://localhost:3000
|
wget -t 7 -O test.after -m http://localhost:3000
|
||||||
|
|
||||||
docker logs $CONTAINER_ID
|
docker logs $CONTAINER_ID
|
||||||
docker remove -f $CONTAINER_ID
|
docker remove -f $CONTAINER_ID
|
||||||
|
|||||||
Reference in New Issue
Block a user