forked from cerc-io/stack-orchestrator
Compare commits
37
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
067c618321 | ||
|
|
c8c8ce9788 | ||
|
|
bc78c5e0d6 | ||
|
|
7fd2439aa9 | ||
|
|
eca5aae991 | ||
|
|
5beaf69a36 | ||
|
|
06c4a77afe | ||
|
|
aafadbbed6 | ||
|
|
be519e9ca0 | ||
|
|
e56a910260 | ||
|
|
e3dc75118b | ||
|
|
e0b5318ebe | ||
|
|
2425aa8556 | ||
|
|
3dc9cd584a | ||
|
|
ed9c253f61 | ||
|
|
bdf4f069b4 | ||
|
|
5f9c3c14b2 | ||
|
|
0b512db693 | ||
|
|
e0ecbc3ab3 | ||
|
|
626cc17373 | ||
|
|
c30c779535 | ||
|
|
3011a485ee | ||
|
|
d505664781 | ||
|
|
4197d39b0c | ||
|
|
8dcebe3737 | ||
|
|
50d17c3282 | ||
|
|
2c930bdbc3 | ||
|
|
f48f4978aa | ||
|
|
e89f7c9526 | ||
|
|
ae9dff553e | ||
|
|
bab3a8dba8 | ||
|
|
e0972033de | ||
|
|
b5988fba8f | ||
|
|
53ed18b3dc | ||
|
|
d3c26948fc | ||
|
|
7f9b556f9d | ||
|
|
125af19890 |
@@ -0,0 +1,51 @@
|
|||||||
|
name: Test Gitea
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: '*'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- zach-test
|
||||||
|
- new-gitea-test
|
||||||
|
|
||||||
|
# Needed until we can incorporate docker startup into the executor container
|
||||||
|
env:
|
||||||
|
DOCKER_HOST: unix:///var/run/dind.sock
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: "Run Gitea package registry test"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: 'Update'
|
||||||
|
run: apt-get update
|
||||||
|
- name: 'Setup jq'
|
||||||
|
run: apt-get install jq -y
|
||||||
|
- name: 'Check jq'
|
||||||
|
run: |
|
||||||
|
which jq
|
||||||
|
jq --version
|
||||||
|
- name: "Clone project repository"
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: "Install Python"
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.8'
|
||||||
|
- name: "Print Python version"
|
||||||
|
run: python3 --version
|
||||||
|
- name: "Install shiv"
|
||||||
|
run: pip install shiv
|
||||||
|
- name: "Generate build version file"
|
||||||
|
run: ./scripts/create_build_tag_file.sh
|
||||||
|
- name: "Build local shiv package"
|
||||||
|
run: ./scripts/build_shiv_package.sh
|
||||||
|
- name: Start dockerd # Also needed until we can incorporate into the executor
|
||||||
|
run: |
|
||||||
|
dockerd -H $DOCKER_HOST --userland-proxy=false &
|
||||||
|
sleep 5
|
||||||
|
- name: "Run gitea tests"
|
||||||
|
run: |
|
||||||
|
export CERC_SCRIPT_DEBUG=true &
|
||||||
|
./tests/gitea/test.sh
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
name: Gitea Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: '*'
|
||||||
|
push:
|
||||||
|
branches: '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: "Run basic test suite"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "Clone project repository"
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: "Install Python"
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.8'
|
||||||
|
- name: "Print Python version"
|
||||||
|
run: python3 --version
|
||||||
|
- name: "Install shiv"
|
||||||
|
run: pip install shiv
|
||||||
|
- name: "Generate build version file"
|
||||||
|
run: ./scripts/create_build_tag_file.sh
|
||||||
|
- name: "Build local shiv package"
|
||||||
|
run: ./scripts/build_shiv_package.sh
|
||||||
|
- name: "Run gitea tests"
|
||||||
|
run: ./tests/gitea/test.sh
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
name: Lint Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: '*'
|
||||||
|
push:
|
||||||
|
branches: '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: "Run linter"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "Clone project repository"
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: "Install Python"
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.8'
|
||||||
|
- name : "Run flake8"
|
||||||
|
uses: py-actions/flake8@v2
|
||||||
@@ -16,6 +16,7 @@ Ensure that the following are already installed:
|
|||||||
- [Python3](https://wiki.python.org/moin/BeginnersGuide/Download): `python3 --version` >= `3.8.10` (the Python3 shipped in Ubuntu 20+ is good to go)
|
- [Python3](https://wiki.python.org/moin/BeginnersGuide/Download): `python3 --version` >= `3.8.10` (the Python3 shipped in Ubuntu 20+ is good to go)
|
||||||
- [Docker](https://docs.docker.com/get-docker/): `docker --version` >= `20.10.21`
|
- [Docker](https://docs.docker.com/get-docker/): `docker --version` >= `20.10.21`
|
||||||
- [jq](https://stedolan.github.io/jq/download/): `jq --version` >= `1.5`
|
- [jq](https://stedolan.github.io/jq/download/): `jq --version` >= `1.5`
|
||||||
|
- [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git): `git --version` >= `2.10.3`
|
||||||
|
|
||||||
Note: if installing docker-compose via package manager on Linux (as opposed to Docker Desktop), you must [install the plugin](https://docs.docker.com/compose/install/linux/#install-the-plugin-manually), e.g. :
|
Note: if installing docker-compose via package manager on Linux (as opposed to Docker Desktop), you must [install the plugin](https://docs.docker.com/compose/install/linux/#install-the-plugin-manually), e.g. :
|
||||||
|
|
||||||
@@ -49,6 +50,13 @@ laconic-so version
|
|||||||
Version: 1.1.0-7a607c2-202304260513
|
Version: 1.1.0-7a607c2-202304260513
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Update
|
||||||
|
If Stack Orchestrator was installed using the process described above, it is able to subsequently self-update to the current latest version by running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so update
|
||||||
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
The various [stacks](/app/data/stacks) each contain instructions for running different stacks based on your use case. For example:
|
The various [stacks](/app/data/stacks) each contain instructions for running different stacks based on your use case. For example:
|
||||||
|
|||||||
+6
-3
@@ -1,4 +1,4 @@
|
|||||||
# Copyright © 2022, 2023 Cerc
|
# Copyright © 2022, 2023 Vulcanize
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
@@ -63,7 +63,8 @@ class package_registry_stack(base_stack):
|
|||||||
self.url = "http://gitea.local:3000/api/packages/cerc-io/npm/"
|
self.url = "http://gitea.local:3000/api/packages/cerc-io/npm/"
|
||||||
else:
|
else:
|
||||||
# If not, print a message about how to start it and return fail to the caller
|
# If not, print a message about how to start it and return fail to the caller
|
||||||
print("ERROR: The package-registry stack is not running, and no external registry specified with CERC_NPM_REGISTRY_URL")
|
print("ERROR: The package-registry stack is not running, and no external registry "
|
||||||
|
"specified with CERC_NPM_REGISTRY_URL")
|
||||||
print("ERROR: Start the local package registry with: laconic-so --stack package-registry deploy-system up")
|
print("ERROR: Start the local package registry with: laconic-so --stack package-registry deploy-system up")
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@@ -75,5 +76,7 @@ class package_registry_stack(base_stack):
|
|||||||
def get_npm_registry_url():
|
def get_npm_registry_url():
|
||||||
# If an auth token is not defined, we assume the default should be the cerc registry
|
# If an auth token is not defined, we assume the default should be the cerc registry
|
||||||
# If an auth token is defined, we assume the local gitea should be used.
|
# If an auth token is defined, we assume the local gitea should be used.
|
||||||
default_npm_registry_url = "http://gitea.local:3000/api/packages/cerc-io/npm/" if config("CERC_NPM_AUTH_TOKEN", default=None) else "https://git.vdb.to/api/packages/cerc-io/npm/"
|
default_npm_registry_url = "http://gitea.local:3000/api/packages/cerc-io/npm/" if config(
|
||||||
|
"CERC_NPM_AUTH_TOKEN", default=None
|
||||||
|
) else "https://git.vdb.to/api/packages/cerc-io/npm/"
|
||||||
return config("CERC_NPM_REGISTRY_URL", default=default_npm_registry_url)
|
return config("CERC_NPM_REGISTRY_URL", default=default_npm_registry_url)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright © 2022, 2023 Cerc
|
# Copyright © 2022, 2023 Vulcanize
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
@@ -86,6 +86,7 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
# TODO: make this configurable
|
# TODO: make this configurable
|
||||||
container_build_env = {
|
container_build_env = {
|
||||||
"CERC_NPM_REGISTRY_URL": get_npm_registry_url(),
|
"CERC_NPM_REGISTRY_URL": get_npm_registry_url(),
|
||||||
|
"CERC_GO_AUTH_TOKEN": config("CERC_GO_AUTH_TOKEN", default=""),
|
||||||
"CERC_NPM_AUTH_TOKEN": config("CERC_NPM_AUTH_TOKEN", default=""),
|
"CERC_NPM_AUTH_TOKEN": config("CERC_NPM_AUTH_TOKEN", default=""),
|
||||||
"CERC_REPO_BASE_DIR": dev_root_path,
|
"CERC_REPO_BASE_DIR": dev_root_path,
|
||||||
"CERC_CONTAINER_BASE_DIR": container_build_dir,
|
"CERC_CONTAINER_BASE_DIR": container_build_dir,
|
||||||
|
|||||||
+7
-5
@@ -1,4 +1,4 @@
|
|||||||
# Copyright © 2022, 2023 Cerc
|
# Copyright © 2022, 2023 Vulcanize
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
@@ -30,10 +30,12 @@ from app.util import include_exclude_check, get_parsed_stack_config
|
|||||||
|
|
||||||
builder_js_image_name = "cerc/builder-js:local"
|
builder_js_image_name = "cerc/builder-js:local"
|
||||||
|
|
||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
@click.option('--include', help="only build these packages")
|
@click.option('--include', help="only build these packages")
|
||||||
@click.option('--exclude', help="don\'t build these packages")
|
@click.option('--exclude', help="don\'t build these packages")
|
||||||
@click.option("--force-rebuild", is_flag=True, default=False, help="Override existing target package version check -- force rebuild")
|
@click.option("--force-rebuild", is_flag=True, default=False,
|
||||||
|
help="Override existing target package version check -- force rebuild")
|
||||||
@click.option("--extra-build-args", help="Supply extra arguments to build")
|
@click.option("--extra-build-args", help="Supply extra arguments to build")
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
||||||
@@ -122,7 +124,7 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
# envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token} | ({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
|
# envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token} | ({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
|
||||||
# but that isn't available in Python 3.8 (default in Ubuntu 20) so for now we use dict.update:
|
# but that isn't available in Python 3.8 (default in Ubuntu 20) so for now we use dict.update:
|
||||||
envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token,
|
envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token,
|
||||||
"LACONIC_HOSTED_CONFIG_FILE": "config-hosted.yml" # Convention used by our web app packages
|
"LACONIC_HOSTED_CONFIG_FILE": "config-hosted.yml" # Convention used by our web app packages
|
||||||
}
|
}
|
||||||
envs.update({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
|
envs.update({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
|
||||||
envs.update({"CERC_FORCE_REBUILD": "true"} if force_rebuild else {})
|
envs.update({"CERC_FORCE_REBUILD": "true"} if force_rebuild else {})
|
||||||
@@ -130,8 +132,8 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
try:
|
try:
|
||||||
docker.run(builder_js_image_name,
|
docker.run(builder_js_image_name,
|
||||||
remove=True,
|
remove=True,
|
||||||
interactive=True,
|
interactive=False,
|
||||||
tty=True,
|
tty=False,
|
||||||
user=f"{os.getuid()}:{os.getgid()}",
|
user=f"{os.getuid()}:{os.getgid()}",
|
||||||
envs=envs,
|
envs=envs,
|
||||||
# TODO: detect this host name in npm_registry_url rather than hard-wiring it
|
# TODO: detect this host name in npm_registry_url rather than hard-wiring it
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright © 2023 Cerc
|
# Copyright © 2023 Vulcanize
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ services:
|
|||||||
- "6060"
|
- "6060"
|
||||||
- "26657"
|
- "26657"
|
||||||
- "26656"
|
- "26656"
|
||||||
- "9473:9473"
|
- "9473"
|
||||||
- "8545"
|
- "8545"
|
||||||
- "8546"
|
- "8546"
|
||||||
- "9090"
|
- "9090"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ services:
|
|||||||
- SYS_PTRACE
|
- SYS_PTRACE
|
||||||
environment:
|
environment:
|
||||||
CERC_REMOTE_DEBUG: ${CERC_REMOTE_DEBUG:-true}
|
CERC_REMOTE_DEBUG: ${CERC_REMOTE_DEBUG:-true}
|
||||||
CERC_RUN_STATEDIFF: "detect"
|
CERC_RUN_STATEDIFF: ${CERC_RUN_STATEDIFF:-detect}
|
||||||
CERC_STATEDIFF_DB_NODE_ID: 1
|
CERC_STATEDIFF_DB_NODE_ID: 1
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
env_file:
|
env_file:
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
version: '3.2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Deploys the sushiswap v3 subgraph
|
||||||
|
sushiswap-subgraph-v3:
|
||||||
|
image: cerc/sushiswap-subgraphs:local
|
||||||
|
restart: on-failure
|
||||||
|
depends_on:
|
||||||
|
graph-node:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- APP=v3
|
||||||
|
- NETWORK=lotus-fixturenet
|
||||||
|
command: ["bash", "-c", "./v3/run-v3.sh && ./blocks/run-blocks.sh"]
|
||||||
|
working_dir: /app/subgraphs
|
||||||
|
volumes:
|
||||||
|
- ../config/fixturenet-sushiswap-subgraph-v3/lotus-fixturenet.js.template:/app/config/lotus-fixturenet.js.template
|
||||||
|
- ../config/fixturenet-sushiswap-subgraph-v3/run-blocks.sh:/app/subgraphs/blocks/run-blocks.sh
|
||||||
|
- ../config/fixturenet-sushiswap-subgraph-v3/run-v3.sh:/app/subgraphs/v3/run-v3.sh
|
||||||
|
- sushiswap_core_deployment:/app/subgraphs/v3/core-deployments/docker
|
||||||
|
- sushiswap_periphery_deployment:/app/subgraphs/v3/periphery-deployments/docker
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
sushiswap_core_deployment:
|
||||||
|
sushiswap_periphery_deployment:
|
||||||
+7
-5
@@ -6,8 +6,6 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
ipfs:
|
ipfs:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
lotus-node-1:
|
|
||||||
condition: service_healthy
|
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- host.docker.internal:host-gateway
|
- host.docker.internal:host-gateway
|
||||||
environment:
|
environment:
|
||||||
@@ -17,9 +15,13 @@ services:
|
|||||||
postgres_user: graph-node
|
postgres_user: graph-node
|
||||||
postgres_pass: password
|
postgres_pass: password
|
||||||
postgres_db: graph-node
|
postgres_db: graph-node
|
||||||
# TODO: Get endpoint from env
|
ethereum: ${ETH_NETWORKS:-lotus-fixturenet:http://lotus-node-1:1234/rpc/v1}
|
||||||
ethereum: 'lotus-fixturenet:http://lotus-node-1:1234/rpc/v1'
|
GRAPH_LOG: debug
|
||||||
GRAPH_LOG: info
|
ETHEREUM_REORG_THRESHOLD: 3
|
||||||
|
entrypoint: ["bash", "-c"]
|
||||||
|
# Wait for ETH RPC endpoint to be up when running with fixturenet-lotus
|
||||||
|
command: |
|
||||||
|
"wait_for ${ETH_RPC_HOST:-lotus-node-1}:${ETH_RPC_PORT:-1234} -t 1800 -- start"
|
||||||
ports:
|
ports:
|
||||||
- "8000"
|
- "8000"
|
||||||
- "8001"
|
- "8001"
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
redis:
|
||||||
|
hostname: mainnet-eth-api-proxy-redis
|
||||||
|
image: redis:7-alpine
|
||||||
|
command: redis-server --save "" --appendonly no --maxmemory-policy allkeys-lru --maxmemory 1G
|
||||||
|
|
||||||
|
eth-api-proxy:
|
||||||
|
hostname: mainnet-eth-api-proxy
|
||||||
|
image: cerc/eth-api-proxy:local
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth-api-proxy/ethpxy.env
|
||||||
|
ports:
|
||||||
|
- 8547
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
keycloak-db:
|
||||||
|
image: postgres:14-alpine
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth-keycloak/keycloak.env
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 10
|
||||||
|
start_period: 3s
|
||||||
|
volumes:
|
||||||
|
- mainnet_eth_keycloak_db:/var/lib/postgresql/data
|
||||||
|
ports:
|
||||||
|
- 5432
|
||||||
|
|
||||||
|
keycloak:
|
||||||
|
image: cerc/keycloak:local
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth-keycloak/keycloak.env
|
||||||
|
environment:
|
||||||
|
JAVA_OPTS_APPEND: "-Dkeycloak.migration.action=import -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=/import -Dkeycloak.migration.strategy=IGNORE_EXISTING"
|
||||||
|
volumes:
|
||||||
|
- ../config/mainnet-eth-keycloak/import:/import
|
||||||
|
ports:
|
||||||
|
- 8080
|
||||||
|
command: ["start"]
|
||||||
|
depends_on:
|
||||||
|
keycloak-db:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
keycloak-reg-ui:
|
||||||
|
image: cerc/keycloak-reg-ui:local
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth-keycloak/keycloak.env
|
||||||
|
volumes:
|
||||||
|
- ../config/mainnet-eth-keycloak/ui:/config
|
||||||
|
ports:
|
||||||
|
- 80
|
||||||
|
|
||||||
|
keycloak-reg-api:
|
||||||
|
image: cerc/keycloak-reg-api:local
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth-keycloak/keycloak.env
|
||||||
|
ports:
|
||||||
|
- 9292
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mainnet_eth_keycloak_db:
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
version: "3.2"
|
||||||
|
services:
|
||||||
|
prometheus:
|
||||||
|
restart: always
|
||||||
|
image: prom/prometheus
|
||||||
|
depends_on:
|
||||||
|
mainnet-eth-geth-1:
|
||||||
|
condition: service_healthy
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth-metrics/metrics.env
|
||||||
|
volumes:
|
||||||
|
- ../config/mainnet-eth-metrics/prometheus/etc:/etc/prometheus
|
||||||
|
ports:
|
||||||
|
- "9090"
|
||||||
|
grafana:
|
||||||
|
restart: always
|
||||||
|
image: grafana/grafana
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth-metrics/metrics.env
|
||||||
|
volumes:
|
||||||
|
- ../config/mainnet-eth-metrics/grafana/etc/provisioning/dashboards:/etc/grafana/provisioning/dashboards
|
||||||
|
- ../config/mainnet-eth-metrics/grafana/etc/provisioning/datasources:/etc/grafana/provisioning/datasources
|
||||||
|
- ../config/mainnet-eth-metrics/grafana/etc/dashboards:/etc/grafana/dashboards
|
||||||
|
ports:
|
||||||
|
- "3000"
|
||||||
@@ -6,16 +6,13 @@ services:
|
|||||||
hostname: mainnet-eth-geth-1
|
hostname: mainnet-eth-geth-1
|
||||||
cap_add:
|
cap_add:
|
||||||
- SYS_PTRACE
|
- SYS_PTRACE
|
||||||
environment:
|
|
||||||
CERC_REMOTE_DEBUG: "true"
|
|
||||||
CERC_RUN_STATEDIFF: ${CERC_RUN_STATEDIFF:-detect}
|
|
||||||
CERC_STATEDIFF_DB_NODE_ID: 1
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
image: cerc/go-ethereum:local
|
image: cerc/go-ethereum:local
|
||||||
entrypoint: /bin/sh
|
entrypoint: /bin/sh
|
||||||
command: -c "/opt/run-geth.sh"
|
command: -c "/opt/run-geth.sh"
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth/geth.env
|
||||||
volumes:
|
volumes:
|
||||||
- mainnet_eth_geth_1_data:/root/ethdata
|
- mainnet_eth_geth_1_data:/data
|
||||||
- mainnet_eth_config_data:/etc/mainnet-eth
|
- mainnet_eth_config_data:/etc/mainnet-eth
|
||||||
- ../config/mainnet-eth/scripts/run-geth.sh:/opt/run-geth.sh
|
- ../config/mainnet-eth/scripts/run-geth.sh:/opt/run-geth.sh
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -25,30 +22,48 @@ services:
|
|||||||
retries: 10
|
retries: 10
|
||||||
start_period: 3s
|
start_period: 3s
|
||||||
ports:
|
ports:
|
||||||
|
# http api
|
||||||
- "8545"
|
- "8545"
|
||||||
|
# ws api
|
||||||
|
- "8546"
|
||||||
|
# ws el
|
||||||
|
- "8551"
|
||||||
|
# p2p
|
||||||
|
- "30303"
|
||||||
|
- "30303/udp"
|
||||||
|
# debugging
|
||||||
- "40000"
|
- "40000"
|
||||||
|
# metrics
|
||||||
- "6060"
|
- "6060"
|
||||||
|
|
||||||
mainnet-eth-lighthouse-1:
|
mainnet-eth-lighthouse-1:
|
||||||
restart: always
|
restart: always
|
||||||
hostname: mainnet-eth-lighthouse-1
|
hostname: mainnet-eth-lighthouse-1
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8001/eth/v2/beacon/blocks/head"]
|
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:5052/eth/v2/beacon/blocks/head"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 10
|
retries: 10
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
environment:
|
environment:
|
||||||
EXECUTION_ENDPOINT: "http://mainnet-eth-geth-1:8551"
|
LIGHTHOUSE_EXECUTION_ENDPOINT: "http://mainnet-eth-geth-1:8551"
|
||||||
|
env_file:
|
||||||
|
- ../config/mainnet-eth/lighthouse.env
|
||||||
image: cerc/lighthouse:local
|
image: cerc/lighthouse:local
|
||||||
entrypoint: /bin/sh
|
entrypoint: /bin/sh
|
||||||
command: -c "/opt/run-lighthouse.sh"
|
command: -c "/opt/run-lighthouse.sh"
|
||||||
volumes:
|
volumes:
|
||||||
- mainnet_eth_lighthouse_1_data:/var/lighthouse-data-dir
|
- mainnet_eth_lighthouse_1_data:/data
|
||||||
- mainnet_eth_config_data:/etc/mainnet-eth
|
- mainnet_eth_config_data:/etc/mainnet-eth
|
||||||
- ../config/mainnet-eth/scripts/run-lighthouse.sh:/opt/run-lighthouse.sh
|
- ../config/mainnet-eth/scripts/run-lighthouse.sh:/opt/run-lighthouse.sh
|
||||||
ports:
|
ports:
|
||||||
- "8001"
|
# api
|
||||||
|
- "5052"
|
||||||
|
# metrics
|
||||||
|
- "5054"
|
||||||
|
# p2p
|
||||||
|
- "9000"
|
||||||
|
- "9000/udp"
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mainnet_eth_config_data:
|
mainnet_eth_config_data:
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ services:
|
|||||||
- "6060"
|
- "6060"
|
||||||
- "26657"
|
- "26657"
|
||||||
- "26656"
|
- "26656"
|
||||||
- "9473:9473"
|
- "9473"
|
||||||
- "8545"
|
- "8545"
|
||||||
- "8546"
|
- "8546"
|
||||||
- "9090"
|
- "9090"
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
version: '3.2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Builds and serves the MobyMask v3 react-app
|
||||||
|
mobymask-v3-app:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: cerc/mobymask-ui:local
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-mobymask-v3/mobymask-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_CHAIN_ID: ${CERC_CHAIN_ID}
|
||||||
|
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
||||||
|
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
||||||
|
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
||||||
|
CERC_PUBSUB: ${CERC_PUBSUB}
|
||||||
|
CERC_GOSSIPSUB_DIRECT_PEERS: ${CERC_GOSSIPSUB_DIRECT_PEERS}
|
||||||
|
CERC_RELEASE: "laconic-v3"
|
||||||
|
CERC_NA_ADDRESS: ${CERC_NA_ADDRESS}
|
||||||
|
CERC_VPA_ADDRESS: ${CERC_VPA_ADDRESS}
|
||||||
|
CERC_CA_ADDRESS: ${CERC_CA_ADDRESS}
|
||||||
|
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
|
||||||
|
CERC_PAYMENT_NITRO_ADDRESS: ${CERC_PAYMENT_NITRO_ADDRESS}
|
||||||
|
CERC_SNAP_URL: ${CERC_SNAP_URL}
|
||||||
|
working_dir: /scripts
|
||||||
|
command: ["sh", "mobymask-app-start.sh"]
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-mobymask-v3/mobymask-app-start.sh:/scripts/mobymask-app-start.sh
|
||||||
|
- ../config/watcher-mobymask-v2/mobymask-app-config.json:/app/src/mobymask-app-config.json
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:3004:80"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-vz", "localhost", "80"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 10s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
@@ -14,7 +14,8 @@ services:
|
|||||||
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
|
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
|
||||||
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
||||||
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
||||||
CERC_RELEASE: "v0.1.5"
|
CERC_PUBSUB: ${CERC_PUBSUB}
|
||||||
|
CERC_RELEASE: "v0.1.7"
|
||||||
CERC_USE_NPM: true
|
CERC_USE_NPM: true
|
||||||
CERC_CONFIG_FILE: "src/config.json"
|
CERC_CONFIG_FILE: "src/config.json"
|
||||||
working_dir: /scripts
|
working_dir: /scripts
|
||||||
@@ -48,7 +49,8 @@ services:
|
|||||||
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
|
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
|
||||||
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
||||||
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
||||||
CERC_RELEASE: "v0.1.5-lxdao-0.1.1"
|
CERC_PUBSUB: ${CERC_PUBSUB}
|
||||||
|
CERC_RELEASE: "v0.1.7-lxdao-0.1.1"
|
||||||
CERC_USE_NPM: false
|
CERC_USE_NPM: false
|
||||||
CERC_CONFIG_FILE: "src/utils/config.json"
|
CERC_CONFIG_FILE: "src/utils/config.json"
|
||||||
working_dir: /scripts
|
working_dir: /scripts
|
||||||
|
|||||||
@@ -10,17 +10,12 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
- APP=v3
|
- APP=v3
|
||||||
- NETWORK=lotus-fixturenet
|
- NETWORK=filecoin
|
||||||
command: ["bash", "-c", "./run-v3.sh"]
|
command: ["bash", "-c", "./blocks/run-blocks.sh && ./v3/run-v3.sh"]
|
||||||
working_dir: /app/subgraphs/v3
|
working_dir: /app/subgraphs
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/sushiswap-subgraph-v3/lotus-fixturenet.js.template:/app/config/lotus-fixturenet.js.template
|
- ../config/sushiswap-subgraph-v3/filecoin.js:/app/config/filecoin.js
|
||||||
|
- ../config/sushiswap-subgraph-v3/run-blocks.sh:/app/subgraphs/blocks/run-blocks.sh
|
||||||
- ../config/sushiswap-subgraph-v3/run-v3.sh:/app/subgraphs/v3/run-v3.sh
|
- ../config/sushiswap-subgraph-v3/run-v3.sh:/app/subgraphs/v3/run-v3.sh
|
||||||
- sushiswap_core_deployment:/app/subgraphs/v3/core-deployments/docker
|
|
||||||
- sushiswap_periphery_deployment:/app/subgraphs/v3/deployments/docker
|
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
volumes:
|
|
||||||
sushiswap_core_deployment:
|
|
||||||
sushiswap_periphery_deployment:
|
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ services:
|
|||||||
CERC_PRIVATE_KEY_PEER: ${CERC_PRIVATE_KEY_PEER}
|
CERC_PRIVATE_KEY_PEER: ${CERC_PRIVATE_KEY_PEER}
|
||||||
CERC_RELAY_PEERS: ${CERC_RELAY_PEERS}
|
CERC_RELAY_PEERS: ${CERC_RELAY_PEERS}
|
||||||
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
||||||
|
CERC_PUBSUB: ${CERC_PUBSUB}
|
||||||
CERC_RELAY_ANNOUNCE_DOMAIN: ${CERC_RELAY_ANNOUNCE_DOMAIN}
|
CERC_RELAY_ANNOUNCE_DOMAIN: ${CERC_RELAY_ANNOUNCE_DOMAIN}
|
||||||
CERC_ENABLE_PEER_L2_TXS: ${CERC_ENABLE_PEER_L2_TXS}
|
CERC_ENABLE_PEER_L2_TXS: ${CERC_ENABLE_PEER_L2_TXS}
|
||||||
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
||||||
|
|||||||
@@ -0,0 +1,128 @@
|
|||||||
|
version: '3.2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Starts the PostgreSQL database for watcher
|
||||||
|
mobymask-watcher-db:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: postgres:14-alpine
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=vdbm
|
||||||
|
- POSTGRES_MULTIPLE_DATABASES=mobymask-watcher,mobymask-watcher-job-queue
|
||||||
|
- POSTGRES_EXTENSION=mobymask-watcher-job-queue:pgcrypto
|
||||||
|
- POSTGRES_PASSWORD=password
|
||||||
|
volumes:
|
||||||
|
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
||||||
|
- mobymask_watcher_db_data:/var/lib/postgresql/data
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:15432:5432"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 10s
|
||||||
|
|
||||||
|
# Deploys the MobyMask contract and generates an invite link
|
||||||
|
# Deployment is skipped if CERC_DEPLOYED_CONTRACT env is set
|
||||||
|
mobymask:
|
||||||
|
image: cerc/mobymask:local
|
||||||
|
working_dir: /app/packages/server
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-mobymask-v3/mobymask-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
ENV: "PROD"
|
||||||
|
CERC_L2_GETH_RPC: ${CERC_L2_GETH_RPC}
|
||||||
|
CERC_L1_ACCOUNTS_CSV_URL: ${CERC_L1_ACCOUNTS_CSV_URL}
|
||||||
|
CERC_PRIVATE_KEY_DEPLOYER: ${CERC_PRIVATE_KEY_DEPLOYER}
|
||||||
|
CERC_MOBYMASK_APP_BASE_URI: ${CERC_MOBYMASK_APP_BASE_URI}
|
||||||
|
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
||||||
|
CERC_L2_GETH_HOST: ${CERC_L2_GETH_HOST}
|
||||||
|
CERC_L2_GETH_PORT: ${CERC_L2_GETH_PORT}
|
||||||
|
CERC_L2_NODE_HOST: ${CERC_L2_NODE_HOST}
|
||||||
|
CERC_L2_NODE_PORT: ${CERC_L2_NODE_PORT}
|
||||||
|
command: ["sh", "deploy-and-generate-invite.sh"]
|
||||||
|
volumes:
|
||||||
|
- ../config/network/wait-for-it.sh:/app/packages/server/wait-for-it.sh
|
||||||
|
- ../config/watcher-mobymask-v2/secrets-template.json:/app/packages/server/secrets-template.json
|
||||||
|
- ../config/watcher-mobymask-v2/deploy-and-generate-invite.sh:/app/packages/server/deploy-and-generate-invite.sh
|
||||||
|
- mobymask_deployment:/app/packages/server
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
# Creates peer-id files if they don't exist
|
||||||
|
peer-ids-gen:
|
||||||
|
image: cerc/watcher-ts:local
|
||||||
|
restart: on-failure
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
working_dir: /app/packages/peer
|
||||||
|
command: ["sh", "generate-peer-ids.sh"]
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-mobymask-v2/generate-peer-ids.sh:/app/packages/peer/generate-peer-ids.sh
|
||||||
|
- peers_ids:/peer-ids
|
||||||
|
|
||||||
|
# Optionally deploys the Nitro contracts; sets them at the required path
|
||||||
|
# Starts the MobyMask v3 watcher server
|
||||||
|
mobymask-watcher-server:
|
||||||
|
image: cerc/watcher-mobymask-v3:local
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
mobymask-watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
peer-ids-gen:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
mobymask:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
env_file:
|
||||||
|
- ../config/watcher-mobymask-v3/mobymask-params.env
|
||||||
|
environment:
|
||||||
|
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
||||||
|
CERC_L2_GETH_RPC: ${CERC_L2_GETH_RPC}
|
||||||
|
CERC_L1_ACCOUNTS_CSV_URL: ${CERC_L1_ACCOUNTS_CSV_URL}
|
||||||
|
CERC_PRIVATE_KEY_DEPLOYER: ${CERC_PRIVATE_KEY_DEPLOYER}
|
||||||
|
CERC_RELAY_PEERS: ${CERC_RELAY_PEERS}
|
||||||
|
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
||||||
|
CERC_PUBSUB: ${CERC_PUBSUB}
|
||||||
|
CERC_RELAY_ANNOUNCE_DOMAIN: ${CERC_RELAY_ANNOUNCE_DOMAIN}
|
||||||
|
CERC_ENABLE_PEER_L2_TXS: ${CERC_ENABLE_PEER_L2_TXS}
|
||||||
|
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
||||||
|
CERC_NA_ADDRESS: ${CERC_NA_ADDRESS}
|
||||||
|
CERC_VPA_ADDRESS: ${CERC_VPA_ADDRESS}
|
||||||
|
CERC_CA_ADDRESS: ${CERC_CA_ADDRESS}
|
||||||
|
CERC_PRIVATE_KEY_PEER: ${CERC_PRIVATE_KEY_PEER}
|
||||||
|
CERC_PRIVATE_KEY_NITRO: ${CERC_PRIVATE_KEY_NITRO}
|
||||||
|
CERC_PEER_ID: ${CERC_PEER_ID}
|
||||||
|
entrypoint: ["bash", "-c"]
|
||||||
|
command: ["./deploy-nitro-contracts.sh && ./start-server.sh"]
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-mobymask-v3/deploy-nitro-contracts.sh:/app/deploy-nitro-contracts.sh
|
||||||
|
- ../config/watcher-mobymask-v3/deploy-nitro-contracts.ts:/app/deploy-nitro-contracts.ts
|
||||||
|
- ../config/watcher-mobymask-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
||||||
|
- ../config/watcher-mobymask-v3/watcher-config-rates.toml:/app/environments/rates.toml
|
||||||
|
- ../config/watcher-mobymask-v3/keys:/app/keys
|
||||||
|
- ../config/watcher-mobymask-v3/start-server.sh:/app/start-server.sh
|
||||||
|
- nitro_data:/app/out/nitro-db
|
||||||
|
- peers_ids:/app/peers
|
||||||
|
- nitro_addresses:/nitro
|
||||||
|
- mobymask_deployment:/server
|
||||||
|
# Expose GQL, metrics and relay node ports
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:3001:3001"
|
||||||
|
- "127.0.0.1:9001:9001"
|
||||||
|
- "127.0.0.1:9090:9090"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "busybox", "nc", "localhost", "9090"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mobymask_watcher_db_data:
|
||||||
|
peers_ids:
|
||||||
|
mobymask_deployment:
|
||||||
|
nitro_addresses:
|
||||||
|
nitro_data:
|
||||||
@@ -24,15 +24,37 @@ services:
|
|||||||
retries: 15
|
retries: 15
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
|
|
||||||
mobymask-watcher-server:
|
mobymask-watcher-job-runner:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
mobymask-watcher-db:
|
mobymask-watcher-db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
image: cerc/watcher-mobymask:local
|
image: cerc/watcher-mobymask:local
|
||||||
|
command: ["sh", "-c", "yarn job-runner"]
|
||||||
|
volumes:
|
||||||
|
- ../config/watcher-mobymask/mobymask-watcher.toml:/app/environments/local.toml
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:9000:9000"
|
||||||
|
extra_hosts:
|
||||||
|
- "ipld-eth-server:host-gateway"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-v", "localhost", "9000"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 5s
|
||||||
|
|
||||||
|
mobymask-watcher-server:
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
mobymask-watcher-db:
|
||||||
|
condition: service_healthy
|
||||||
|
mobymask-watcher-job-runner:
|
||||||
|
condition: service_healthy
|
||||||
|
image: cerc/watcher-mobymask:local
|
||||||
command: ["sh", "-c", "yarn server"]
|
command: ["sh", "-c", "yarn server"]
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/watcher-mobymask/mobymask-watcher.toml:/app/packages/mobymask-watcher/environments/local.toml
|
- ../config/watcher-mobymask/mobymask-watcher.toml:/app/environments/local.toml
|
||||||
ports:
|
ports:
|
||||||
- "0.0.0.0:3001:3001"
|
- "0.0.0.0:3001:3001"
|
||||||
- "0.0.0.0:9001:9001"
|
- "0.0.0.0:9001:9001"
|
||||||
@@ -45,21 +67,5 @@ services:
|
|||||||
retries: 15
|
retries: 15
|
||||||
start_period: 5s
|
start_period: 5s
|
||||||
|
|
||||||
mobymask-watcher-job-runner:
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
mobymask-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
mobymask-watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
image: cerc/watcher-mobymask:local
|
|
||||||
command: ["sh", "-c", "yarn job-runner"]
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-mobymask/mobymask-watcher.toml:/app/packages/mobymask-watcher/environments/local.toml
|
|
||||||
ports:
|
|
||||||
- "0.0.0.0:9000:9000"
|
|
||||||
extra_hosts:
|
|
||||||
- "ipld-eth-server:host-gateway"
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mobymask_watcher_db_data:
|
mobymask_watcher_db_data:
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ if [ ! -f /root/data/localnet.json ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# start daemon
|
# start daemon
|
||||||
# /root/.lotus-shared/devgen.car path
|
|
||||||
nohup lotus daemon --lotus-make-genesis=/root/.lotus-shared/devgen.car --profile=bootstrapper --genesis-template=/root/data/localnet.json --bootstrap=false > /var/log/lotus.log 2>&1 &
|
nohup lotus daemon --lotus-make-genesis=/root/.lotus-shared/devgen.car --profile=bootstrapper --genesis-template=/root/data/localnet.json --bootstrap=false > /var/log/lotus.log 2>&1 &
|
||||||
|
|
||||||
# Loop until the daemon is started
|
# Loop until the daemon is started
|
||||||
@@ -33,9 +32,6 @@ while ! grep -q "started ChainNotify channel" /var/log/lotus.log ; do
|
|||||||
done
|
done
|
||||||
echo "Daemon started."
|
echo "Daemon started."
|
||||||
|
|
||||||
# copy genesis file to shared volume
|
|
||||||
cp /devgen.car /root/.lotus-shared
|
|
||||||
|
|
||||||
# if miner not already initialized
|
# if miner not already initialized
|
||||||
if [ ! -d $LOTUS_MINER_PATH ]; then
|
if [ ! -d $LOTUS_MINER_PATH ]; then
|
||||||
# initialize miner
|
# initialize miner
|
||||||
@@ -44,6 +40,7 @@ if [ ! -d $LOTUS_MINER_PATH ]; then
|
|||||||
# fund a known account for usage
|
# fund a known account for usage
|
||||||
/fund-account.sh
|
/fund-account.sh
|
||||||
|
|
||||||
|
echo "Initializing miner..."
|
||||||
lotus-miner init --genesis-miner --actor=t01000 --sector-size=2KiB --pre-sealed-sectors=/root/data/.genesis-sectors --pre-sealed-metadata=/root/data/.genesis-sectors/pre-seal-t01000.json --nosync
|
lotus-miner init --genesis-miner --actor=t01000 --sector-size=2KiB --pre-sealed-sectors=/root/data/.genesis-sectors --pre-sealed-metadata=/root/data/.genesis-sectors/pre-seal-t01000.json --nosync
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -1,5 +1,9 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
network: 'lotus-fixturenet',
|
network: 'lotus-fixturenet',
|
||||||
|
blocks: {
|
||||||
|
address: '0x0000000000000000000000000000000000000000',
|
||||||
|
startBlock: 0,
|
||||||
|
},
|
||||||
v3: {
|
v3: {
|
||||||
factory: {
|
factory: {
|
||||||
address: 'FACTORY_ADDRESS',
|
address: 'FACTORY_ADDRESS',
|
||||||
@@ -13,8 +17,8 @@ module.exports = {
|
|||||||
whitelistedTokenAddresses: [
|
whitelistedTokenAddresses: [
|
||||||
'NATIVE_ADDRESS',
|
'NATIVE_ADDRESS',
|
||||||
],
|
],
|
||||||
stableTokenAddresses: [
|
stableTokenAddresses: [],
|
||||||
],
|
nativePricePool: '0x0000000000000000000000000000000000000000',
|
||||||
minimumEthLocked: 1.5
|
minimumEthLocked: 1.5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Building blocks subgraph and deploying to graph-node..."
|
||||||
|
|
||||||
|
cd blocks
|
||||||
|
|
||||||
|
pnpm run generate
|
||||||
|
pnpm run build
|
||||||
|
|
||||||
|
pnpm exec graph create --node http://graph-node:8020/ sushiswap/blocks
|
||||||
|
pnpm exec graph deploy --node http://graph-node:8020/ --ipfs http://ipfs:5001 --version-label 0.1.0 sushiswap/blocks
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd v3
|
||||||
|
|
||||||
|
# Loop until the NFPM deployment is detected
|
||||||
|
echo "Waiting for sushiswap-periphery deployments to occur"
|
||||||
|
while [ ! -f ./periphery-deployments/docker/NonfungiblePositionManager.json ]; do
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Reading contract addresses and block numbers from deployments"
|
||||||
|
FACTORY_ADDRESS=$(jq -r '.address' ./core-deployments/docker/UniswapV3Factory.json)
|
||||||
|
FACTORY_BLOCK=$(jq -r '.receipt.blockNumber' ./core-deployments/docker/UniswapV3Factory.json)
|
||||||
|
NATIVE_ADDRESS=$(jq -r '.address' ./periphery-deployments/docker/WFIL.json)
|
||||||
|
NFPM_ADDRESS=$(jq -r '.address' ./periphery-deployments/docker/NonfungiblePositionManager.json)
|
||||||
|
NFPM_BLOCK=$(jq -r '.receipt.blockNumber' ./periphery-deployments/docker/NonfungiblePositionManager.json)
|
||||||
|
|
||||||
|
# Read the JavaScript file content
|
||||||
|
file_content=$(</app/config/lotus-fixturenet.js.template)
|
||||||
|
|
||||||
|
# Replace uppercase words with environment variables
|
||||||
|
echo "Reading values in lotus-fixturenet config"
|
||||||
|
replaced_content=$(echo "$file_content" | sed -e "s/FACTORY_ADDRESS/$FACTORY_ADDRESS/g" \
|
||||||
|
-e "s/FACTORY_BLOCK/$FACTORY_BLOCK/g" \
|
||||||
|
-e "s/NFPM_ADDRESS/$NFPM_ADDRESS/g" \
|
||||||
|
-e "s/NFPM_BLOCK/$NFPM_BLOCK/g" \
|
||||||
|
-e "s/NATIVE_ADDRESS/$NATIVE_ADDRESS/g")
|
||||||
|
|
||||||
|
# Write the replaced content back to the JavaScript file
|
||||||
|
echo "$replaced_content" > /app/config/lotus-fixturenet.js
|
||||||
|
|
||||||
|
echo "Building v3 subgraph and deploying to graph-node..."
|
||||||
|
|
||||||
|
pnpm run generate
|
||||||
|
pnpm run build
|
||||||
|
|
||||||
|
pnpm exec graph create --node http://graph-node:8020/ sushiswap/v3-lotus
|
||||||
|
pnpm exec graph deploy --node http://graph-node:8020/ --ipfs http://ipfs:5001 --version-label 0.1.0 sushiswap/v3-lotus
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
CERC_ETHPXY_LISTEN_PORT=8547
|
||||||
|
CERC_ETHPXY_LISTEN_ADDR='0.0.0.0'
|
||||||
|
CERC_ETHPXY_REDIS_URL='redis://mainnet-eth-api-proxy-redis:6379'
|
||||||
|
CERC_ETHPXY_REDIS_MAX_AGE=120000
|
||||||
|
CERC_ETHPXY_GETH_WS_URL='ws://mainnet-eth-geth-1:8546'
|
||||||
|
CERC_ETHPXY_GETH_HTTP_URL='http://mainnet-eth-geth-1:8545'
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
|||||||
|
POSTGRES_DB=keycloak
|
||||||
|
POSTGRES_USER=keycloak
|
||||||
|
POSTGRES_PASSWORD=keycloak
|
||||||
|
KC_DB=postgres
|
||||||
|
KC_DB_URL_HOST=keycloak-db
|
||||||
|
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
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name my.example.com;
|
||||||
|
|
||||||
|
# See: https://github.com/acmesh-official/acme.sh/wiki/Stateless-Mode
|
||||||
|
# and https://datatracker.ietf.org/doc/html/rfc8555
|
||||||
|
location ~ ^/\.well-known/acme-challenge/([-_a-zA-Z0-9]+)$ {
|
||||||
|
default_type text/plain;
|
||||||
|
return 200 "$1.MY_ACCOUNT_THUMBPRINT_GOES_HERE";
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
upstream geth-pool {
|
||||||
|
keepalive 100;
|
||||||
|
hash $user_id consistent;
|
||||||
|
server server-a:8545;
|
||||||
|
server server-b:8545;
|
||||||
|
server server-c:8545;
|
||||||
|
}
|
||||||
|
|
||||||
|
# self-reg happens on one server for clarity
|
||||||
|
upstream reg-ui-pool {
|
||||||
|
keepalive 100;
|
||||||
|
server server-a:8085;
|
||||||
|
}
|
||||||
|
|
||||||
|
upstream reg-api-pool {
|
||||||
|
keepalive 100;
|
||||||
|
server server-a:8086;
|
||||||
|
}
|
||||||
|
|
||||||
|
# auth uses server-a if available
|
||||||
|
upstream auth-pool {
|
||||||
|
keepalive 100;
|
||||||
|
server server-a:8080;
|
||||||
|
server server-b:8080 backup;
|
||||||
|
server server-c:8080 backup;
|
||||||
|
}
|
||||||
|
|
||||||
|
log_format upstreamlog '[$time_local] $remote_addr $user_id - $server_name $host to: $upstream_addr: $request $status upstream_response_time $upstream_response_time msec $msec request_time $request_time';
|
||||||
|
proxy_cache_path /var/cache/nginx/auth_cache levels=1 keys_zone=auth_cache:1m max_size=5m inactive=60m;
|
||||||
|
server {
|
||||||
|
listen 443 ssl http2;
|
||||||
|
server_name my.example.com;
|
||||||
|
access_log /var/log/nginx/my.example.com-access.log upstreamlog;
|
||||||
|
error_log /var/log/nginx/my.example.com-error.log;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/my.example.com/cert.pem;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/my.example.com/key.pem;
|
||||||
|
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
#rewrite ^/?$ /newuser/;
|
||||||
|
rewrite ^/?$ https://www.example.com/;
|
||||||
|
|
||||||
|
|
||||||
|
# geth-pool ETH API
|
||||||
|
location ~ ^/v1/eth/?([^/]*)$ {
|
||||||
|
set $apiKey $1;
|
||||||
|
if ($apiKey = '') {
|
||||||
|
set $apiKey $http_X_API_KEY;
|
||||||
|
}
|
||||||
|
auth_request /auth;
|
||||||
|
auth_request_set $user_id $sent_http_x_user_id;
|
||||||
|
rewrite /.*$ / break;
|
||||||
|
|
||||||
|
client_max_body_size 3m;
|
||||||
|
client_body_buffer_size 3m;
|
||||||
|
proxy_buffer_size 32k;
|
||||||
|
proxy_buffers 16 32k;
|
||||||
|
proxy_busy_buffers_size 96k;
|
||||||
|
|
||||||
|
proxy_pass http://geth-pool;
|
||||||
|
proxy_set_header X-Original-Remote-Addr $remote_addr;
|
||||||
|
proxy_set_header X-User-Id $user_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
# keycloak
|
||||||
|
location = /auth {
|
||||||
|
internal;
|
||||||
|
proxy_cache auth_cache;
|
||||||
|
proxy_cache_key "$apiKey";
|
||||||
|
proxy_cache_valid 200 300s;
|
||||||
|
proxy_cache_valid 401 30s;
|
||||||
|
proxy_pass http://auth-pool/auth/realms/cerc/check?memberOf=eth&apiKey=$apiKey;
|
||||||
|
proxy_pass_request_body off;
|
||||||
|
proxy_set_header Content-Length "";
|
||||||
|
proxy_set_header X-Original-URI $request_uri;
|
||||||
|
proxy_set_header X-Original-Remote-Addr $remote_addr;
|
||||||
|
proxy_set_header X-Original-Host $host;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /newuser/ {
|
||||||
|
proxy_pass http://reg-ui-pool/;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /user-api/ {
|
||||||
|
proxy_pass http://reg-api-pool/;
|
||||||
|
}
|
||||||
|
}
|
||||||
+139
@@ -0,0 +1,139 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import psycopg
|
||||||
|
import random
|
||||||
|
|
||||||
|
from subprocess import Popen
|
||||||
|
from fabric import Connection
|
||||||
|
|
||||||
|
|
||||||
|
def dump_src_db_to_file(db_host, db_port, db_user, db_password, db_name, file_name):
|
||||||
|
command = f"pg_dump -h {db_host} -p {db_port} -U {db_user} -d {db_name} -c --inserts -f {file_name}"
|
||||||
|
my_env = os.environ.copy()
|
||||||
|
my_env["PGPASSWORD"] = db_password
|
||||||
|
print(f"Exporting from {db_host}:{db_port}/{db_name} to {file_name}... ", end="")
|
||||||
|
ret = Popen(command, shell=True, env=my_env).wait()
|
||||||
|
print("DONE")
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def establish_ssh_tunnel(ssh_host, ssh_port, ssh_user, db_host, db_port):
|
||||||
|
local_port = random.randint(11000, 12000)
|
||||||
|
conn = Connection(host=ssh_host, port=ssh_port, user=ssh_user)
|
||||||
|
fw = conn.forward_local(
|
||||||
|
local_port=local_port, remote_port=db_port, remote_host=db_host
|
||||||
|
)
|
||||||
|
return conn, fw, local_port
|
||||||
|
|
||||||
|
|
||||||
|
def load_db_from_file(db_host, db_port, db_user, db_password, db_name, file_name):
|
||||||
|
connstr = "host=%s port=%s user=%s password=%s sslmode=disable dbname=%s" % (
|
||||||
|
db_host,
|
||||||
|
db_port,
|
||||||
|
db_user,
|
||||||
|
db_password,
|
||||||
|
db_name,
|
||||||
|
)
|
||||||
|
with psycopg.connect(connstr) as conn:
|
||||||
|
with conn.cursor() as cur:
|
||||||
|
print(
|
||||||
|
f"Importing from {file_name} to {db_host}:{db_port}/{db_name}... ",
|
||||||
|
end="",
|
||||||
|
)
|
||||||
|
cur.execute(open(file_name, "rt").read())
|
||||||
|
print("DONE")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
parser.add_argument("--src-dbhost", help="DB hostname", default="localhost")
|
||||||
|
parser.add_argument("--src-dbport", help="DB port", default=5432, type=int)
|
||||||
|
parser.add_argument("--src-dbuser", help="DB username", default="keycloak")
|
||||||
|
parser.add_argument("--src-dbpw", help="DB password", required=True)
|
||||||
|
parser.add_argument("--src-dbname", help="dbname", default="keycloak")
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--dst-file", help="Destination filename", default="keycloak-mirror.sql"
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument("--live-import", help="run the import", action="store_true")
|
||||||
|
|
||||||
|
parser.add_argument("--dst-dbhost", help="DB hostname", default="localhost")
|
||||||
|
parser.add_argument("--dst-dbport", help="DB port", default=5432, type=int)
|
||||||
|
parser.add_argument("--dst-dbuser", help="DB username", default="keycloak")
|
||||||
|
parser.add_argument("--dst-dbpw", help="DB password")
|
||||||
|
parser.add_argument("--dst-dbname", help="dbname", default="keycloak")
|
||||||
|
|
||||||
|
parser.add_argument("--ssh-host", help="SSH hostname")
|
||||||
|
parser.add_argument("--ssh-port", help="SSH port", default=22, type=int)
|
||||||
|
parser.add_argument("--ssh-user", help="SSH user")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.live_import and not args.dst_dbpw:
|
||||||
|
print("--dst-dbpw is required if importing", file=sys.stderr)
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
remove_sql_file = False
|
||||||
|
if args.dst_dbhost and not args.dst_file:
|
||||||
|
remove_sql_file = True
|
||||||
|
|
||||||
|
dst_file = args.dst_file
|
||||||
|
if not dst_file:
|
||||||
|
dst_file = "keycloak-mirror.sql"
|
||||||
|
|
||||||
|
dump_src_db_to_file(
|
||||||
|
args.src_dbhost,
|
||||||
|
args.src_dbport,
|
||||||
|
args.src_dbuser,
|
||||||
|
args.src_dbpw,
|
||||||
|
args.src_dbname,
|
||||||
|
dst_file,
|
||||||
|
)
|
||||||
|
|
||||||
|
if args.live_import:
|
||||||
|
try:
|
||||||
|
if args.ssh_host:
|
||||||
|
dst_dbport = random.randint(11000, 12000)
|
||||||
|
print(
|
||||||
|
f"Establishing SSH tunnel from 127.0.0.1:{dst_dbport} to "
|
||||||
|
"{args.ssh_host}->{args.dst_dbhost}:{args.dst_dbport}... ",
|
||||||
|
end="",
|
||||||
|
)
|
||||||
|
with Connection(
|
||||||
|
host=args.ssh_host, port=args.ssh_port, user=args.ssh_user
|
||||||
|
).forward_local(
|
||||||
|
local_port=dst_dbport,
|
||||||
|
remote_port=args.dst_dbport,
|
||||||
|
remote_host=args.dst_dbhost,
|
||||||
|
):
|
||||||
|
print("DONE")
|
||||||
|
|
||||||
|
load_db_from_file(
|
||||||
|
args.dst_dbhost,
|
||||||
|
args.dst_dbport,
|
||||||
|
args.dst_dbuser,
|
||||||
|
args.dst_dbpw,
|
||||||
|
args.dst_dbname,
|
||||||
|
dst_file,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
load_db_from_file(
|
||||||
|
args.dst_dbhost,
|
||||||
|
args.dst_dbport,
|
||||||
|
args.dst_dbuser,
|
||||||
|
args.dst_dbpw,
|
||||||
|
args.dst_dbname,
|
||||||
|
dst_file,
|
||||||
|
)
|
||||||
|
|
||||||
|
finally:
|
||||||
|
if args.live_import:
|
||||||
|
print(f"Removing {dst_file}... ", end="")
|
||||||
|
os.remove(dst_file)
|
||||||
|
print("DONE")
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fabric
|
||||||
|
psycopg~=3.1.8
|
||||||
|
psycopg_binary
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
web:
|
||||||
|
path: ''
|
||||||
|
api:
|
||||||
|
url: 'http://keycloak-reg-api:9292'
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
providers:
|
||||||
|
- name: dashboards
|
||||||
|
type: file
|
||||||
|
updateIntervalSeconds: 10
|
||||||
|
options:
|
||||||
|
path: /etc/grafana/dashboards
|
||||||
|
foldersFromFilesStructure: true
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
datasources:
|
||||||
|
- id: 1
|
||||||
|
uid: jZUuGao4k
|
||||||
|
orgId: 1
|
||||||
|
name: Prometheus
|
||||||
|
type: prometheus
|
||||||
|
typeName: Prometheus
|
||||||
|
typeLogoUrl: public/app/plugins/datasource/prometheus/img/prometheus_logo.svg
|
||||||
|
access: proxy
|
||||||
|
url: http://prometheus:9090
|
||||||
|
user: ""
|
||||||
|
database: ""
|
||||||
|
basicAuth: false
|
||||||
|
isDefault: true
|
||||||
|
jsonData:
|
||||||
|
httpMethod: POST
|
||||||
|
readOnly: false
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# grafana
|
||||||
|
GF_SECURITY_ADMIN_PASSWORD=changeme6325
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
global:
|
||||||
|
scrape_interval: 5s
|
||||||
|
evaluation_interval: 15s
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
# geth
|
||||||
|
- job_name: 'geth'
|
||||||
|
metrics_path: /debug/metrics/prometheus
|
||||||
|
scheme: http
|
||||||
|
static_configs:
|
||||||
|
- targets: ['mainnet-eth-geth-1:6060']
|
||||||
|
|
||||||
|
# lighthouse
|
||||||
|
- job_name: 'lighthouse'
|
||||||
|
metrics_path: /metrics
|
||||||
|
scheme: http
|
||||||
|
static_configs:
|
||||||
|
- targets: ['mainnet-eth-lighthouse-1:5054']
|
||||||
|
|
||||||
|
# keycloak
|
||||||
|
- job_name: 'keycloak'
|
||||||
|
scrape_interval: 5s
|
||||||
|
metrics_path: /auth/realms/cerc/metrics
|
||||||
|
scheme: http
|
||||||
|
static_configs:
|
||||||
|
- targets: ['keycloak:8080']
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
# Enable remote debugging using dlv
|
||||||
|
CERC_REMOTE_DEBUG=false
|
||||||
|
|
||||||
|
# Enable startup script debug output.
|
||||||
|
CERC_SCRIPT_DEBUG=false
|
||||||
|
|
||||||
|
# Simple toggle to choose either a 'full' node or an 'archive' node
|
||||||
|
# (controls the values of --syncmode --gcmode --snapshot)
|
||||||
|
CERC_GETH_MODE_QUICK_SET=full
|
||||||
|
|
||||||
|
# Optional custom node name.
|
||||||
|
# GETH_NODE_NAME=""
|
||||||
|
|
||||||
|
# Specify any other geth CLI options.
|
||||||
|
GETH_OPTS=""
|
||||||
|
|
||||||
|
# --cache
|
||||||
|
GETH_CACHE=1024
|
||||||
|
|
||||||
|
# --cache.database
|
||||||
|
GETH_CACHE_DB=50
|
||||||
|
|
||||||
|
# --cache.gc
|
||||||
|
GETH_CACHE_GC=25
|
||||||
|
|
||||||
|
# --cache.trie
|
||||||
|
GETH_CACHE_TRIE=15
|
||||||
|
j
|
||||||
|
# --datadir
|
||||||
|
GETH_DATADIR="/data"
|
||||||
|
|
||||||
|
# --http.api
|
||||||
|
GETH_HTTP_API="eth,web3,net"
|
||||||
|
|
||||||
|
# --authrpc.jwtsecret
|
||||||
|
GETH_JWTSECRET="/etc/mainnet-eth/jwtsecret"
|
||||||
|
|
||||||
|
# --maxpeers
|
||||||
|
GETH_MAX_PEERS=100
|
||||||
|
|
||||||
|
# --rpc.evmtimeout
|
||||||
|
GETH_RPC_EVMTIMEOUT=0
|
||||||
|
|
||||||
|
# --rpc.gascap
|
||||||
|
GETH_RPC_GASCAP=0
|
||||||
|
|
||||||
|
# --txlookuplimit
|
||||||
|
GETH_TXLOOKUPLIMIT=0
|
||||||
|
|
||||||
|
# --verbosity
|
||||||
|
GETH_VERBOSITY=3
|
||||||
|
|
||||||
|
# --log.vmodule
|
||||||
|
GETH_VMODULE="rpc/*=4"
|
||||||
|
|
||||||
|
# --ws.api
|
||||||
|
GETH_WS_API="eth,web3,net"
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# 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,12 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
|
if [[ "true" == "$CERC_SCRIPT_DEBUG" ]]; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_ETH_DATADIR=/root/ethdata
|
|
||||||
|
|
||||||
START_CMD="geth"
|
START_CMD="geth"
|
||||||
if [ "true" == "$CERC_REMOTE_DEBUG" ] && [ -x "/usr/local/bin/dlv" ]; then
|
if [[ "true" == "$CERC_REMOTE_DEBUG" ]] && [[ -x "/usr/local/bin/dlv" ]]; then
|
||||||
START_CMD="/usr/local/bin/dlv --listen=:40000 --headless=true --api-version=2 --accept-multiclient exec /usr/local/bin/geth --continue --"
|
START_CMD="/usr/local/bin/dlv --listen=:40000 --headless=true --api-version=2 --accept-multiclient exec /usr/local/bin/geth --continue --"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -22,29 +20,44 @@ cleanup() {
|
|||||||
wait
|
wait
|
||||||
echo "Done"
|
echo "Done"
|
||||||
}
|
}
|
||||||
|
|
||||||
trap 'cleanup' SIGINT SIGTERM
|
trap 'cleanup' SIGINT SIGTERM
|
||||||
|
|
||||||
|
MODE_FLAGS=""
|
||||||
|
if [[ "$CERC_GETH_MODE_QUICK_SET" = "archive" ]]; then
|
||||||
|
MODE_FLAGS="--syncmode=${GETH_SYNC_MODE:-full} --gcmode=${GETH_GC_MODE:-archive} --snapshot=${GETH_SNAPSHOT:-false}"
|
||||||
|
else
|
||||||
|
MODE_FLAGS="--syncmode=${GETH_SYNC_MODE:-snap} --gcmode=${GETH_GC_MODE:-full} --snapshot=${GETH_SNAPSHOT:-true}"
|
||||||
|
fi
|
||||||
|
|
||||||
$START_CMD \
|
$START_CMD \
|
||||||
--datadir="${CERC_ETH_DATADIR}" \
|
$MODE_FLAGS \
|
||||||
--authrpc.addr="0.0.0.0" \
|
--datadir="${GETH_DATADIR}"\
|
||||||
--authrpc.port 8551 \
|
--identity="${GETH_NODE_NAME}" \
|
||||||
--authrpc.vhosts="*" \
|
--maxpeers=${GETH_MAX_PEERS} \
|
||||||
--authrpc.jwtsecret="/etc/mainnet-eth/jwtsecret" \
|
--cache=${GETH_CACHE} \
|
||||||
--ws \
|
--cache.gc=${GETH_CACHE_GC} \
|
||||||
--ws.addr="0.0.0.0" \
|
--cache.database=${GETH_CACHE_DB} \
|
||||||
--ws.origins="*" \
|
--cache.trie=${GETH_CACHE_TRIE} \
|
||||||
--ws.api="${CERC_GETH_WS_APIS:-eth,web3,net,admin,personal,debug,statediff}" \
|
--authrpc.addr='0.0.0.0' \
|
||||||
--http.corsdomain="*" \
|
--authrpc.vhosts='*' \
|
||||||
--gcmode full \
|
--authrpc.jwtsecret="${GETH_JWTSECRET}" \
|
||||||
--txlookuplimit=0 \
|
--http \
|
||||||
--cache.preimages \
|
--http.addr='0.0.0.0' \
|
||||||
--syncmode=snap \
|
--http.api="${GETH_HTTP_API}" \
|
||||||
&
|
--http.vhosts='*' \
|
||||||
|
--metrics \
|
||||||
|
--metrics.addr='0.0.0.0' \
|
||||||
|
--ws \
|
||||||
|
--ws.addr='0.0.0.0' \
|
||||||
|
--ws.api="${GETH_WS_API}" \
|
||||||
|
--rpc.gascap=${GETH_RPC_GASCAP} \
|
||||||
|
--rpc.evmtimeout=${GETH_RPC_EVMTIMEOUT} \
|
||||||
|
--txlookuplimit=${GETH_TXLOOKUPLIMIT} \
|
||||||
|
--verbosity=${GETH_VERBOSITY} \
|
||||||
|
--log.vmodule="${GETH_VMODULE}" \
|
||||||
|
${GETH_OPTS} &
|
||||||
|
|
||||||
geth_pid=$!
|
geth_pid=$!
|
||||||
|
|
||||||
|
|
||||||
wait $geth_pid
|
wait $geth_pid
|
||||||
|
|
||||||
if [ "true" == "$CERC_KEEP_RUNNING_AFTER_GETH_EXIT" ]; then
|
if [ "true" == "$CERC_KEEP_RUNNING_AFTER_GETH_EXIT" ]; then
|
||||||
|
|||||||
@@ -1,22 +1,30 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
|
if [[ "true" == "$CERC_SCRIPT_DEBUG" ]]; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DEBUG_LEVEL=${CERC_LIGHTHOUSE_DEBUG_LEVEL:-info}
|
ENR_OPTS=""
|
||||||
|
if [[ -n "$LIGHTHOUSE_ENR_ADDRESS" ]]; then
|
||||||
|
ENR_OPTS="--enr-address $LIGHTHOUSE_ENR_ADDRESS"
|
||||||
|
fi
|
||||||
|
|
||||||
data_dir=/var/lighthouse-data-dir
|
exec lighthouse bn \
|
||||||
|
--checkpoint-sync-url "$LIGHTHOUSE_CHECKPOINT_SYNC_URL" \
|
||||||
network_port=9001
|
--checkpoint-sync-url-timeout ${LIGHTHOUSE_CHECKPOINT_SYNC_URL_TIMEOUT} \
|
||||||
http_port=8001
|
--datadir "$LIGHTHOUSE_DATADIR" \
|
||||||
authrpc_port=8551
|
--debug-level $LIGHTHOUSE_DEBUG_LEVEL \
|
||||||
|
|
||||||
exec lighthouse \
|
|
||||||
bn \
|
|
||||||
--debug-level $DEBUG_LEVEL \
|
|
||||||
--datadir $data_dir \
|
|
||||||
--network mainnet \
|
|
||||||
--execution-endpoint $EXECUTION_ENDPOINT \
|
|
||||||
--execution-jwt /etc/mainnet-eth/jwtsecret \
|
|
||||||
--disable-deposit-contract-sync \
|
--disable-deposit-contract-sync \
|
||||||
--checkpoint-sync-url https://beaconstate.ethstaker.cc
|
--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
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
const NATIVE_ADDRESS = '0x60e1773636cf5e4a227d9ac24f20feca034ee25a'
|
||||||
|
const USDC_ADDRESS = '0xeb466342c4d449bc9f53a865d5cb90586f405215'
|
||||||
|
const DAI_ADDRESS = '0x5c7e299cf531eb66f2a1df637d37abb78e6200c7'
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
network: 'filecoin',
|
||||||
|
blocks: {
|
||||||
|
address: '0x719e14fcb364bb05649bd525eb6c4a2d0d4ea2b7',
|
||||||
|
startBlock: 2867000,
|
||||||
|
},
|
||||||
|
v3: {
|
||||||
|
factory: { // 0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6
|
||||||
|
address: '0xc35dadb65012ec5796536bd9864ed8773abc74c4',
|
||||||
|
startBlock: 2867560,
|
||||||
|
},
|
||||||
|
positionManager: {
|
||||||
|
address: '0xf4d73326c13a4fc5fd7a064217e12780e9bd62c3',
|
||||||
|
startBlock: 2868037,
|
||||||
|
},
|
||||||
|
native: { address: NATIVE_ADDRESS },
|
||||||
|
whitelistedTokenAddresses: [
|
||||||
|
NATIVE_ADDRESS,
|
||||||
|
USDC_ADDRESS,
|
||||||
|
DAI_ADDRESS,
|
||||||
|
],
|
||||||
|
stableTokenAddresses: [USDC_ADDRESS, DAI_ADDRESS],
|
||||||
|
nativePricePool: '0x1d1375281265e4dd496d90455f7c82f4fbd85cc2',
|
||||||
|
minimumEthLocked: 250
|
||||||
|
},
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Building blocks subgraph and deploying to graph-node..."
|
||||||
|
|
||||||
|
cd blocks
|
||||||
|
|
||||||
|
pnpm run generate
|
||||||
|
pnpm run build
|
||||||
|
|
||||||
|
pnpm exec graph create --node http://graph-node:8020/ sushiswap/blocks
|
||||||
|
pnpm exec graph deploy --node http://graph-node:8020/ --ipfs http://ipfs:5001 --version-label 0.1.0 sushiswap/blocks
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
@@ -2,38 +2,14 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Loop until the NFPM deployment is detected
|
echo "Building v3 subgraph and deploying to graph-node..."
|
||||||
echo "Waiting for sushiswap-periphery deployments to occur"
|
|
||||||
while [ ! -f ./deployments/docker/NonfungiblePositionManager.json ]; do
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Reading contract addresses and block numbers from deployments"
|
cd v3
|
||||||
FACTORY_ADDRESS=$(jq -r '.address' ./core-deployments/docker/UniswapV3Factory.json)
|
|
||||||
FACTORY_BLOCK=$(jq -r '.receipt.blockNumber' ./core-deployments/docker/UniswapV3Factory.json)
|
|
||||||
NATIVE_ADDRESS=$(jq -r '.address' ./deployments/docker/WFIL.json)
|
|
||||||
NFPM_ADDRESS=$(jq -r '.address' ./deployments/docker/NonfungiblePositionManager.json)
|
|
||||||
NFPM_BLOCK=$(jq -r '.receipt.blockNumber' ./deployments/docker/NonfungiblePositionManager.json)
|
|
||||||
|
|
||||||
# Read the JavaScript file content
|
|
||||||
file_content=$(</app/config/lotus-fixturenet.js.template)
|
|
||||||
|
|
||||||
# Replace uppercase words with environment variables
|
|
||||||
echo "Reading values in lotus-fixturenet config"
|
|
||||||
replaced_content=$(echo "$file_content" | sed -e "s/FACTORY_ADDRESS/$FACTORY_ADDRESS/g" \
|
|
||||||
-e "s/FACTORY_BLOCK/$FACTORY_BLOCK/g" \
|
|
||||||
-e "s/NFPM_ADDRESS/$NFPM_ADDRESS/g" \
|
|
||||||
-e "s/NFPM_BLOCK/$NFPM_BLOCK/g" \
|
|
||||||
-e "s/NATIVE_ADDRESS/$NATIVE_ADDRESS/g")
|
|
||||||
|
|
||||||
# Write the replaced content back to the JavaScript file
|
|
||||||
echo "$replaced_content" > /app/config/lotus-fixturenet.js
|
|
||||||
|
|
||||||
|
|
||||||
echo "Building subgraph and deploying to graph-node..."
|
|
||||||
pnpm run generate
|
pnpm run generate
|
||||||
pnpm run build
|
pnpm run build
|
||||||
pnpm exec graph create --node http://graph-node:8020/ sushiswap/v3-lotus
|
|
||||||
pnpm exec graph deploy --node http://graph-node:8020/ --ipfs http://ipfs:5001 --version-label 0.1.0 sushiswap/v3-lotus
|
pnpm exec graph create --node http://graph-node:8020/ sushiswap/v3-filecoin
|
||||||
|
pnpm exec graph deploy --node http://graph-node:8020/ --ipfs http://ipfs:5001 --version-label 0.1.0 sushiswap/v3-filecoin
|
||||||
|
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ CERC_CHAIN_ID="${CERC_CHAIN_ID:-${DEFAULT_CERC_CHAIN_ID}}"
|
|||||||
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
||||||
CERC_RELAY_NODES="${CERC_RELAY_NODES:-${DEFAULT_CERC_RELAY_NODES}}"
|
CERC_RELAY_NODES="${CERC_RELAY_NODES:-${DEFAULT_CERC_RELAY_NODES}}"
|
||||||
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
||||||
|
CERC_PUBSUB="${CERC_PUBSUB:-${DEFAULT_CERC_PUBSUB}}"
|
||||||
CERC_APP_WATCHER_URL="${CERC_APP_WATCHER_URL:-${DEFAULT_CERC_APP_WATCHER_URL}}"
|
CERC_APP_WATCHER_URL="${CERC_APP_WATCHER_URL:-${DEFAULT_CERC_APP_WATCHER_URL}}"
|
||||||
|
|
||||||
# If not set (or []), check the mounted volume for relay peer id
|
# If not set (or []), check the mounted volume for relay peer id
|
||||||
@@ -41,7 +42,8 @@ jq --arg address "$CERC_DEPLOYED_CONTRACT" \
|
|||||||
--argjson chainId "$CERC_CHAIN_ID" \
|
--argjson chainId "$CERC_CHAIN_ID" \
|
||||||
--argjson relayNodes "$CERC_RELAY_NODES" \
|
--argjson relayNodes "$CERC_RELAY_NODES" \
|
||||||
--argjson denyMultiaddrs "$CERC_DENY_MULTIADDRS" \
|
--argjson denyMultiaddrs "$CERC_DENY_MULTIADDRS" \
|
||||||
'.address = $address | .chainId = $chainId | .relayNodes = $relayNodes | .peer.denyMultiaddrs = $denyMultiaddrs' \
|
--arg pubsub "$CERC_PUBSUB" \
|
||||||
|
'.address = $address | .chainId = $chainId | .relayNodes = $relayNodes | .peer.denyMultiaddrs = $denyMultiaddrs | .peer.pubsub = $pubsub' \
|
||||||
/app/src/mobymask-app-config.json > /app/${CERC_CONFIG_FILE}
|
/app/src/mobymask-app-config.json > /app/${CERC_CONFIG_FILE}
|
||||||
|
|
||||||
if [ "${CERC_USE_NPM}" = "true" ]; then
|
if [ "${CERC_USE_NPM}" = "true" ]; then
|
||||||
|
|||||||
@@ -27,3 +27,6 @@ DEFAULT_CERC_RELAY_NODES=[]
|
|||||||
|
|
||||||
# Set of multiaddrs to be avoided while dialling
|
# Set of multiaddrs to be avoided while dialling
|
||||||
DEFAULT_CERC_DENY_MULTIADDRS=[]
|
DEFAULT_CERC_DENY_MULTIADDRS=[]
|
||||||
|
|
||||||
|
# Type of pubsub to be used
|
||||||
|
DEFAULT_CERC_PUBSUB=""
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ CERC_L1_ACCOUNTS_CSV_URL="${CERC_L1_ACCOUNTS_CSV_URL:-${DEFAULT_CERC_L1_ACCOUNTS
|
|||||||
|
|
||||||
CERC_RELAY_PEERS="${CERC_RELAY_PEERS:-${DEFAULT_CERC_RELAY_PEERS}}"
|
CERC_RELAY_PEERS="${CERC_RELAY_PEERS:-${DEFAULT_CERC_RELAY_PEERS}}"
|
||||||
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
||||||
|
CERC_PUBSUB="${CERC_PUBSUB:-${DEFAULT_CERC_PUBSUB}}"
|
||||||
CERC_RELAY_ANNOUNCE_DOMAIN="${CERC_RELAY_ANNOUNCE_DOMAIN:-${DEFAULT_CERC_RELAY_ANNOUNCE_DOMAIN}}"
|
CERC_RELAY_ANNOUNCE_DOMAIN="${CERC_RELAY_ANNOUNCE_DOMAIN:-${DEFAULT_CERC_RELAY_ANNOUNCE_DOMAIN}}"
|
||||||
CERC_ENABLE_PEER_L2_TXS="${CERC_ENABLE_PEER_L2_TXS:-${DEFAULT_CERC_ENABLE_PEER_L2_TXS}}"
|
CERC_ENABLE_PEER_L2_TXS="${CERC_ENABLE_PEER_L2_TXS:-${DEFAULT_CERC_ENABLE_PEER_L2_TXS}}"
|
||||||
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
||||||
@@ -50,6 +51,7 @@ WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml)
|
|||||||
WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \
|
WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \
|
||||||
sed -E "s|REPLACE_WITH_CERC_RELAY_PEERS|${CERC_RELAY_PEERS}|g; \
|
sed -E "s|REPLACE_WITH_CERC_RELAY_PEERS|${CERC_RELAY_PEERS}|g; \
|
||||||
s|REPLACE_WITH_CERC_DENY_MULTIADDRS|${CERC_DENY_MULTIADDRS}|g; \
|
s|REPLACE_WITH_CERC_DENY_MULTIADDRS|${CERC_DENY_MULTIADDRS}|g; \
|
||||||
|
s/REPLACE_WITH_CERC_PUBSUB/${CERC_PUBSUB}/g; \
|
||||||
s/REPLACE_WITH_CERC_RELAY_ANNOUNCE_DOMAIN/${CERC_RELAY_ANNOUNCE_DOMAIN}/g; \
|
s/REPLACE_WITH_CERC_RELAY_ANNOUNCE_DOMAIN/${CERC_RELAY_ANNOUNCE_DOMAIN}/g; \
|
||||||
s|REPLACE_WITH_CERC_RELAY_MULTIADDR|${CERC_RELAY_MULTIADDR}|g; \
|
s|REPLACE_WITH_CERC_RELAY_MULTIADDR|${CERC_RELAY_MULTIADDR}|g; \
|
||||||
s/REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS/${CERC_ENABLE_PEER_L2_TXS}/g; \
|
s/REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS/${CERC_ENABLE_PEER_L2_TXS}/g; \
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
||||||
peerIdFile = './peers/relay-id.json'
|
peerIdFile = './peers/relay-id.json'
|
||||||
announce = 'REPLACE_WITH_CERC_RELAY_ANNOUNCE_DOMAIN'
|
announce = 'REPLACE_WITH_CERC_RELAY_ANNOUNCE_DOMAIN'
|
||||||
|
pubsub = 'REPLACE_WITH_CERC_PUBSUB'
|
||||||
enableDebugInfo = true
|
enableDebugInfo = true
|
||||||
|
|
||||||
[server.p2p.peer]
|
[server.p2p.peer]
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
pubSubTopic = 'mobymask'
|
pubSubTopic = 'mobymask'
|
||||||
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
||||||
peerIdFile = './peers/peer-id.json'
|
peerIdFile = './peers/peer-id.json'
|
||||||
|
pubsub = 'REPLACE_WITH_CERC_PUBSUB'
|
||||||
enableDebugInfo = true
|
enableDebugInfo = true
|
||||||
enableL2Txs = REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS
|
enableL2Txs = REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
CERC_NA_ADDRESS="${CERC_NA_ADDRESS:-${DEFAULT_CERC_NA_ADDRESS}}"
|
||||||
|
CERC_VPA_ADDRESS="${CERC_VPA_ADDRESS:-${DEFAULT_CERC_VPA_ADDRESS}}"
|
||||||
|
CERC_CA_ADDRESS="${CERC_CA_ADDRESS:-${DEFAULT_CERC_CA_ADDRESS}}"
|
||||||
|
|
||||||
|
NITRO_ADDRESSES_FILE_PATH="/nitro/nitro-addresses.json"
|
||||||
|
|
||||||
|
# Check if CERC_NA_ADDRESS environment variable set to skip contract deployment
|
||||||
|
if [ -n "$CERC_NA_ADDRESS" ]; then
|
||||||
|
echo "CERC_NA_ADDRESS is set to '$CERC_NA_ADDRESS'"
|
||||||
|
echo "CERC_VPA_ADDRESS is set to '$CERC_VPA_ADDRESS'"
|
||||||
|
echo "CERC_CA_ADDRESS is set to '$CERC_CA_ADDRESS'"
|
||||||
|
echo "Using the above addresses and skipping Nitro contracts deployment"
|
||||||
|
|
||||||
|
# Create the required JSON and write it to a file
|
||||||
|
nitro_addresses_json=$(jq -n \
|
||||||
|
--arg na "$CERC_NA_ADDRESS" \
|
||||||
|
--arg vpa "$CERC_VPA_ADDRESS" \
|
||||||
|
--arg ca "$CERC_CA_ADDRESS" \
|
||||||
|
'.nitroAdjudicatorAddress = $na | .virtualPaymentAppAddress = $vpa | .consensusAppAddress = $ca')
|
||||||
|
echo "$nitro_addresses_json" > "${NITRO_ADDRESSES_FILE_PATH}"
|
||||||
|
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check and exit if a deployment already exists (on restarts)
|
||||||
|
if [ -f ${NITRO_ADDRESSES_FILE_PATH} ]; then
|
||||||
|
echo "${NITRO_ADDRESSES_FILE_PATH} already exists, skipping Nitro contracts deployment"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Using L2 RPC endpoint ${CERC_L2_GETH_RPC}"
|
||||||
|
|
||||||
|
if [ -n "$CERC_L1_ACCOUNTS_CSV_URL" ] && \
|
||||||
|
l1_accounts_response=$(curl -L --write-out '%{http_code}' --silent --output /dev/null "$CERC_L1_ACCOUNTS_CSV_URL") && \
|
||||||
|
[ "$l1_accounts_response" -eq 200 ];
|
||||||
|
then
|
||||||
|
echo "Fetching L1 account credentials using provided URL"
|
||||||
|
mkdir -p /geth-accounts
|
||||||
|
wget -O /geth-accounts/accounts.csv "$CERC_L1_ACCOUNTS_CSV_URL"
|
||||||
|
|
||||||
|
# Read the private key of an L1 account to deploy contract
|
||||||
|
CERC_PRIVATE_KEY_DEPLOYER=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
|
||||||
|
else
|
||||||
|
echo "Couldn't fetch L1 account credentials, using CERC_PRIVATE_KEY_DEPLOYER from env"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "RPC_URL=${CERC_L2_GETH_RPC}" > .env
|
||||||
|
echo "NITRO_ADDRESSES_FILE_PATH=${NITRO_ADDRESSES_FILE_PATH}" >> .env
|
||||||
|
echo "PRIVATE_KEY=${CERC_PRIVATE_KEY_DEPLOYER}" >> .env
|
||||||
|
|
||||||
|
yarn ts-node --esm deploy-nitro-contracts.ts
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import 'dotenv/config';
|
||||||
|
import fs from 'fs';
|
||||||
|
import { providers, Wallet } from 'ethers';
|
||||||
|
import { deployContracts } from '@cerc-io/nitro-util';
|
||||||
|
|
||||||
|
async function main () {
|
||||||
|
const rpcURL = process.env.RPC_URL;
|
||||||
|
const addressesFilePath = process.env.NITRO_ADDRESSES_FILE_PATH;
|
||||||
|
const deployerKey = process.env.PRIVATE_KEY;
|
||||||
|
|
||||||
|
if (!rpcURL) {
|
||||||
|
console.log('RPC_URL not set, skipping deployment');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!addressesFilePath) {
|
||||||
|
console.log('NITRO_ADDRESSES_FILE_PATH not set, skipping deployment');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!deployerKey) {
|
||||||
|
console.log('PRIVATE_KEY not set, skipping deployment');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const provider = new providers.JsonRpcProvider(process.env.RPC_URL);
|
||||||
|
const signer = new Wallet(deployerKey, provider);
|
||||||
|
|
||||||
|
const [
|
||||||
|
nitroAdjudicatorAddress,
|
||||||
|
virtualPaymentAppAddress,
|
||||||
|
consensusAppAddress
|
||||||
|
] = await deployContracts(signer as any);
|
||||||
|
|
||||||
|
const output = {
|
||||||
|
nitroAdjudicatorAddress,
|
||||||
|
virtualPaymentAppAddress,
|
||||||
|
consensusAppAddress
|
||||||
|
};
|
||||||
|
|
||||||
|
fs.writeFileSync(addressesFilePath, JSON.stringify(output, null, 2));
|
||||||
|
console.log('Nitro contracts deployed, addresses written to', addressesFilePath);
|
||||||
|
console.log('Result:', JSON.stringify(output, null, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"peerId": {
|
||||||
|
"id": "12D3KooWAMjBkFCT9DtCnSDcxftxJzSuTBvzVojabv64cnEvX4AZ",
|
||||||
|
"privKey": "CAESQAKCrnY0QKTky1I18fqn+VPydXGUv1NYiV+nVKqBFkw/CAjE9sKKIDGnYAo8mivnI6dngFenERY+0Q8AJrPTaXY=",
|
||||||
|
"pubKey": "CAESIAgIxPbCiiAxp2AKPJor5yOnZ4BXpxEWPtEPACaz02l2"
|
||||||
|
},
|
||||||
|
"consensus": {
|
||||||
|
"publicKey": "02cd17b05ca998955be5ca7bf4fd4531243d438f1aae7ce8a0ed5159f53cee5b40",
|
||||||
|
"privateKey": "67d80505614bdf61fca11cbad31d93acb2c7df1c653dc25975d77d05f05f154f"
|
||||||
|
}
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"peerId": {
|
||||||
|
"id": "12D3KooWBNEbY3QS4y23ngupDw9PDc4bvNvRJGVRejjV9EZLjux5",
|
||||||
|
"privKey": "CAESQGSTw0ymvn8+wX9Dbvyr4/Gib1q2voe0CC0VyeClMQP6FwW14x0fpRbBIx0XhLdxWHkRndphVg3gVAHyC+7ZI8o=",
|
||||||
|
"pubKey": "CAESIBcFteMdH6UWwSMdF4S3cVh5EZ3aYVYN4FQB8gvu2SPK"
|
||||||
|
},
|
||||||
|
"consensus": {
|
||||||
|
"publicKey": "029c8035b3e9401b8f178f7c37285b5cb22501e017340e2058b3b842f2a1f0ae45",
|
||||||
|
"privateKey": "0261008e8e3ec808168e99333599da38ca59a056a2ae4510a6ad3d8b5cb0918c"
|
||||||
|
}
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"peerId": {
|
||||||
|
"id": "12D3KooWSRH6ftgkAZsKZK7UX1Zr6Hx6YAsEepHqzopFszqfTxxi",
|
||||||
|
"privKey": "CAESQHBjlHxfVhZ2gXsBItrIEEgSGKcjMkFiGs3PPz9E3ace9qyWEkvR4oit5ve9SAROVoh20hoa42IC91NIafMaqws=",
|
||||||
|
"pubKey": "CAESIPaslhJL0eKIreb3vUgETlaIdtIaGuNiAvdTSGnzGqsL"
|
||||||
|
},
|
||||||
|
"consensus": {
|
||||||
|
"publicKey": "039160c244a7ad8be16a64bdb69e6dbacdcfe20b37076792a0d06032a8097468ca",
|
||||||
|
"privateKey": "8894685fe81001d75662b079905472699373967451d1255ee5fc669d0a09a9ca"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
CERC_CHAIN_ID="${CERC_CHAIN_ID:-${DEFAULT_CERC_CHAIN_ID}}"
|
||||||
|
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
||||||
|
CERC_RELAY_NODES="${CERC_RELAY_NODES:-${DEFAULT_CERC_RELAY_NODES}}"
|
||||||
|
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
||||||
|
CERC_PUBSUB="${CERC_PUBSUB:-${DEFAULT_CERC_PUBSUB}}"
|
||||||
|
CERC_GOSSIPSUB_DIRECT_PEERS="${CERC_GOSSIPSUB_DIRECT_PEERS:-${DEFAULT_CERC_GOSSIPSUB_DIRECT_PEERS}}"
|
||||||
|
|
||||||
|
echo "Using CERC_RELAY_NODES $CERC_RELAY_NODES"
|
||||||
|
|
||||||
|
if [ -z "$CERC_DEPLOYED_CONTRACT" ]; then
|
||||||
|
echo "CERC_DEPLOYED_CONTRACT not set"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Using CERC_DEPLOYED_CONTRACT ${CERC_DEPLOYED_CONTRACT} from env as the MobyMask contract address"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Checkout to the required release/branch
|
||||||
|
cd /app
|
||||||
|
git checkout $CERC_RELEASE
|
||||||
|
|
||||||
|
# Check if CERC_NA_ADDRESS is set
|
||||||
|
if [ -n "$CERC_NA_ADDRESS" ]; then
|
||||||
|
echo "CERC_NA_ADDRESS is set to '$CERC_NA_ADDRESS'"
|
||||||
|
echo "CERC_VPA_ADDRESS is set to '$CERC_VPA_ADDRESS'"
|
||||||
|
echo "CERC_CA_ADDRESS is set to '$CERC_CA_ADDRESS'"
|
||||||
|
echo "Using the above Nitro addresses"
|
||||||
|
|
||||||
|
# Create the required JSON and write it to a file
|
||||||
|
nitro_addresses_json=$(jq -n \
|
||||||
|
--arg na "$CERC_NA_ADDRESS" \
|
||||||
|
--arg vpa "$CERC_VPA_ADDRESS" \
|
||||||
|
--arg ca "$CERC_CA_ADDRESS" \
|
||||||
|
'.nitroAdjudicatorAddress = $na | .virtualPaymentAppAddress = $vpa | .consensusAppAddress = $ca')
|
||||||
|
echo "$nitro_addresses_json" > /app/src/utils/nitro-addresses.json
|
||||||
|
else
|
||||||
|
echo "Nitro addresses not provided"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Export config values in a json file
|
||||||
|
jq --arg address "$CERC_DEPLOYED_CONTRACT" \
|
||||||
|
--argjson chainId "$CERC_CHAIN_ID" \
|
||||||
|
--argjson relayNodes "$CERC_RELAY_NODES" \
|
||||||
|
--argjson denyMultiaddrs "$CERC_DENY_MULTIADDRS" \
|
||||||
|
--arg pubsub "$CERC_PUBSUB" \
|
||||||
|
--argjson directPeers "$CERC_GOSSIPSUB_DIRECT_PEERS" \
|
||||||
|
'.address = $address | .chainId = $chainId | .relayNodes = $relayNodes | .peer.denyMultiaddrs = $denyMultiaddrs | .peer.pubsub = $pubsub | .peer.directPeers = $directPeers' \
|
||||||
|
/app/src/mobymask-app-config.json > /app/src/utils/config.json
|
||||||
|
|
||||||
|
yarn install
|
||||||
|
|
||||||
|
REACT_APP_WATCHER_URI="$CERC_APP_WATCHER_URL/graphql" \
|
||||||
|
REACT_APP_PAY_TO_NITRO_ADDRESS="$CERC_PAYMENT_NITRO_ADDRESS" \
|
||||||
|
REACT_APP_SNAP_ORIGIN="local:$CERC_SNAP_URL" \
|
||||||
|
yarn build
|
||||||
|
|
||||||
|
http-server -p 80 /app/build
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Defaults
|
||||||
|
|
||||||
|
# Set of relay peers to connect to from the relay node
|
||||||
|
DEFAULT_CERC_RELAY_PEERS=[]
|
||||||
|
|
||||||
|
# Domain to be used in the relay node's announce address
|
||||||
|
DEFAULT_CERC_RELAY_ANNOUNCE_DOMAIN=
|
||||||
|
|
||||||
|
# Base URI for mobymask-app (used for generating invite)
|
||||||
|
DEFAULT_CERC_MOBYMASK_APP_BASE_URI="http://127.0.0.1:3004/#"
|
||||||
|
|
||||||
|
# Set to false for disabling watcher peer to send txs to L2
|
||||||
|
DEFAULT_CERC_ENABLE_PEER_L2_TXS=true
|
||||||
|
|
||||||
|
# Set deployed MobyMask contract address to avoid deploying contract in stack
|
||||||
|
# mobymask-app will use this contract address in config if run separately
|
||||||
|
DEFAULT_CERC_DEPLOYED_CONTRACT=
|
||||||
|
|
||||||
|
# Chain ID is used by mobymask web-app for txs
|
||||||
|
DEFAULT_CERC_CHAIN_ID=42069
|
||||||
|
|
||||||
|
# Set of relay nodes to be used by web-apps
|
||||||
|
DEFAULT_CERC_RELAY_NODES=[]
|
||||||
|
|
||||||
|
# Set of multiaddrs to be avoided while dialling
|
||||||
|
DEFAULT_CERC_DENY_MULTIADDRS=[]
|
||||||
|
|
||||||
|
# Type of pubsub to be used
|
||||||
|
DEFAULT_CERC_PUBSUB=""
|
||||||
|
|
||||||
|
# Set of direct peers to be used when pubsub is set to gossipsub
|
||||||
|
DEFAULT_CERC_GOSSIPSUB_DIRECT_PEERS=[]
|
||||||
|
|
||||||
|
# Set deployed Nitro addresses to avoid deploying them in the stack
|
||||||
|
DEFAULT_CERC_NA_ADDRESS=
|
||||||
|
DEFAULT_CERC_VPA_ADDRESS=
|
||||||
|
DEFAULT_CERC_CA_ADDRESS=
|
||||||
+133
@@ -0,0 +1,133 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
CERC_L2_GETH_RPC="${CERC_L2_GETH_RPC:-${DEFAULT_CERC_L2_GETH_RPC}}"
|
||||||
|
|
||||||
|
CERC_RELAY_PEERS="${CERC_RELAY_PEERS:-${DEFAULT_CERC_RELAY_PEERS}}"
|
||||||
|
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
||||||
|
CERC_PUBSUB="${CERC_PUBSUB:-${DEFAULT_CERC_PUBSUB}}"
|
||||||
|
CERC_RELAY_ANNOUNCE_DOMAIN="${CERC_RELAY_ANNOUNCE_DOMAIN:-${DEFAULT_CERC_RELAY_ANNOUNCE_DOMAIN}}"
|
||||||
|
CERC_ENABLE_PEER_L2_TXS="${CERC_ENABLE_PEER_L2_TXS:-${DEFAULT_CERC_ENABLE_PEER_L2_TXS}}"
|
||||||
|
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
||||||
|
|
||||||
|
nitro_addresses_file="/nitro/nitro-addresses.json"
|
||||||
|
nitro_addresses_destination_file="./src/nitro-addresses.json"
|
||||||
|
|
||||||
|
watcher_keys_dir="./keys"
|
||||||
|
|
||||||
|
echo "Using L2 RPC endpoint ${CERC_L2_GETH_RPC}"
|
||||||
|
|
||||||
|
# Use public domain for relay multiaddr in peer config if specified
|
||||||
|
# Otherwise, use the docker container's host IP
|
||||||
|
if [ -n "$CERC_RELAY_ANNOUNCE_DOMAIN" ]; then
|
||||||
|
CERC_RELAY_MULTIADDR="/dns4/${CERC_RELAY_ANNOUNCE_DOMAIN}/tcp/443/wss/p2p/$(jq -r '.id' /app/peers/relay-id.json)"
|
||||||
|
else
|
||||||
|
CERC_RELAY_MULTIADDR="/dns4/mobymask-watcher-server/tcp/9090/ws/p2p/$(jq -r '.id' /app/peers/relay-id.json)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use contract address from environment variable or set from config.json in mounted volume
|
||||||
|
if [ -n "$CERC_DEPLOYED_CONTRACT" ]; then
|
||||||
|
CONTRACT_ADDRESS="${CERC_DEPLOYED_CONTRACT}"
|
||||||
|
else
|
||||||
|
# Assign deployed contract address from server config (created by mobymask container after deploying contract)
|
||||||
|
CONTRACT_ADDRESS=$(jq -r '.address' /server/config.json | tr -d '"')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy the deployed Nitro addresses to the required path
|
||||||
|
if [ -f "$nitro_addresses_file" ]; then
|
||||||
|
cat "$nitro_addresses_file" > "$nitro_addresses_destination_file"
|
||||||
|
echo "Nitro addresses set to ${nitro_addresses_destination_file}"
|
||||||
|
|
||||||
|
# Build after setting the Nitro addresses
|
||||||
|
yarn build
|
||||||
|
else
|
||||||
|
echo "File ${nitro_addresses_file} does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Using CERC_PRIVATE_KEY_PEER (account with funds) from env for sending txs to L2"
|
||||||
|
echo "Using CERC_PRIVATE_KEY_NITRO from env for Nitro account"
|
||||||
|
|
||||||
|
if [ -n "$CERC_PEER_ID" ]; then
|
||||||
|
echo "Using CERC_PEER_ID ${CERC_PEER_ID} from env for watcher fixture"
|
||||||
|
echo "Consensus module enabled"
|
||||||
|
|
||||||
|
# Set corresponding variables
|
||||||
|
PEER_ID_FILE='./peer-id.json'
|
||||||
|
CONSENSUS_ENABLED=true
|
||||||
|
WATCHER_PARTY_PEERS_FILE='./watcher-party-peers.json'
|
||||||
|
|
||||||
|
# Create watcher party array
|
||||||
|
watcher_parties=()
|
||||||
|
|
||||||
|
# Iterate over each fixture JSON file
|
||||||
|
for peer_data_file in "$watcher_keys_dir"/*.json; do
|
||||||
|
# Extract the filename without the path and extension
|
||||||
|
peer_id=$(basename "$peer_data_file" .json)
|
||||||
|
|
||||||
|
# Read the consensus keys
|
||||||
|
consensus_public_key=$(jq -r '.consensus.publicKey' "$peer_data_file")
|
||||||
|
consensus_private_key=$(jq -r '.consensus.privateKey' "$peer_data_file")
|
||||||
|
|
||||||
|
# Append watcher party
|
||||||
|
watcher_party=$(jq -n \
|
||||||
|
--arg peerId "$peer_id" \
|
||||||
|
--arg publicKey "$consensus_public_key" \
|
||||||
|
'.peerId = $peerId | .publicKey = $publicKey')
|
||||||
|
watcher_parties+=("$watcher_party")
|
||||||
|
|
||||||
|
if [ "$peer_id" = "$CERC_PEER_ID" ]; then
|
||||||
|
# Export peer id
|
||||||
|
peer_id_data=$(jq '.peerId' "$peer_data_file")
|
||||||
|
echo "$peer_id_data" > "${PEER_ID_FILE}"
|
||||||
|
|
||||||
|
# Set consensus keys for this peer
|
||||||
|
CONSENSUS_PUBLIC_KEY=${consensus_public_key}
|
||||||
|
CONSENSUS_PRIVATE_KEY=${consensus_private_key}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Export watcher party file
|
||||||
|
watcher_parties_json=$(printf '%s\n' "${watcher_parties[@]}" | jq -s .)
|
||||||
|
echo "$watcher_parties_json" > "${WATCHER_PARTY_PEERS_FILE}"
|
||||||
|
echo "Watcher party peers exported to ${WATCHER_PARTY_PEERS_FILE}"
|
||||||
|
else
|
||||||
|
echo "Using generated peer id"
|
||||||
|
echo "Consensus module disabled"
|
||||||
|
|
||||||
|
# Set corresponding variables
|
||||||
|
PEER_ID_FILE='./peers/peer-id.json'
|
||||||
|
CONSENSUS_ENABLED=false
|
||||||
|
WATCHER_PARTY_PEERS_FILE=''
|
||||||
|
CONSENSUS_PUBLIC_KEY=''
|
||||||
|
CONSENSUS_PRIVATE_KEY=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 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_RELAY_PEERS|${CERC_RELAY_PEERS}|g; \
|
||||||
|
s|REPLACE_WITH_CERC_DENY_MULTIADDRS|${CERC_DENY_MULTIADDRS}|g; \
|
||||||
|
s/REPLACE_WITH_CERC_PUBSUB/${CERC_PUBSUB}/g; \
|
||||||
|
s/REPLACE_WITH_CERC_RELAY_ANNOUNCE_DOMAIN/${CERC_RELAY_ANNOUNCE_DOMAIN}/g; \
|
||||||
|
s|REPLACE_WITH_CERC_RELAY_MULTIADDR|${CERC_RELAY_MULTIADDR}|g; \
|
||||||
|
s|REPLACE_WITH_PEER_ID_FILE|${PEER_ID_FILE}|g; \
|
||||||
|
s/REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS/${CERC_ENABLE_PEER_L2_TXS}/g; \
|
||||||
|
s/REPLACE_WITH_CERC_PRIVATE_KEY_PEER/${CERC_PRIVATE_KEY_PEER}/g; \
|
||||||
|
s/REPLACE_WITH_CERC_PRIVATE_KEY_NITRO/${CERC_PRIVATE_KEY_NITRO}/g; \
|
||||||
|
s/REPLACE_WITH_CONTRACT_ADDRESS/${CONTRACT_ADDRESS}/g; \
|
||||||
|
s/REPLACE_WITH_CONSENSUS_ENABLED/${CONSENSUS_ENABLED}/g; \
|
||||||
|
s/REPLACE_WITH_CONSENSUS_PUBLIC_KEY/${CONSENSUS_PUBLIC_KEY}/g; \
|
||||||
|
s/REPLACE_WITH_CONSENSUS_PRIVATE_KEY/${CONSENSUS_PRIVATE_KEY}/g; \
|
||||||
|
s|REPLACE_WITH_WATCHER_PARTY_PEERS_FILE|${WATCHER_PARTY_PEERS_FILE}|g; \
|
||||||
|
s|REPLACE_WITH_CERC_L2_GETH_RPC_ENDPOINT|${CERC_L2_GETH_RPC}| ")
|
||||||
|
|
||||||
|
# Write the modified content to a new file
|
||||||
|
echo "$WATCHER_CONFIG" > environments/local.toml
|
||||||
|
|
||||||
|
echo 'yarn server'
|
||||||
|
yarn server
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
freeQueriesLimit = 10
|
||||||
|
|
||||||
|
freeQueriesList = []
|
||||||
|
|
||||||
|
[queries]
|
||||||
|
multiNonce = '50'
|
||||||
|
_owner = '50'
|
||||||
|
isRevoked = '50'
|
||||||
|
isPhisher = '50'
|
||||||
|
isMember = '50'
|
||||||
|
|
||||||
|
[mutations]
|
||||||
|
invoke = '100'
|
||||||
|
revoke = '100'
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
[server]
|
||||||
|
host = "0.0.0.0"
|
||||||
|
port = 3001
|
||||||
|
kind = "lazy"
|
||||||
|
|
||||||
|
# Checkpointing state.
|
||||||
|
checkpointing = true
|
||||||
|
|
||||||
|
# Checkpoint interval in number of blocks.
|
||||||
|
checkpointInterval = 2000
|
||||||
|
|
||||||
|
# Enable state creation
|
||||||
|
enableState = true
|
||||||
|
|
||||||
|
# Boolean to filter logs by contract.
|
||||||
|
filterLogs = true
|
||||||
|
|
||||||
|
# Max block range for which to return events in eventsInRange GQL query.
|
||||||
|
# Use -1 for skipping check on block range.
|
||||||
|
maxEventsBlockRange = -1
|
||||||
|
|
||||||
|
[server.p2p]
|
||||||
|
enableRelay = true
|
||||||
|
enablePeer = true
|
||||||
|
|
||||||
|
[server.p2p.relay]
|
||||||
|
host = "0.0.0.0"
|
||||||
|
port = 9090
|
||||||
|
relayPeers = REPLACE_WITH_CERC_RELAY_PEERS
|
||||||
|
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
||||||
|
peerIdFile = './peers/relay-id.json'
|
||||||
|
announce = 'REPLACE_WITH_CERC_RELAY_ANNOUNCE_DOMAIN'
|
||||||
|
pubsub = 'REPLACE_WITH_CERC_PUBSUB'
|
||||||
|
enableDebugInfo = true
|
||||||
|
|
||||||
|
[server.p2p.peer]
|
||||||
|
relayMultiaddr = 'REPLACE_WITH_CERC_RELAY_MULTIADDR'
|
||||||
|
pubSubTopic = 'mobymask'
|
||||||
|
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
||||||
|
peerIdFile = 'REPLACE_WITH_PEER_ID_FILE'
|
||||||
|
pubsub = 'REPLACE_WITH_CERC_PUBSUB'
|
||||||
|
enableDebugInfo = true
|
||||||
|
enableL2Txs = REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS
|
||||||
|
|
||||||
|
[server.p2p.peer.l2TxsConfig]
|
||||||
|
privateKey = 'REPLACE_WITH_CERC_PRIVATE_KEY_PEER'
|
||||||
|
contractAddress = 'REPLACE_WITH_CONTRACT_ADDRESS'
|
||||||
|
|
||||||
|
[server.p2p.nitro]
|
||||||
|
store = './out/nitro-db'
|
||||||
|
privateKey = 'REPLACE_WITH_CERC_PRIVATE_KEY_NITRO'
|
||||||
|
chainPrivateKey = 'REPLACE_WITH_CERC_PRIVATE_KEY_PEER'
|
||||||
|
|
||||||
|
[server.p2p.nitro.payments]
|
||||||
|
ratesFile = './environments/rates.toml'
|
||||||
|
requestTimeoutInSecs = 10
|
||||||
|
|
||||||
|
[server.p2p.nitro.payments.cache]
|
||||||
|
maxAccounts = 1000
|
||||||
|
accountTTLInSecs = 1800
|
||||||
|
maxVouchersPerAccount = 1000
|
||||||
|
voucherTTLInSecs = 300
|
||||||
|
maxPaymentChannels = 10000
|
||||||
|
paymentChannelTTLInSecs = 1800
|
||||||
|
|
||||||
|
[server.p2p.consensus]
|
||||||
|
enabled = REPLACE_WITH_CONSENSUS_ENABLED
|
||||||
|
publicKey = 'REPLACE_WITH_CONSENSUS_PUBLIC_KEY'
|
||||||
|
privateKey = 'REPLACE_WITH_CONSENSUS_PRIVATE_KEY'
|
||||||
|
watcherPartyFile = 'REPLACE_WITH_WATCHER_PARTY_PEERS_FILE'
|
||||||
|
|
||||||
|
[metrics]
|
||||||
|
host = "0.0.0.0"
|
||||||
|
port = 9000
|
||||||
|
[metrics.gql]
|
||||||
|
port = 9001
|
||||||
|
|
||||||
|
[database]
|
||||||
|
type = "postgres"
|
||||||
|
host = "mobymask-watcher-db"
|
||||||
|
port = 5432
|
||||||
|
database = "mobymask-watcher"
|
||||||
|
username = "vdbm"
|
||||||
|
password = "password"
|
||||||
|
synchronize = true
|
||||||
|
logging = false
|
||||||
|
|
||||||
|
[upstream]
|
||||||
|
[upstream.ethServer]
|
||||||
|
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
|
||||||
|
rpcProviderEndpoint = "REPLACE_WITH_CERC_L2_GETH_RPC_ENDPOINT"
|
||||||
|
blockDelayInMilliSecs = 60000
|
||||||
|
|
||||||
|
[upstream.cache]
|
||||||
|
name = "requests"
|
||||||
|
enabled = false
|
||||||
|
deleteOnStart = false
|
||||||
|
|
||||||
|
[jobQueue]
|
||||||
|
dbConnectionString = "postgres://vdbm:password@mobymask-watcher-db/mobymask-watcher-job-queue"
|
||||||
|
maxCompletionLagInSecs = 300
|
||||||
|
jobDelayInMilliSecs = 100
|
||||||
|
eventsInBatch = 50
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
-- PostgreSQL database dump
|
-- PostgreSQL database dump
|
||||||
--
|
--
|
||||||
|
|
||||||
-- Dumped from database version 12.11
|
-- Dumped from database version 14.8
|
||||||
-- Dumped by pg_dump version 14.3 (Ubuntu 14.3-0ubuntu0.22.04.1)
|
-- Dumped by pg_dump version 14.8
|
||||||
|
|
||||||
SET statement_timeout = 0;
|
SET statement_timeout = 0;
|
||||||
SET lock_timeout = 0;
|
SET lock_timeout = 0;
|
||||||
@@ -17,10 +17,10 @@ SET client_min_messages = warning;
|
|||||||
SET row_security = off;
|
SET row_security = off;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: ipld_block_kind_enum; Type: TYPE; Schema: public; Owner: vdbm
|
-- Name: state_kind_enum; Type: TYPE; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TYPE public.ipld_block_kind_enum AS ENUM (
|
CREATE TYPE public.state_kind_enum AS ENUM (
|
||||||
'diff',
|
'diff',
|
||||||
'init',
|
'init',
|
||||||
'diff_staged',
|
'diff_staged',
|
||||||
@@ -28,7 +28,7 @@ CREATE TYPE public.ipld_block_kind_enum AS ENUM (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
ALTER TYPE public.ipld_block_kind_enum OWNER TO vdbm;
|
ALTER TYPE public.state_kind_enum OWNER TO vdbm;
|
||||||
|
|
||||||
SET default_tablespace = '';
|
SET default_tablespace = '';
|
||||||
|
|
||||||
@@ -153,44 +153,6 @@ ALTER TABLE public.contract_id_seq OWNER TO vdbm;
|
|||||||
ALTER SEQUENCE public.contract_id_seq OWNED BY public.contract.id;
|
ALTER SEQUENCE public.contract_id_seq OWNED BY public.contract.id;
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: domain_hash; Type: TABLE; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE public.domain_hash (
|
|
||||||
id integer NOT NULL,
|
|
||||||
block_hash character varying(66) NOT NULL,
|
|
||||||
block_number integer NOT NULL,
|
|
||||||
contract_address character varying(42) NOT NULL,
|
|
||||||
value character varying NOT NULL,
|
|
||||||
proof text
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.domain_hash OWNER TO vdbm;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: domain_hash_id_seq; Type: SEQUENCE; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE SEQUENCE public.domain_hash_id_seq
|
|
||||||
AS integer
|
|
||||||
START WITH 1
|
|
||||||
INCREMENT BY 1
|
|
||||||
NO MINVALUE
|
|
||||||
NO MAXVALUE
|
|
||||||
CACHE 1;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.domain_hash_id_seq OWNER TO vdbm;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: domain_hash_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER SEQUENCE public.domain_hash_id_seq OWNED BY public.domain_hash.id;
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: event; Type: TABLE; Schema: public; Owner: vdbm
|
-- Name: event; Type: TABLE; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -232,80 +194,6 @@ ALTER TABLE public.event_id_seq OWNER TO vdbm;
|
|||||||
ALTER SEQUENCE public.event_id_seq OWNED BY public.event.id;
|
ALTER SEQUENCE public.event_id_seq OWNED BY public.event.id;
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_block; Type: TABLE; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE public.ipld_block (
|
|
||||||
id integer NOT NULL,
|
|
||||||
contract_address character varying(42) NOT NULL,
|
|
||||||
cid character varying NOT NULL,
|
|
||||||
kind public.ipld_block_kind_enum NOT NULL,
|
|
||||||
data bytea NOT NULL,
|
|
||||||
block_id integer
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.ipld_block OWNER TO vdbm;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_block_id_seq; Type: SEQUENCE; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE SEQUENCE public.ipld_block_id_seq
|
|
||||||
AS integer
|
|
||||||
START WITH 1
|
|
||||||
INCREMENT BY 1
|
|
||||||
NO MINVALUE
|
|
||||||
NO MAXVALUE
|
|
||||||
CACHE 1;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.ipld_block_id_seq OWNER TO vdbm;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_block_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER SEQUENCE public.ipld_block_id_seq OWNED BY public.ipld_block.id;
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_status; Type: TABLE; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE TABLE public.ipld_status (
|
|
||||||
id integer NOT NULL,
|
|
||||||
latest_hooks_block_number integer NOT NULL,
|
|
||||||
latest_checkpoint_block_number integer NOT NULL,
|
|
||||||
latest_ipfs_block_number integer NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.ipld_status OWNER TO vdbm;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_status_id_seq; Type: SEQUENCE; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE SEQUENCE public.ipld_status_id_seq
|
|
||||||
AS integer
|
|
||||||
START WITH 1
|
|
||||||
INCREMENT BY 1
|
|
||||||
NO MINVALUE
|
|
||||||
NO MAXVALUE
|
|
||||||
CACHE 1;
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.ipld_status_id_seq OWNER TO vdbm;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_status_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER SEQUENCE public.ipld_status_id_seq OWNED BY public.ipld_status.id;
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: is_member; Type: TABLE; Schema: public; Owner: vdbm
|
-- Name: is_member; Type: TABLE; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -463,6 +351,79 @@ ALTER TABLE public.multi_nonce_id_seq OWNER TO vdbm;
|
|||||||
ALTER SEQUENCE public.multi_nonce_id_seq OWNED BY public.multi_nonce.id;
|
ALTER SEQUENCE public.multi_nonce_id_seq OWNED BY public.multi_nonce.id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state; Type: TABLE; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE public.state (
|
||||||
|
id integer NOT NULL,
|
||||||
|
contract_address character varying(42) NOT NULL,
|
||||||
|
cid character varying NOT NULL,
|
||||||
|
kind public.state_kind_enum NOT NULL,
|
||||||
|
data bytea NOT NULL,
|
||||||
|
block_id integer
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.state OWNER TO vdbm;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_id_seq; Type: SEQUENCE; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE SEQUENCE public.state_id_seq
|
||||||
|
AS integer
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.state_id_seq OWNER TO vdbm;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER SEQUENCE public.state_id_seq OWNED BY public.state.id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_sync_status; Type: TABLE; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE public.state_sync_status (
|
||||||
|
id integer NOT NULL,
|
||||||
|
latest_indexed_block_number integer NOT NULL,
|
||||||
|
latest_checkpoint_block_number integer
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.state_sync_status OWNER TO vdbm;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_sync_status_id_seq; Type: SEQUENCE; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE SEQUENCE public.state_sync_status_id_seq
|
||||||
|
AS integer
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.state_sync_status_id_seq OWNER TO vdbm;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_sync_status_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER SEQUENCE public.state_sync_status_id_seq OWNED BY public.state_sync_status.id;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: sync_status; Type: TABLE; Schema: public; Owner: vdbm
|
-- Name: sync_status; Type: TABLE; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -504,6 +465,22 @@ ALTER TABLE public.sync_status_id_seq OWNER TO vdbm;
|
|||||||
ALTER SEQUENCE public.sync_status_id_seq OWNED BY public.sync_status.id;
|
ALTER SEQUENCE public.sync_status_id_seq OWNED BY public.sync_status.id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: typeorm_metadata; Type: TABLE; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE public.typeorm_metadata (
|
||||||
|
type character varying NOT NULL,
|
||||||
|
database character varying,
|
||||||
|
schema character varying,
|
||||||
|
"table" character varying,
|
||||||
|
name character varying,
|
||||||
|
value text
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE public.typeorm_metadata OWNER TO vdbm;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: _owner id; Type: DEFAULT; Schema: public; Owner: vdbm
|
-- Name: _owner id; Type: DEFAULT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -525,13 +502,6 @@ ALTER TABLE ONLY public.block_progress ALTER COLUMN id SET DEFAULT nextval('publ
|
|||||||
ALTER TABLE ONLY public.contract ALTER COLUMN id SET DEFAULT nextval('public.contract_id_seq'::regclass);
|
ALTER TABLE ONLY public.contract ALTER COLUMN id SET DEFAULT nextval('public.contract_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: domain_hash id; Type: DEFAULT; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER TABLE ONLY public.domain_hash ALTER COLUMN id SET DEFAULT nextval('public.domain_hash_id_seq'::regclass);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: event id; Type: DEFAULT; Schema: public; Owner: vdbm
|
-- Name: event id; Type: DEFAULT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -539,20 +509,6 @@ ALTER TABLE ONLY public.domain_hash ALTER COLUMN id SET DEFAULT nextval('public.
|
|||||||
ALTER TABLE ONLY public.event ALTER COLUMN id SET DEFAULT nextval('public.event_id_seq'::regclass);
|
ALTER TABLE ONLY public.event ALTER COLUMN id SET DEFAULT nextval('public.event_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_block id; Type: DEFAULT; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER TABLE ONLY public.ipld_block ALTER COLUMN id SET DEFAULT nextval('public.ipld_block_id_seq'::regclass);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_status id; Type: DEFAULT; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER TABLE ONLY public.ipld_status ALTER COLUMN id SET DEFAULT nextval('public.ipld_status_id_seq'::regclass);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: is_member id; Type: DEFAULT; Schema: public; Owner: vdbm
|
-- Name: is_member id; Type: DEFAULT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -581,6 +537,20 @@ ALTER TABLE ONLY public.is_revoked ALTER COLUMN id SET DEFAULT nextval('public.i
|
|||||||
ALTER TABLE ONLY public.multi_nonce ALTER COLUMN id SET DEFAULT nextval('public.multi_nonce_id_seq'::regclass);
|
ALTER TABLE ONLY public.multi_nonce ALTER COLUMN id SET DEFAULT nextval('public.multi_nonce_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state id; Type: DEFAULT; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.state ALTER COLUMN id SET DEFAULT nextval('public.state_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_sync_status id; Type: DEFAULT; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.state_sync_status ALTER COLUMN id SET DEFAULT nextval('public.state_sync_status_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: sync_status id; Type: DEFAULT; Schema: public; Owner: vdbm
|
-- Name: sync_status id; Type: DEFAULT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -601,12 +571,7 @@ COPY public._owner (id, block_hash, block_number, contract_address, value, proof
|
|||||||
--
|
--
|
||||||
|
|
||||||
COPY public.block_progress (id, cid, block_hash, parent_hash, block_number, block_timestamp, num_events, num_processed_events, last_processed_event_index, is_complete, is_pruned, created_at) FROM stdin;
|
COPY public.block_progress (id, cid, block_hash, parent_hash, block_number, block_timestamp, num_events, num_processed_events, last_processed_event_index, is_complete, is_pruned, created_at) FROM stdin;
|
||||||
1 bagiacgzahk6aqbbp75hft2xvtqnj425qaxj7ze4fspykcs745cyxg34bb3ba 0x3abc08042fff4e59eaf59c1a9e6bb005d3fc938593f0a14bfce8b1736f810ec2 0xafbdc83ac2dc79b5500c67751472eeac76594e4466c367b5f4a2895cd175ed97 14869713 1653872939 1 1 77 t f 2022-07-18 12:34:00.523
|
1 bagiacgzauxdi4c475drog7xk4tejff6gfjuizi7wwyi5zpi7zywluz6qjgta 0xa5c68e0b9fe8e2e37eeae4c89297c62a688ca3f6b611dcbd1fce2cba67d049a6 0x4be849db46f69accfd7c435011eac58ba368508cf965bb1a6a188480e6f0e8eb 17960760 1692592607 1 1 130 t f 2023-08-29 16:48:14.226
|
||||||
5 bagiacgzav62hayc73buzkf24foyh5vrnt54ndxv76m6of7dprvpqpkpl5sra 0xafb470605fd86995175c2bb07ed62d9f78d1debff33ce2fc6f8d5f07a9ebeca2 0x33283f0fa7702e8c366715738c1d34c9750edd9cf74ae5dfb8d11f262ad69027 14885755 1654099778 2 2 119 t f 2022-07-18 12:34:42.361
|
|
||||||
2 bagiacgzafdfrnz2azvox32djx3rjk7tuij4q5hlxjzxhdackm6jty7tcqa4a 0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038 0xabd4915ed36022a05a9d95f51dc702103a2caab4c2f161321ab12a6bb77f01d1 14875233 1653950619 8 8 440 t f 2022-07-18 12:34:09.416
|
|
||||||
3 bagiacgzan6rpxee4tm4gmzgcer3yx4enpvodtpzn2t2bjj72cblkhrng5bxa 0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e 0x976a8cb34b85994bce2fa5bda884f2a7c8ad68050645cb2dba5519e59cba013d 14876405 1653966919 4 4 274 t f 2022-07-18 12:34:19.014
|
|
||||||
4 bagiacgzabrcmklsd5c3egq2hlrypg7opagtvuysqaf5r2q7nue2stozixbaa 0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840 0xe48d7477413de216d3f7f4868b472047b82c8738890d7096f6c0e8398e92e39e 14884873 1654087572 12 12 518 t f 2022-07-18 12:34:33.681
|
|
||||||
6 bagiacgzad4pz3x2ugxppkduwmvr2ncx4gavr2q5r5limcwr3gol2c7cff24q 0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9 0xbb8016b536b4f4e8ee93c614d74485a7d7eca814b49132599a932cfd03e324a2 15234194 1659054431 12 12 236 t f 2022-07-29 10:37:48.236
|
|
||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
@@ -615,15 +580,7 @@ COPY public.block_progress (id, cid, block_hash, parent_hash, block_number, bloc
|
|||||||
--
|
--
|
||||||
|
|
||||||
COPY public.contract (id, address, kind, checkpoint, starting_block) FROM stdin;
|
COPY public.contract (id, address, kind, checkpoint, starting_block) FROM stdin;
|
||||||
1 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 PhisherRegistry t 14869713
|
1 0xD07Ed0eB708Cb7A660D22f2Ddf7b8C19c7bf1F69 PhisherRegistry t 1
|
||||||
\.
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Data for Name: domain_hash; Type: TABLE DATA; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
COPY public.domain_hash (id, block_hash, block_number, contract_address, value, proof) FROM stdin;
|
|
||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
@@ -632,67 +589,7 @@ COPY public.domain_hash (id, block_hash, block_number, contract_address, value,
|
|||||||
--
|
--
|
||||||
|
|
||||||
COPY public.event (id, tx_hash, index, contract, event_name, event_info, extra_info, proof, block_id) FROM stdin;
|
COPY public.event (id, tx_hash, index, contract, event_name, event_info, extra_info, proof, block_id) FROM stdin;
|
||||||
1 0x82f33cec81da44e94ef69924bc7d786d3f7856f06c1ef583d266dd1b7f091b82 77 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 OwnershipTransferred {"previousOwner":"0x0000000000000000000000000000000000000000","newOwner":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x","tx":{"cid":"bagjqcgzaqlztz3eb3jcostxwtesly7lynu7xqvxqnqppla6sm3orw7yjdoba","txHash":"0x82f33cec81da44e94ef69924bc7d786d3f7856f06c1ef583d266dd1b7f091b82","index":38,"src":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","dst":"","__typename":"EthTransactionCid"},"eventSignature":"OwnershipTransferred(address,address)"} {"data":"{\\"blockHash\\":\\"0x3abc08042fff4e59eaf59c1a9e6bb005d3fc938593f0a14bfce8b1736f810ec2\\",\\"receiptCID\\":\\"bagkacgzappvknoiwyepymknt7dbcfh3jlejpscm3frdd66dwvkvmfwuuuota\\",\\"log\\":{\\"cid\\":\\"bagmqcgzak5xa5kdm3sjuvm3un77ll7oz2degukktjargydrj4fayhimdfo3a\\",\\"ipldBlock\\":\\"0xf882822080b87df87b94b06e6db9288324738f04fcaac910f5a60102c1f8f863a08be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d480\\"}}"} 1
|
1 0x38b33ffb7fc3e0a540ff837cbb8eebd34ad039375d6aa71a6732ae350a2a6e04 130 0xD07Ed0eB708Cb7A660D22f2Ddf7b8C19c7bf1F69 OwnershipTransferred {"previousOwner":"0x0000000000000000000000000000000000000000","newOwner":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x","tx":{"cid":"bagjqcgzahczt7637ypqkkqh7qn6lxdxl2nfnaojxlvvkogthgkxdkcrknyca","txHash":"0x38b33ffb7fc3e0a540ff837cbb8eebd34ad039375d6aa71a6732ae350a2a6e04","index":19,"src":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","dst":"","__typename":"EthTransactionCid"},"eventSignature":"OwnershipTransferred(address,address)"} {"data":"{\\"blockHash\\":\\"0xa5c68e0b9fe8e2e37eeae4c89297c62a688ca3f6b611dcbd1fce2cba67d049a6\\",\\"receiptCID\\":\\"bagkacgza2kim2ps4wbitho6rypgto2or3wmlv23exss5etuqrdhut5nrkjvq\\",\\"log\\":{\\"cid\\":\\"bagmqcgzahsekigljws2wv4b7nfa7noghcwf4goa7tbhglqgftu5ycnzxcbbq\\",\\"ipldBlock\\":\\"0xf882822080b87df87b94d07ed0eb708cb7a660d22f2ddf7b8c19c7bf1f69f863a08be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d480\\"}}"} 1
|
||||||
2 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 433 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaz22koutltuxcphbuc72dcdt6xuqr2e3mk4w75xksg2zzqaynbmoa\\",\\"ipldBlock\\":\\"0xf87f30b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 2
|
|
||||||
3 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 434 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0xdd77c46f6a736e44f19d33c56378a607fe3868a8c1a0866951beab5c9abc9aab","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0xdd77c46f6a736e44f19d33c56378a607fe3868a8c1a0866951beab5c9abc9aab"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaflsnlinnufdz4ipp7vhrvg4gggvptx7ringzkwjfsrkw5bstou7a\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a0dd77c46f6a736e44f19d33c56378a607fe3868a8c1a0866951beab5c9abc9aaba00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 2
|
|
||||||
4 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 435 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 2
|
|
||||||
5 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 436 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x501b05f326e247749a9ee05e173a4b32508afcf85ec6dbb26a6cbb2a4f2e8671","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x501b05f326e247749a9ee05e173a4b32508afcf85ec6dbb26a6cbb2a4f2e8671"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzalcfjovtx7akikb4dhhu3i65pym47rdy3rys6d7trlfdzmr53us2a\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a0501b05f326e247749a9ee05e173a4b32508afcf85ec6dbb26a6cbb2a4f2e8671a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 2
|
|
||||||
6 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 437 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 2
|
|
||||||
7 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 438 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x0b73fffe472959ca14f2bfa56de755ad570d80daaf8eb935ac5e60578d9cdf6e","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x0b73fffe472959ca14f2bfa56de755ad570d80daaf8eb935ac5e60578d9cdf6e"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaehy7vjkfidari3wc72kp3baac2w5zjfcmt4wvz6bs4mgkpjrlnta\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a00b73fffe472959ca14f2bfa56de755ad570d80daaf8eb935ac5e60578d9cdf6ea00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 2
|
|
||||||
8 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 439 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 2
|
|
||||||
9 0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9 440 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x8276afdf1db4e6957dd6e50fb3e6ddb56594c9adcff5403706515b9eab719f27","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x8276afdf1db4e6957dd6e50fb3e6ddb56594c9adcff5403706515b9eab719f27"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzatcmy65cgyyyxr2tx2gyyjtp6panzzph7e4ia6a4an5ecwnkpdpuq","txHash":"0x98998f7446c63178ea77d1b184cdfe781b9cbcff27100f03806f482b354f1be9","index":136,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"receiptCID\\":\\"bagkacgza7njxwiac6p4vxcmw5gnyxs32bum5jeq6k3j7xxyzaqm7gcrw6hwa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaqbsfupctztrjxngvfcntxi5c4pdee5sh46wmtlbs5sbbqbplcoiq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a08276afdf1db4e6957dd6e50fb3e6ddb56594c9adcff5403706515b9eab719f27a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 2
|
|
||||||
10 0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff 271 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0x50f01432A375DcDEa074957154e4F8d1aEB4177d"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x00000000000000000000000050f01432a375dcdea074957154e4f8d1aeb4177d"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzasmazd2yetmooddsywlaac6q4gij3wue32vdjvtj3fnwb77eilh7q","txHash":"0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff","index":296,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e\\",\\"receiptCID\\":\\"bagkacgzaiwyyw2llnh3rwbyep42qkqyftchkkppb5qj5f4u6ltdz2cl5kcaa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzadn3fcrvtf5wwsqprt4qjdxll76kn7teshumu3rmosxai55l3qysq\\",\\"ipldBlock\\":\\"0xf87f30b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a000000000000000000000000050f01432a375dcdea074957154e4f8d1aeb4177da0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 3
|
|
||||||
11 0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff 272 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x5be61e7fb5d5175135aaa6b232f13d9b22a229113638cdc0bac78221ff9c9aa0","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x5be61e7fb5d5175135aaa6b232f13d9b22a229113638cdc0bac78221ff9c9aa0"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzasmazd2yetmooddsywlaac6q4gij3wue32vdjvtj3fnwb77eilh7q","txHash":"0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff","index":296,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e\\",\\"receiptCID\\":\\"bagkacgzaiwyyw2llnh3rwbyep42qkqyftchkkppb5qj5f4u6ltdz2cl5kcaa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaq5l7ow4vbidbo3p2djy5qy4mprqyir4dmol2uqeyvxc7fxfl4kvq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a05be61e7fb5d5175135aaa6b232f13d9b22a229113638cdc0bac78221ff9c9aa0a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 3
|
|
||||||
12 0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff 273 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0x50f01432A375DcDEa074957154e4F8d1aEB4177d"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x00000000000000000000000050f01432a375dcdea074957154e4f8d1aeb4177d"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzasmazd2yetmooddsywlaac6q4gij3wue32vdjvtj3fnwb77eilh7q","txHash":"0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff","index":296,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e\\",\\"receiptCID\\":\\"bagkacgzaiwyyw2llnh3rwbyep42qkqyftchkkppb5qj5f4u6ltdz2cl5kcaa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaas5munc2du7d2ipgyxqsa7reeueczkcfyrh5zjjesllsxatj3mgq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a000000000000000000000000050f01432a375dcdea074957154e4f8d1aeb4177da0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 3
|
|
||||||
13 0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff 274 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x956e5681abbafa25458057b0abaa1a3cec4108d2289954836d0c7f5b37fd6580","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x956e5681abbafa25458057b0abaa1a3cec4108d2289954836d0c7f5b37fd6580"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzasmazd2yetmooddsywlaac6q4gij3wue32vdjvtj3fnwb77eilh7q","txHash":"0x930191eb049b1ce18e58b2c0017a1c3213bb509bd5469acd3b2b6c1ffc8859ff","index":296,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e\\",\\"receiptCID\\":\\"bagkacgzaiwyyw2llnh3rwbyep42qkqyftchkkppb5qj5f4u6ltdz2cl5kcaa\\",\\"log\\":{\\"cid\\":\\"bagmqcgzagp47k6p3tgrom3adpx6jvr45vne2edtejaenqggtxjjfqramcmea\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a0956e5681abbafa25458057b0abaa1a3cec4108d2289954836d0c7f5b37fd6580a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 3
|
|
||||||
14 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 507 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xBc89f39d47BF0f67CA1e0C7aBBE3236F454f748a"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748a"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgzagf7jx3lguaponolmnsjyxm2mhpkaroghk26roi7okwglucjtjs4q\\",\\"ipldBlock\\":\\"0xf87f30b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748aa0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 4
|
|
||||||
15 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 508 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0xdb00d9ee49d48ca5077597917bf50d84d2671b16a94c95fa4fa5be69bc50c03a","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0xdb00d9ee49d48ca5077597917bf50d84d2671b16a94c95fa4fa5be69bc50c03a"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgzatttg7cjphkpc46klxy32jr4vfj6lxo7573nz3rob6dvnq7magsoa\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a0db00d9ee49d48ca5077597917bf50d84d2671b16a94c95fa4fa5be69bc50c03aa00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 4
|
|
||||||
16 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 509 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xBc89f39d47BF0f67CA1e0C7aBBE3236F454f748a"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748a"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgza2g5np2s2ffmppacclx3gwmrjeumoi5c44l6lt64ekctavu5f356a\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748aa0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 4
|
|
||||||
17 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 510 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x33dc7a4e6362711b3cbdc90edcb9a621ed5c2ba73eb4adbf3e90cc21764d550d","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x33dc7a4e6362711b3cbdc90edcb9a621ed5c2ba73eb4adbf3e90cc21764d550d"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgzamjreuppb5xkmjdelhahazmb54mzykjufxj4fvo42u26iqxuxpzdq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a033dc7a4e6362711b3cbdc90edcb9a621ed5c2ba73eb4adbf3e90cc21764d550da00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 4
|
|
||||||
18 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 511 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xBc89f39d47BF0f67CA1e0C7aBBE3236F454f748a"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748a"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgza2g5np2s2ffmppacclx3gwmrjeumoi5c44l6lt64ekctavu5f356a\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748aa0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 4
|
|
||||||
19 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 512 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0xdef5c249e7975deeacae0568ccd7ad10f4b482c4ef3476bf448ff9bb6167731f","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0xdef5c249e7975deeacae0568ccd7ad10f4b482c4ef3476bf448ff9bb6167731f"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaeokcjndceushmyfhdkag7fwkg25knbwoxjxqlqhjlrkgmhjj27hq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a0def5c249e7975deeacae0568ccd7ad10f4b482c4ef3476bf448ff9bb6167731fa00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 4
|
|
||||||
20 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 513 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xBc89f39d47BF0f67CA1e0C7aBBE3236F454f748a"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748a"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgza2g5np2s2ffmppacclx3gwmrjeumoi5c44l6lt64ekctavu5f356a\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748aa0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 4
|
|
||||||
21 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 514 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x165892f97103f95276884abea5e604985437687a8e5b35ac4428098f69c66a9f","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x165892f97103f95276884abea5e604985437687a8e5b35ac4428098f69c66a9f"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanwfms4swgcarbwfosr7uhmyxsefofusyj6m2oyoxy54zldewkeda\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a0165892f97103f95276884abea5e604985437687a8e5b35ac4428098f69c66a9fa00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 4
|
|
||||||
22 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 515 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xBc89f39d47BF0f67CA1e0C7aBBE3236F454f748a"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748a"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgza2g5np2s2ffmppacclx3gwmrjeumoi5c44l6lt64ekctavu5f356a\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748aa0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 4
|
|
||||||
23 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 516 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x4e47d3592c7c70485bf59f3aae389fbc82455da11000f53ac0665c5e343c8e14","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x4e47d3592c7c70485bf59f3aae389fbc82455da11000f53ac0665c5e343c8e14"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgza5yzqveeeqvq4wabjxyulanz6ynqe2vhjhwplkff4xjlwkjve3cta\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a04e47d3592c7c70485bf59f3aae389fbc82455da11000f53ac0665c5e343c8e14a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 4
|
|
||||||
24 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 517 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xBc89f39d47BF0f67CA1e0C7aBBE3236F454f748a"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748a"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgza2g5np2s2ffmppacclx3gwmrjeumoi5c44l6lt64ekctavu5f356a\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000bc89f39d47bf0f67ca1e0c7abbe3236f454f748aa0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 4
|
|
||||||
25 0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed 518 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x16a1ef186d11b33d747c8c44fc8bf3445db567cd5ab29d9e2c1c81781a51647a","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x16a1ef186d11b33d747c8c44fc8bf3445db567cd5ab29d9e2c1c81781a51647a"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzard4ovbngn6f46s7hqbcjmymigu2pclf3kttjywdwc62mfdi24dwq","txHash":"0x88f8ea85a66f8bcf4be780449661883534f12cbb54e69c587617b4c28d1ae0ed","index":193,"src":"0x19c49117a8167296cAF5D23Ab48e355ec1c8bE8B","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"receiptCID\\":\\"bagkacgza756voltxaaftxraxkdjhuh6jh57zla6mqkunpiajivf477kkoleq\\",\\"log\\":{\\"cid\\":\\"bagmqcgzagwxahowqxuwrld5k2yr5vzhkoelh7hu46dpvctllikaodxbn5yyq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a016a1ef186d11b33d747c8c44fc8bf3445db567cd5ab29d9e2c1c81781a51647aa00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 4
|
|
||||||
26 0x6e2401fdf1301a0700ab604be31485a5a2e76b1a781ec3a4eff1e8100db80719 118 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0x8C38B6212D6A78EB7a2DA7E204fBfe003903CF47"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x0000000000000000000000008c38b6212d6a78eb7a2da7e204fbfe003903cf47"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzanysad7prganaoaflmbf6gfefuwroo2y2papmhjhp6hubadnya4mq","txHash":"0x6e2401fdf1301a0700ab604be31485a5a2e76b1a781ec3a4eff1e8100db80719","index":56,"src":"0xE8D848debB3A3e12AA815b15900c8E020B863F31","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0xafb470605fd86995175c2bb07ed62d9f78d1debff33ce2fc6f8d5f07a9ebeca2\\",\\"receiptCID\\":\\"bagkacgzaklu3ddgwwsmemfw5b2wgfs6c62euf233o3tslufku4u2v4bdt7za\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaja54iaazd37cfk6pkqnkidfyguloff4er2e57oavnessaunweyma\\",\\"ipldBlock\\":\\"0xf87f30b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a00000000000000000000000008c38b6212d6a78eb7a2da7e204fbfe003903cf47a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 5
|
|
||||||
27 0x6e2401fdf1301a0700ab604be31485a5a2e76b1a781ec3a4eff1e8100db80719 119 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 MemberStatusUpdated {"entity":"0x1c27f716f8d8b62fd373e4f08eb48277c22fbb3b3d146ba67313ab3b6d046fd0","isMember":true} {"topics":["0x88e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2","0x1c27f716f8d8b62fd373e4f08eb48277c22fbb3b3d146ba67313ab3b6d046fd0"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzanysad7prganaoaflmbf6gfefuwroo2y2papmhjhp6hubadnya4mq","txHash":"0x6e2401fdf1301a0700ab604be31485a5a2e76b1a781ec3a4eff1e8100db80719","index":56,"src":"0xE8D848debB3A3e12AA815b15900c8E020B863F31","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"MemberStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0xafb470605fd86995175c2bb07ed62d9f78d1debff33ce2fc6f8d5f07a9ebeca2\\",\\"receiptCID\\":\\"bagkacgzaklu3ddgwwsmemfw5b2wgfs6c62euf233o3tslufku4u2v4bdt7za\\",\\"log\\":{\\"cid\\":\\"bagmqcgzagx4cimqpipdrqbxwlw44tfvzedutvmqk4euok6d4n3ge77r2xloq\\",\\"ipldBlock\\":\\"0xf87f31b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a088e1b1a43f3edcb9afe941dfea296f5bc32fab715b5fc9aa101ec26d87d2e8a2a01c27f716f8d8b62fd373e4f08eb48277c22fbb3b3d146ba67313ab3b6d046fd0a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 5
|
|
||||||
28 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 225 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaz22koutltuxcphbuc72dcdt6xuqr2e3mk4w75xksg2zzqaynbmoa\\",\\"ipldBlock\\":\\"0xf87f30b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 6
|
|
||||||
29 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 226 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 PhisherStatusUpdated {"entity":"0xd03b69864961ea513339c2896c365ffde0e6620a1ab832d93c6656f8ce6f988e","isPhisher":true} {"topics":["0x9d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138b","0xd03b69864961ea513339c2896c365ffde0e6620a1ab832d93c6656f8ce6f988e"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"PhisherStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgza2uylmeipltns5rcegmzev2dtcpm3yf7exr7azelvmmc45p7en3na\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a09d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138ba0d03b69864961ea513339c2896c365ffde0e6620a1ab832d93c6656f8ce6f988ea00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 6
|
|
||||||
30 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 227 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 6
|
|
||||||
31 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 228 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 PhisherStatusUpdated {"entity":"0xb3beb6867a4bef1f11b65e036b831cd3b81e74898005c13110e0539fc74e8183","isPhisher":true} {"topics":["0x9d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138b","0xb3beb6867a4bef1f11b65e036b831cd3b81e74898005c13110e0539fc74e8183"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"PhisherStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgza23km44tuxt7uhtvhagfn4imaoctdxsvobpdgqtjpunsd7gk3owwq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a09d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138ba0b3beb6867a4bef1f11b65e036b831cd3b81e74898005c13110e0539fc74e8183a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 6
|
|
||||||
32 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 229 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 6
|
|
||||||
33 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 230 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 PhisherStatusUpdated {"entity":"0xed6ad0a79ec0ad3e559cf0f958d9e28c6e6bf6be025a8249a975c9a8e2180acf","isPhisher":true} {"topics":["0x9d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138b","0xed6ad0a79ec0ad3e559cf0f958d9e28c6e6bf6be025a8249a975c9a8e2180acf"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"PhisherStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzatns5jnxezocu52ibouvcladwphpkervyibz35llxy4kxra5kqrxq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a09d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138ba0ed6ad0a79ec0ad3e559cf0f958d9e28c6e6bf6be025a8249a975c9a8e2180acfa00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 6
|
|
||||||
34 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 231 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 6
|
|
||||||
35 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 232 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 PhisherStatusUpdated {"entity":"0x8f9e6c0c3630ec9bccfb22c903753257d2352a9800255daafcf1665ed3d4be45","isPhisher":true} {"topics":["0x9d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138b","0x8f9e6c0c3630ec9bccfb22c903753257d2352a9800255daafcf1665ed3d4be45"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"PhisherStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzaeb4dn6y2qmnizhopkyr7poewd66gm2brx76cskal6kv5pn55hukq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a09d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138ba08f9e6c0c3630ec9bccfb22c903753257d2352a9800255daafcf1665ed3d4be45a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 6
|
|
||||||
36 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 233 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 6
|
|
||||||
37 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 234 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 PhisherStatusUpdated {"entity":"0x895499123a28e797f284b94560fcc346a421533cb3ed9d4373293d533849e523","isPhisher":true} {"topics":["0x9d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138b","0x895499123a28e797f284b94560fcc346a421533cb3ed9d4373293d533849e523"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"PhisherStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzapdolzcaiqir2ankq2of4kdts5spg7ov5ofkgqora47u6kmpijwza\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a09d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138ba0895499123a28e797f284b94560fcc346a421533cb3ed9d4373293d533849e523a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 6
|
|
||||||
38 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 235 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 DelegationTriggered {"principal":"0xDdb18b319BE3530560eECFF962032dFAD88212d4","agent":"0xDdb18b319BE3530560eECFF962032dFAD88212d4"} {"topics":["0x185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960","0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4"],"data":"0x000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"DelegationTriggered(address,address)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzanj72wfbfvqby3dvz3jnh5nwstmvl3nlm6kxrkgfio7z643s2qesq\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a0185d11175440fcb6458fbc1889b02953452539ed80ad1da781a5449500f6d960a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4a0000000000000000000000000ddb18b319be3530560eecff962032dfad88212d4\\"}}"} 6
|
|
||||||
39 0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3 236 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 PhisherStatusUpdated {"entity":"0x6d99b9b8f38c764f028cc564a69e4aa3c0d94fd4df0a9b0aab23cec3cfa03426","isPhisher":true} {"topics":["0x9d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138b","0x6d99b9b8f38c764f028cc564a69e4aa3c0d94fd4df0a9b0aab23cec3cfa03426"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001","tx":{"cid":"bagjqcgzam2xbu7uh235yw6i73gfhwxyac2jge37oze7xmb7jix6yiugi7hrq","txHash":"0x66ae1a7e87d6fb8b791fd98a7b5f001692626feec93f7607e945fd8450c8f9e3","index":438,"src":"0xFDEa65C8e26263F6d9A1B5de9555D2931A33b825","dst":"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8","__typename":"EthTransactionCid"},"eventSignature":"PhisherStatusUpdated(string,bool)"} {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"receiptCID\\":\\"bagkacgzaickyui2bivfkwglvhlgs3dzbgzllvitvssccwsyg6evimm4hfaga\\",\\"log\\":{\\"cid\\":\\"bagmqcgzak4f2sns3dh6lmajwdimphm2h6rj4lqobhu2hrjndtzrkabhywuha\\",\\"ipldBlock\\":\\"0xf87f20b87cf87a94b06e6db9288324738f04fcaac910f5a60102c1f8f842a09d3712f4978fc20b17a1dfbcd563f9aded75d05b6019427a9eca23245220138ba06d99b9b8f38c764f028cc564a69e4aa3c0d94fd4df0a9b0aab23cec3cfa03426a00000000000000000000000000000000000000000000000000000000000000001\\"}}"} 6
|
|
||||||
\.
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Data for Name: ipld_block; Type: TABLE DATA; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
COPY public.ipld_block (id, contract_address, cid, kind, data, block_id) FROM stdin;
|
|
||||||
1 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 bafyreigxcduvu2npfat2zunf2su63vmksekmqw6hlq7ijz7kfwvsbjolwe init \\xa2646d657461a4626964782a307842303645364442393238383332343733386630346643414163393130663541363031303243314638646b696e6464696e697466706172656e74a1612ff668657468426c6f636ba263636964a1612f783d626167696163677a61686b366171626270373568667432787674716e6a3432357161786a377a6534667370796b63733734356379786733346262336261636e756d1a00e2e4d1657374617465a0 1
|
|
||||||
2 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 bafyreihshcncfaozkbpybok4scslmi4ogkdsmoo5guctkl3ov5ij4e7ena diff_staged \\xa2646d657461a4626964782a307842303645364442393238383332343733386630346643414163393130663541363031303243314638646b696e646b646966665f73746167656466706172656e74a1612f783b6261667972656967786364757675326e70666174327a756e663273753633766d6b73656b6d717736686c7137696a7a376b66777673626a6f6c776568657468426c6f636ba263636964a1612f783d626167696163677a61666466726e7a32617a766f783332646a7833726a6b377475696a347135686c786a7a78686461636b6d366a747937746371613461636e756d1a00e2fa61657374617465a16869734d656d626572a46c5457543a6b756d617669735f64747275656c5457543a6d6574616d61736b64747275656c5457543a74617976616e6f5f64747275656d5457543a64616e66696e6c61796474727565 2
|
|
||||||
3 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 bafyreidnohfh3z2rgge2z6amrdn33ce66gdusrcwar2kfoig5ijozqo6he diff_staged \\xa2646d657461a4626964782a307842303645364442393238383332343733386630346643414163393130663541363031303243314638646b696e646b646966665f73746167656466706172656e74a1612f783b6261667972656967786364757675326e70666174327a756e663273753633766d6b73656b6d717736686c7137696a7a376b66777673626a6f6c776568657468426c6f636ba263636964a1612f783d626167696163677a616e36727078656534746d34676d7a6763657233797834656e70766f6474707a6e327432626a6a373263626c6b68726e6735627861636e756d1a00e2fef5657374617465a16869734d656d626572a26c5457543a72656b6d61726b736474727565715457543a6f6d6e61746f73686e6977616c6474727565 3
|
|
||||||
4 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 bafyreidhsglp25dozbewxekeb5hueh5q4tu5kupwbn6q7tejtpmnk66qsu diff_staged \\xa2646d657461a4626964782a307842303645364442393238383332343733386630346643414163393130663541363031303243314638646b696e646b646966665f73746167656466706172656e74a1612f783b6261667972656967786364757675326e70666174327a756e663273753633766d6b73656b6d717736686c7137696a7a376b66777673626a6f6c776568657468426c6f636ba263636964a1612f783d626167696163677a616272636d6b6c736435633365677132686c72797067376f706167747675797371616635723271376e75653273746f7a6978626161636e756d1a00e32009657374617465a16869734d656d626572a66d5457543a61666475646c65793064747275656d5457543a666f616d737061636564747275656d5457543a66726f74686369747964747275656f5457543a76756c63616e697a65696f6474727565715457543a6d696b6567757368616e736b796474727565725457543a6c61636f6e69636e6574776f726b6474727565 4
|
|
||||||
5 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 bafyreifocrnaxaj4qod3atzj4ipq3ocjztlydl3gcgmxiilbi4dbd2o2be diff_staged \\xa2646d657461a4626964782a307842303645364442393238383332343733386630346643414163393130663541363031303243314638646b696e646b646966665f73746167656466706172656e74a1612f783b6261667972656967786364757675326e70666174327a756e663273753633766d6b73656b6d717736686c7137696a7a376b66777673626a6f6c776568657468426c6f636ba263636964a1612f783d626167696163677a6176363268617963373362757a6b663234666f79683576726e7435346e64787637366d366f6637647072767071706b706c35737261636e756d1a00e3237b657374617465a16869734d656d626572a1735457543a64656e6e69736f6e6265727472616d6474727565 5
|
|
||||||
6 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 bafyreicls2qpsocxj6yqwb2ujvrchi7zxeynh5qpevfy6o4un4qapwuwdy diff_staged \\xa2646d657461a4626964782a307842303645364442393238383332343733386630346643414163393130663541363031303243314638646b696e646b646966665f73746167656466706172656e74a1612f783b6261667972656967786364757675326e70666174327a756e663273753633766d6b73656b6d717736686c7137696a7a376b66777673626a6f6c776568657468426c6f636ba263636964a1612f783d626167696163677a616434707a33783275677870706b6475776d7672326e6378346761767232713572356c696d63777233676f6c326337636666323471636e756d1a00e87492657374617465a169697350686973686572a66e5457543a6a67686f7374323031306474727565715457543a6a6164656e37323434303030316474727565735457543a6261647361736b39323539333438396474727565735457543a6361737369647930363131343136356474727565735457543a65737472656c6c33313136333633316474727565735457543a6b696e6762656e37313335333833376474727565 6
|
|
||||||
\.
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Data for Name: ipld_status; Type: TABLE DATA; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
COPY public.ipld_status (id, latest_hooks_block_number, latest_checkpoint_block_number, latest_ipfs_block_number) FROM stdin;
|
|
||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
@@ -701,19 +598,6 @@ COPY public.ipld_status (id, latest_hooks_block_number, latest_checkpoint_block_
|
|||||||
--
|
--
|
||||||
|
|
||||||
COPY public.is_member (id, block_hash, block_number, contract_address, key0, value, proof) FROM stdin;
|
COPY public.is_member (id, block_hash, block_number, contract_address, key0, value, proof) FROM stdin;
|
||||||
1 0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038 14875233 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:danfinlay t {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzajz2idgp3mppl3xecw2jiyrdtpqxdsks3l2vayyrhylj2ddrsvf2q\\",\\"ipldBlock\\":\\"0xe2a0203d41e15b233c6d8a6221399699ffc64b2cca7ada26b947d7642b930362ca2001\\"}}}"}
|
|
||||||
2 0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038 14875233 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:metamask t {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzayklkqlq7oyerf7d46p2bnccsqgnj24z5ey5iwnn3nesl5b6t2bba\\",\\"ipldBlock\\":\\"0xe2a0208bb17e9a3a883c386024f8e1a6976a71526c4598fd5577bde1e8e78dc5cceb01\\"}}}"}
|
|
||||||
3 0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038 14875233 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:kumavis_ t {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzac4qmw47e5joqwqb62grydulsl62z6auzi3bpimezqowvedyqfz4a\\",\\"ipldBlock\\":\\"0xe2a020c4db4f66db1cb7f05bfa6518607749beab650a765c80492a458fbef069d21d01\\"}}}"}
|
|
||||||
4 0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038 14875233 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:tayvano_ t {"data":"{\\"blockHash\\":\\"0x28cb16e740cd5d7de869bee2957e7442790e9d774e6e71804a67933c7e628038\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzau2pcjzqad7bvet5tqprkvo75uyfiuiewle3rzgka65xb4msinxxq\\",\\"ipldBlock\\":\\"0xe2a0325a534478c2e78913d54d916517598739b2920691f3cdaa47dd025f4718492401\\"}}}"}
|
|
||||||
5 0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e 14876405 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:rekmarks t {"data":"{\\"blockHash\\":\\"0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgza6bl5chphg5sp2hbmakf3m3hf5i2aqpwniit7fquldl4cyz6rcjyq\\",\\"ipldBlock\\":\\"0xe2a0370e3dd0b59d081149bd02578f68bc8b82b38d83a65eab9c0039330f2f44b1be01\\"}}}"}
|
|
||||||
6 0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e 14876405 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:omnatoshniwal t {"data":"{\\"blockHash\\":\\"0x6fa2fb909c9b386664c224778bf08d7d5c39bf2dd4f414a7fa1056a3c5a6e86e\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzaevw2g7ldqq7u2cifx625hj2mtgpthw2gxo55hi3kfhmirlco27kq\\",\\"ipldBlock\\":\\"0xe2a020099e064c465e189f524b4ea5e1e1f880cc2404d54a5c3820cae1426406e3eb01\\"}}}"}
|
|
||||||
7 0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840 14884873 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:afdudley0 t {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgza4yb2o77os2exgj7ao2gmcycrktszfccus2pgiqayoyesbyv36yuq\\",\\"ipldBlock\\":\\"0xe2a0206f8288d5713c0319b22d7d7871ea9f79da0e2a69c4810045f7f9d8b513c97701\\"}}}"}
|
|
||||||
8 0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840 14884873 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:vulcanizeio t {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgza43rlyrrrvwbxuo4jwrk2aibx2yau2jwubvtkmufdu62ndxti5pla\\",\\"ipldBlock\\":\\"0xe2a020a206b39b5245e291b83d5b8bcad50fdca5196cedf7e717b87ab79b8d983f0701\\"}}}"}
|
|
||||||
9 0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840 14884873 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:laconicnetwork t {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzaqlzj74qpi46z4lepfew43klj5jmyoiuzlhma6o6jozkjybc2lsvq\\",\\"ipldBlock\\":\\"0xe2a020ecd3a96a9329551758da7fdf41b5816885e29b184c3939c13c6ea20206fd2901\\"}}}"}
|
|
||||||
10 0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840 14884873 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:mikegushansky t {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzalgavzfjocdkshzxwlpqmf3azofoz67rvulr5xxuqsvmmuvadwzdq\\",\\"ipldBlock\\":\\"0xe2a0202951bc50ed50810c883cc3f755dabb64394375acece9ea4be99e5a584fe6c901\\"}}}"}
|
|
||||||
11 0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840 14884873 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:foamspace t {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzasy7at57g5wewqtzjlkh6vudbs7wbwx5qw7637fwi5b3nunw54usq\\",\\"ipldBlock\\":\\"0xe2a02029d04f9e7b98346aa9c447decb17659db9af23890b9c70f579a029cdcf593c01\\"}}}"}
|
|
||||||
12 0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840 14884873 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:frothcity t {"data":"{\\"blockHash\\":\\"0x0c44c52e43e8b64343475c70f37dcf01a75a6250017b1d43eda13529bb28b840\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzawvqcds52in2gemhyszayvrl5zfc66up6hcuchxmi3ce4kzi5pweq\\",\\"ipldBlock\\":\\"0xe2a02034ac30337c5c70d2540bb4434e35ce4532a4eab91c852dca23deaacb0e275201\\"}}}"}
|
|
||||||
13 0xafb470605fd86995175c2bb07ed62d9f78d1debff33ce2fc6f8d5f07a9ebeca2 14885755 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:dennisonbertram t {"data":"{\\"blockHash\\":\\"0xafb470605fd86995175c2bb07ed62d9f78d1debff33ce2fc6f8d5f07a9ebeca2\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzaeogthongsys3jydz4jw2sj5t7mqeqbor2qnaium4c5h5v74fqbta\\",\\"ipldBlock\\":\\"0xe19f3fea74c522a79f7db606c382429e0cb363617f45d6fd59cc02a2857144f18801\\"}}}"}
|
|
||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
@@ -722,12 +606,6 @@ COPY public.is_member (id, block_hash, block_number, contract_address, key0, val
|
|||||||
--
|
--
|
||||||
|
|
||||||
COPY public.is_phisher (id, block_hash, block_number, contract_address, key0, value, proof) FROM stdin;
|
COPY public.is_phisher (id, block_hash, block_number, contract_address, key0, value, proof) FROM stdin;
|
||||||
1 0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9 15234194 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:cassidy06114165 t {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzadyh6cl32cgz3rnd65247arv3fnjw7p6uqfcfysof4dksd2illf6q\\",\\"ipldBlock\\":\\"0xe2a0203c2016b922ff7b5efb562ade4ce1790eac49e191d0d6230b261475b1c2eb9b01\\"}}}"}
|
|
||||||
2 0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9 15234194 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:badsask92593489 t {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzaqrrqdxcwdv654m3vpbiafzvjrhrvs7wv5wncbncb665dprx4cnzq\\",\\"ipldBlock\\":\\"0xe2a0204243b96ea0ada3c3ca9668be1e1ab841ee01999a18d1ebebae8ba2d24aa53101\\"}}}"}
|
|
||||||
3 0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9 15234194 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:estrell31163631 t {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzaq25w3xcn7ahsaclw7lvbhv6wmuft6fwll6gs26pfure52vak2oea\\",\\"ipldBlock\\":\\"0xe2a020e7f0d045adaf03aaca32f26b20a70af72062abbdca72eca237efe7fe297a6a01\\"}}}"}
|
|
||||||
4 0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9 15234194 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:kingben71353837 t {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzal4unm5r3ut4fsolqkibsowhada5aixdmjfaubaxamlrxes2t3eza\\",\\"ipldBlock\\":\\"0xe2a0347aeddef1702483d61eca78b85ff35caff4917a18acef04923858e206c58da401\\"}}}"}
|
|
||||||
5 0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9 15234194 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:jaden72440001 t {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzadfup5fbucciy32alz4upntikcijqiqvwcjszkmuuugna26raioca\\",\\"ipldBlock\\":\\"0xe2a03c76ec48ccf04032d7c8463b37c68e68de9a2602967327c3c70f1a15a11f117b01\\"}}}"}
|
|
||||||
6 0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9 15234194 0xB06E6DB9288324738f04fCAAc910f5A60102C1F8 TWT:jghost2010 t {"data":"{\\"blockHash\\":\\"0x1f1f9ddf5435def50e966563a68afc302b1d43b1ead0c15a3b3397a17c452eb9\\",\\"account\\":{\\"address\\":\\"0xB06E6DB9288324738f04fCAAc910f5A60102C1F8\\",\\"storage\\":{\\"cid\\":\\"bagmacgzab5h56mqwe45hy3labtlq5tp7hsquoimrfgx3c2eycghukydumcoq\\",\\"ipldBlock\\":\\"0xe2a03da5b9c90f8be3d46373dc4c983ff2427d64c22470e858e62e5b25dd53ff8c7e01\\"}}}"}
|
|
||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
@@ -747,6 +625,23 @@ COPY public.multi_nonce (id, block_hash, block_number, contract_address, key0, k
|
|||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Data for Name: state; Type: TABLE DATA; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
COPY public.state (id, contract_address, cid, kind, data, block_id) FROM stdin;
|
||||||
|
1 0xD07Ed0eB708Cb7A660D22f2Ddf7b8C19c7bf1F69 bafyreiditadjoj3dtvmwely4okdvsxiqbi5wqz6f4au5avxpwaqpwdnig4 init \\xa2646d657461a4626964782a307844303745643065423730384362374136363044323266324464663762384331396337626631463639646b696e6464696e697466706172656e74a1612ff668657468426c6f636ba263636964a1612f783d626167696163677a6175786469346334373564726f6737786b3474656a66663667666a75697a693777777969357a7069377a79776c757a36716a677461636e756d1a01120f38657374617465a0 1
|
||||||
|
\.
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Data for Name: state_sync_status; Type: TABLE DATA; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
COPY public.state_sync_status (id, latest_indexed_block_number, latest_checkpoint_block_number) FROM stdin;
|
||||||
|
\.
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Data for Name: sync_status; Type: TABLE DATA; Schema: public; Owner: vdbm
|
-- Data for Name: sync_status; Type: TABLE DATA; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -755,6 +650,14 @@ COPY public.sync_status (id, chain_head_block_hash, chain_head_block_number, lat
|
|||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Data for Name: typeorm_metadata; Type: TABLE DATA; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
COPY public.typeorm_metadata (type, database, schema, "table", name, value) FROM stdin;
|
||||||
|
\.
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: _owner_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
-- Name: _owner_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -766,7 +669,7 @@ SELECT pg_catalog.setval('public._owner_id_seq', 1, false);
|
|||||||
-- Name: block_progress_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
-- Name: block_progress_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
|
|
||||||
SELECT pg_catalog.setval('public.block_progress_id_seq', 6, true);
|
SELECT pg_catalog.setval('public.block_progress_id_seq', 1, true);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
@@ -776,46 +679,25 @@ SELECT pg_catalog.setval('public.block_progress_id_seq', 6, true);
|
|||||||
SELECT pg_catalog.setval('public.contract_id_seq', 1, true);
|
SELECT pg_catalog.setval('public.contract_id_seq', 1, true);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: domain_hash_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
SELECT pg_catalog.setval('public.domain_hash_id_seq', 1, false);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: event_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
-- Name: event_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
|
|
||||||
SELECT pg_catalog.setval('public.event_id_seq', 39, true);
|
SELECT pg_catalog.setval('public.event_id_seq', 1, true);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_block_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
SELECT pg_catalog.setval('public.ipld_block_id_seq', 6, true);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_status_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
SELECT pg_catalog.setval('public.ipld_status_id_seq', 1, false);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: is_member_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
-- Name: is_member_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
|
|
||||||
SELECT pg_catalog.setval('public.is_member_id_seq', 13, true);
|
SELECT pg_catalog.setval('public.is_member_id_seq', 1, true);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: is_phisher_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
-- Name: is_phisher_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
|
|
||||||
SELECT pg_catalog.setval('public.is_phisher_id_seq', 6, true);
|
SELECT pg_catalog.setval('public.is_phisher_id_seq', 1, false);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
@@ -832,6 +714,20 @@ SELECT pg_catalog.setval('public.is_revoked_id_seq', 1, false);
|
|||||||
SELECT pg_catalog.setval('public.multi_nonce_id_seq', 1, false);
|
SELECT pg_catalog.setval('public.multi_nonce_id_seq', 1, false);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
SELECT pg_catalog.setval('public.state_id_seq', 1, true);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_sync_status_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
SELECT pg_catalog.setval('public.state_sync_status_id_seq', 1, false);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: sync_status_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
-- Name: sync_status_id_seq; Type: SEQUENCE SET; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -847,14 +743,6 @@ ALTER TABLE ONLY public.contract
|
|||||||
ADD CONSTRAINT "PK_17c3a89f58a2997276084e706e8" PRIMARY KEY (id);
|
ADD CONSTRAINT "PK_17c3a89f58a2997276084e706e8" PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: domain_hash PK_1b2fb63b534a5a1034c9de4af2d; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER TABLE ONLY public.domain_hash
|
|
||||||
ADD CONSTRAINT "PK_1b2fb63b534a5a1034c9de4af2d" PRIMARY KEY (id);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: event PK_30c2f3bbaf6d34a55f8ae6e4614; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
-- Name: event PK_30c2f3bbaf6d34a55f8ae6e4614; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -871,14 +759,6 @@ ALTER TABLE ONLY public.multi_nonce
|
|||||||
ADD CONSTRAINT "PK_31dab24db96d04fbf687ae28b00" PRIMARY KEY (id);
|
ADD CONSTRAINT "PK_31dab24db96d04fbf687ae28b00" PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_block PK_35d483f7d0917b68494f40066ac; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER TABLE ONLY public.ipld_block
|
|
||||||
ADD CONSTRAINT "PK_35d483f7d0917b68494f40066ac" PRIMARY KEY (id);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: _owner PK_3ecb7a5aa92511dde29aa90a070; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
-- Name: _owner PK_3ecb7a5aa92511dde29aa90a070; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -887,6 +767,14 @@ ALTER TABLE ONLY public._owner
|
|||||||
ADD CONSTRAINT "PK_3ecb7a5aa92511dde29aa90a070" PRIMARY KEY (id);
|
ADD CONSTRAINT "PK_3ecb7a5aa92511dde29aa90a070" PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state PK_549ffd046ebab1336c3a8030a12; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.state
|
||||||
|
ADD CONSTRAINT "PK_549ffd046ebab1336c3a8030a12" PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: is_revoked PK_578b81f9905005c7113f7bed9a3; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
-- Name: is_revoked PK_578b81f9905005c7113f7bed9a3; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -903,6 +791,14 @@ ALTER TABLE ONLY public.is_phisher
|
|||||||
ADD CONSTRAINT "PK_753c1da426677f67c51cd98d35e" PRIMARY KEY (id);
|
ADD CONSTRAINT "PK_753c1da426677f67c51cd98d35e" PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: state_sync_status PK_79008eeac54c8204777451693a4; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY public.state_sync_status
|
||||||
|
ADD CONSTRAINT "PK_79008eeac54c8204777451693a4" PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: sync_status PK_86336482262ab8d5b548a4a71b7; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
-- Name: sync_status PK_86336482262ab8d5b548a4a71b7; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -927,14 +823,6 @@ ALTER TABLE ONLY public.block_progress
|
|||||||
ADD CONSTRAINT "PK_c01eea7890543f34821c499e874" PRIMARY KEY (id);
|
ADD CONSTRAINT "PK_c01eea7890543f34821c499e874" PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: ipld_status PK_fda882aed0a0c022b9f4fccdb1c; Type: CONSTRAINT; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
ALTER TABLE ONLY public.ipld_status
|
|
||||||
ADD CONSTRAINT "PK_fda882aed0a0c022b9f4fccdb1c" PRIMARY KEY (id);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: IDX_00a8ca7940094d8552d67c3b72; Type: INDEX; Schema: public; Owner: vdbm
|
-- Name: IDX_00a8ca7940094d8552d67c3b72; Type: INDEX; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -970,6 +858,13 @@ CREATE UNIQUE INDEX "IDX_4bbe5fb40812718baf74cc9a79" ON public.contract USING bt
|
|||||||
CREATE UNIQUE INDEX "IDX_4c753e21652bf260667b3c1fd7" ON public.multi_nonce USING btree (block_hash, contract_address, key0, key1);
|
CREATE UNIQUE INDEX "IDX_4c753e21652bf260667b3c1fd7" ON public.multi_nonce USING btree (block_hash, contract_address, key0, key1);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: IDX_4e2cda4bdccf560c590725a873; Type: INDEX; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX "IDX_4e2cda4bdccf560c590725a873" ON public.state USING btree (cid);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: IDX_53e551bea07ca0f43c6a7a4cbb; Type: INDEX; Schema: public; Owner: vdbm
|
-- Name: IDX_53e551bea07ca0f43c6a7a4cbb; Type: INDEX; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -977,20 +872,6 @@ CREATE UNIQUE INDEX "IDX_4c753e21652bf260667b3c1fd7" ON public.multi_nonce USING
|
|||||||
CREATE INDEX "IDX_53e551bea07ca0f43c6a7a4cbb" ON public.block_progress USING btree (block_number);
|
CREATE INDEX "IDX_53e551bea07ca0f43c6a7a4cbb" ON public.block_progress USING btree (block_number);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: IDX_560b81b666276c48e0b330c22c; Type: INDEX; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX "IDX_560b81b666276c48e0b330c22c" ON public.domain_hash USING btree (block_hash, contract_address);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: IDX_679fe4cab2565b7be29dcd60c7; Type: INDEX; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE INDEX "IDX_679fe4cab2565b7be29dcd60c7" ON public.ipld_block USING btree (block_id, contract_address);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: IDX_9b12e478c35b95a248a04a8fbb; Type: INDEX; Schema: public; Owner: vdbm
|
-- Name: IDX_9b12e478c35b95a248a04a8fbb; Type: INDEX; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -999,10 +880,10 @@ CREATE INDEX "IDX_9b12e478c35b95a248a04a8fbb" ON public.block_progress USING btr
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: IDX_a6953a5fcd777425c6001c1898; Type: INDEX; Schema: public; Owner: vdbm
|
-- Name: IDX_9b8bf5de8cfaed9e63b97340d8; Type: INDEX; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE UNIQUE INDEX "IDX_a6953a5fcd777425c6001c1898" ON public.ipld_block USING btree (cid);
|
CREATE UNIQUE INDEX "IDX_9b8bf5de8cfaed9e63b97340d8" ON public.state USING btree (block_id, contract_address, kind);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
@@ -1012,13 +893,6 @@ CREATE UNIQUE INDEX "IDX_a6953a5fcd777425c6001c1898" ON public.ipld_block USING
|
|||||||
CREATE INDEX "IDX_ad541e3a5a00acd4d422c16ada" ON public.event USING btree (block_id, contract);
|
CREATE INDEX "IDX_ad541e3a5a00acd4d422c16ada" ON public.event USING btree (block_id, contract);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: IDX_b776a4314e7a73aa666ab272d7; Type: INDEX; Schema: public; Owner: vdbm
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE UNIQUE INDEX "IDX_b776a4314e7a73aa666ab272d7" ON public.ipld_block USING btree (block_id, contract_address, kind);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: IDX_c86bf8a9f1c566350c422b7d3a; Type: INDEX; Schema: public; Owner: vdbm
|
-- Name: IDX_c86bf8a9f1c566350c422b7d3a; Type: INDEX; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -1040,6 +914,13 @@ CREATE INDEX "IDX_d3855d762b0f9fcf9e8a707ef7" ON public.event USING btree (block
|
|||||||
CREATE UNIQUE INDEX "IDX_d67dffa77e472e6163e619f423" ON public.is_phisher USING btree (block_hash, contract_address, key0);
|
CREATE UNIQUE INDEX "IDX_d67dffa77e472e6163e619f423" ON public.is_phisher USING btree (block_hash, contract_address, key0);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: IDX_f8cc517e095dc778b3d0717728; Type: INDEX; Schema: public; Owner: vdbm
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE INDEX "IDX_f8cc517e095dc778b3d0717728" ON public.state USING btree (block_id, contract_address);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: event FK_2b0d35d675c4f99751855c45021; Type: FK CONSTRAINT; Schema: public; Owner: vdbm
|
-- Name: event FK_2b0d35d675c4f99751855c45021; Type: FK CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
@@ -1049,11 +930,11 @@ ALTER TABLE ONLY public.event
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: ipld_block FK_6fe551100c8a6d305b9c22ac6f3; Type: FK CONSTRAINT; Schema: public; Owner: vdbm
|
-- Name: state FK_460a61f455747f1b1f1614a5289; Type: FK CONSTRAINT; Schema: public; Owner: vdbm
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER TABLE ONLY public.ipld_block
|
ALTER TABLE ONLY public.state
|
||||||
ADD CONSTRAINT "FK_6fe551100c8a6d305b9c22ac6f3" FOREIGN KEY (block_id) REFERENCES public.block_progress(id) ON DELETE CASCADE;
|
ADD CONSTRAINT "FK_460a61f455747f1b1f1614a5289" FOREIGN KEY (block_id) REFERENCES public.block_progress(id) ON DELETE CASCADE;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
# Checkpoint interval in number of blocks.
|
# Checkpoint interval in number of blocks.
|
||||||
checkpointInterval = 2000
|
checkpointInterval = 2000
|
||||||
|
|
||||||
# IPFS API address (can be taken from the output on running the IPFS daemon).
|
# Enable state creation
|
||||||
# ipfsApiAddr = "/ip4/127.0.0.1/tcp/5001"
|
enableState = true
|
||||||
|
|
||||||
# Boolean to filter logs by contract.
|
# Boolean to filter logs by contract.
|
||||||
filterLogs = true
|
filterLogs = true
|
||||||
@@ -51,3 +51,6 @@
|
|||||||
maxCompletionLagInSecs = 300
|
maxCompletionLagInSecs = 300
|
||||||
jobDelayInMilliSecs = 100
|
jobDelayInMilliSecs = 100
|
||||||
eventsInBatch = 50
|
eventsInBatch = 50
|
||||||
|
blockDelayInMilliSecs = 2000
|
||||||
|
prefetchBlocksInMem = false
|
||||||
|
prefetchBlockCount = 10
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Usage: build-npm-package-local-dependencies.sh <registry-url> <publish-with-this-version>
|
# Usage: build-npm-package-local-dependencies.sh <registry-url> <publish-with-this-version>
|
||||||
# Runs build-npm-package.sh after first fixing up yarn.lock to use a local
|
# Runs build-npm-package.sh after first fixing up yarn.lock to use a local
|
||||||
# npm registry for all packages in a specific scope (currently @cerc-io, @lirewine and @muknsys)
|
# npm registry for all packages in a specific scope (currently @cerc-io and @lirewine)
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
@@ -18,7 +18,7 @@ set -e
|
|||||||
local_npm_registry_url=$1
|
local_npm_registry_url=$1
|
||||||
package_publish_version=$2
|
package_publish_version=$2
|
||||||
# If we need to handle an additional scope, add it to the list below:
|
# If we need to handle an additional scope, add it to the list below:
|
||||||
npm_scopes_to_handle=("@cerc-io" "@lirewine" "@muknsys")
|
npm_scopes_to_handle=("@cerc-io" "@lirewine")
|
||||||
for npm_scope_for_local in ${npm_scopes_to_handle[@]}
|
for npm_scope_for_local in ${npm_scopes_to_handle[@]}
|
||||||
do
|
do
|
||||||
# We need to configure the local registry
|
# We need to configure the local registry
|
||||||
|
|||||||
@@ -1,9 +1,25 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Usage: build-npm-package.sh <registry-url> <publish-with-this-version>
|
# Usage: build-npm-package.sh <registry-url> <publish-with-this-version>
|
||||||
# Note: supply the registry auth token in CERC_NPM_AUTH_TOKEN
|
# Note: supply the registry auth token in CERC_NPM_AUTH_TOKEN
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
|
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "GITEA ACTIONS 1 is: $GITEA_ACTIONS"
|
||||||
|
echo "GITEA ACTIONS 2 is: ${GITEA_ACTIONS}"
|
||||||
|
|
||||||
|
echo "token 1 is: $CERC_NPM_AUTH_TOKEN"
|
||||||
|
echo "token 2 is: ${CERC_NPM_AUTH_TOKEN}"
|
||||||
|
|
||||||
|
if [[ "$GITEA_ACTIONS" = "true" ]]; then
|
||||||
|
echo "WORKS"
|
||||||
|
else
|
||||||
|
echo "WTF"
|
||||||
|
fi
|
||||||
|
|
||||||
if ! [[ $# -eq 1 || $# -eq 2 ]]; then
|
if ! [[ $# -eq 1 || $# -eq 2 ]]; then
|
||||||
echo "Illegal number of parameters" >&2
|
echo "Illegal number of parameters" >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -24,22 +40,24 @@ package_name=$( cat package.json | jq -r .name )
|
|||||||
local_npm_registry_url=$1
|
local_npm_registry_url=$1
|
||||||
npm config set @cerc-io:registry ${local_npm_registry_url}
|
npm config set @cerc-io:registry ${local_npm_registry_url}
|
||||||
npm config set @lirewine:registry ${local_npm_registry_url}
|
npm config set @lirewine:registry ${local_npm_registry_url}
|
||||||
npm config set @muknsys:registry ${local_npm_registry_url}
|
|
||||||
# Workaround bug in npm unpublish where it needs the url to be of the form //<foo> and not http://<foo>
|
# Workaround bug in npm unpublish where it needs the url to be of the form //<foo> and not http://<foo>
|
||||||
local_npm_registry_url_fixed=$( echo ${local_npm_registry_url} | sed -e 's/^http[s]\{0,1\}://')
|
local_npm_registry_url_fixed=$( echo ${local_npm_registry_url} | sed -e 's/^http[s]\{0,1\}://')
|
||||||
npm config set -- ${local_npm_registry_url_fixed}:_authToken ${CERC_NPM_AUTH_TOKEN}
|
npm config set -- ${local_npm_registry_url_fixed}:_authToken ${CERC_NPM_AUTH_TOKEN}
|
||||||
# First check if the version of this package we're trying to build already exists in the registry
|
# First check if the version of this package we're trying to build already exists in the registry
|
||||||
|
# but this line: "jq -r .data.dist.tarball" fails only in gitea, so skip this block
|
||||||
|
if [[ "${GITEA_ACTIONS}" != "true" ]]; then
|
||||||
package_exists=$( yarn info --json ${package_name}@${package_publish_version} 2>/dev/null | jq -r .data.dist.tarball )
|
package_exists=$( yarn info --json ${package_name}@${package_publish_version} 2>/dev/null | jq -r .data.dist.tarball )
|
||||||
if [[ ! -z "$package_exists" && "$package_exists" != "null" ]]; then
|
if [[ ! -z "$package_exists" && "$package_exists" != "null" ]]; then
|
||||||
echo "${package_publish_version} of ${package_name} already exists in the registry"
|
echo "${package_publish_version} of ${package_name} already exists in the registry"
|
||||||
if [[ ${CERC_FORCE_REBUILD} == "true" ]]; then
|
if [[ ${CERC_FORCE_REBUILD} == "true" ]]; then
|
||||||
# Attempt to unpublish the existing package
|
# Attempt to unpublish the existing package
|
||||||
echo "NOTE: unpublishing existing package version since force rebuild is enabled"
|
echo "NOTE: unpublishing existing package version since force rebuild is enabled"
|
||||||
npm unpublish --force ${package_name}@${package_publish_version}
|
npm unpublish --force ${package_name}@${package_publish_version}
|
||||||
else
|
else
|
||||||
echo "skipping build since target version already exists"
|
echo "skipping build since target version already exists"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
echo "Build and publish ${package_name} version ${package_publish_version}"
|
echo "Build and publish ${package_name} version ${package_publish_version}"
|
||||||
yarn install
|
yarn install
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build cerc/eth-api-proxy
|
||||||
|
|
||||||
|
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/eth-api-proxy:local ${build_command_args} ${CERC_REPO_BASE_DIR}/eth-api-proxy
|
||||||
-1
@@ -1,5 +1,4 @@
|
|||||||
from web3.auto import w3
|
from web3.auto import w3
|
||||||
import json
|
|
||||||
import ruamel.yaml as yaml
|
import ruamel.yaml as yaml
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build cerc/keycloak-reg-api
|
||||||
|
|
||||||
|
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/keycloak-reg-api:local ${build_command_args} ${CERC_REPO_BASE_DIR}/keycloak-reg-api
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build cerc/keycloak-reg-ui
|
||||||
|
|
||||||
|
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/keycloak-reg-ui:local ${build_command_args} ${CERC_REPO_BASE_DIR}/keycloak-reg-ui
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Originally from: https://github.com/devcontainers/images/blob/main/src/javascript-node/.devcontainer/Dockerfile
|
# Originally from: https://github.com/devcontainers/images/blob/main/src/javascript-node/.devcontainer/Dockerfile
|
||||||
# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster
|
# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster
|
||||||
ARG VARIANT=16-bullseye
|
ARG VARIANT=18-bullseye
|
||||||
FROM node:${VARIANT}
|
FROM node:${VARIANT}
|
||||||
|
|
||||||
ARG USERNAME=node
|
ARG USERNAME=node
|
||||||
@@ -37,7 +37,7 @@ RUN yarn global add http-server
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN npm install
|
RUN yarn install
|
||||||
|
|
||||||
# Expose port for http
|
# Expose port for http
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build cerc/plugeth-statediff
|
# Build cerc/plugeth-statediff
|
||||||
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
||||||
docker build -t cerc/plugeth-statediff:local ${build_command_args} ${CERC_REPO_BASE_DIR}/plugeth-statediff
|
# This container build currently requires access to private dependencies in gitea
|
||||||
|
# so we check that the necessary access token has been supplied here, then pass it o the build
|
||||||
|
if [[ -z "${CERC_GO_AUTH_TOKEN}" ]]; then
|
||||||
|
echo "ERROR: CERC_GO_AUTH_TOKEN is not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
docker build -t cerc/plugeth-statediff:local ${build_command_args} --build-arg GIT_VDBTO_TOKEN=${CERC_GO_AUTH_TOKEN} ${CERC_REPO_BASE_DIR}/plugeth-statediff
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build cerc/plugeth
|
# Build cerc/plugeth
|
||||||
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
||||||
docker build -t cerc/plugeth:local ${build_command_args} ${CERC_REPO_BASE_DIR}/plugeth
|
# This container build currently requires access to private dependencies in gitea
|
||||||
|
# so we check that the necessary access token has been supplied here, then pass it o the build
|
||||||
|
if [[ -z "${CERC_GO_AUTH_TOKEN}" ]]; then
|
||||||
|
echo "ERROR: CERC_GO_AUTH_TOKEN is not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
docker build -t cerc/plugeth:local ${build_command_args} --build-arg GIT_VDBTO_TOKEN=${CERC_GO_AUTH_TOKEN} ${CERC_REPO_BASE_DIR}/plugeth
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y curl wget gnupg build-essential \
|
||||||
|
&& curl --silent --location https://deb.nodesource.com/setup_18.x | bash - \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y nodejs git busybox jq \
|
||||||
|
&& node -v
|
||||||
|
|
||||||
|
RUN corepack enable \
|
||||||
|
&& yarn --version
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN echo "Building mobymask-v2-watcher-ts" && \
|
||||||
|
yarn && yarn build
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build cerc/watcher-mobymask-v3
|
||||||
|
|
||||||
|
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-mobymask-v3:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/mobymask-v2-watcher-ts
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# TODO: move this into the cerc-io/mobymask-watcher repo
|
# TODO: move this into the cerc-io/mobymask-watcher repo
|
||||||
FROM node:16.17.1-alpine3.16
|
FROM node:18.17.1-alpine3.18
|
||||||
|
|
||||||
RUN apk --update --no-cache add git python3 alpine-sdk
|
RUN apk --update --no-cache add git python3 alpine-sdk
|
||||||
|
|
||||||
@@ -7,8 +7,5 @@ WORKDIR /app
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN echo "Building watcher-ts" && \
|
RUN echo "Building mobymask-watcher-ts" && \
|
||||||
git checkout v0.2.19 && \
|
|
||||||
yarn && yarn build
|
yarn && yarn build
|
||||||
|
|
||||||
WORKDIR /app/packages/mobymask-watcher
|
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
|||||||
# See: https://stackoverflow.com/a/246128/1701505
|
# See: https://stackoverflow.com/a/246128/1701505
|
||||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||||
|
|
||||||
docker build -t cerc/watcher-mobymask:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/watcher-ts
|
docker build -t cerc/watcher-mobymask:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/mobymask-watcher-ts
|
||||||
|
|
||||||
# TODO: add a mechanism to pass two repos into a container rather than the parent directory
|
# TODO: add a mechanism to pass two repos into a container rather than the parent directory
|
||||||
|
|||||||
@@ -50,3 +50,4 @@ cerc/watcher-sushiswap
|
|||||||
cerc/graph-node
|
cerc/graph-node
|
||||||
cerc/sushiswap-subgraphs
|
cerc/sushiswap-subgraphs
|
||||||
cerc/webapp-base
|
cerc/webapp-base
|
||||||
|
cerc/watcher-mobymask-v3
|
||||||
|
|||||||
@@ -32,3 +32,8 @@ lasso
|
|||||||
reth
|
reth
|
||||||
watcher-sushiswap
|
watcher-sushiswap
|
||||||
contract-sushiswap
|
contract-sushiswap
|
||||||
|
graph-node
|
||||||
|
sushiswap-subgraph-v3
|
||||||
|
fixturenet-sushiswap-subgraph-v3
|
||||||
|
watcher-mobymask-v3
|
||||||
|
mobymask-app-v3
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ github.com/cerc-io/laconicd
|
|||||||
github.com/cerc-io/laconic-sdk
|
github.com/cerc-io/laconic-sdk
|
||||||
github.com/cerc-io/laconic-registry-cli
|
github.com/cerc-io/laconic-registry-cli
|
||||||
github.com/cerc-io/laconic-console
|
github.com/cerc-io/laconic-console
|
||||||
github.com/cerc-io/mobymask-watcher
|
github.com/cerc-io/mobymask-watcher-ts
|
||||||
github.com/cerc-io/watcher-ts
|
github.com/cerc-io/watcher-ts
|
||||||
github.com/cerc-io/mobymask-v2-watcher-ts
|
github.com/cerc-io/mobymask-v2-watcher-ts
|
||||||
github.com/cerc-io/MobyMask
|
github.com/cerc-io/MobyMask
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
version: "1.2"
|
version: "1.2"
|
||||||
name: build-support
|
name: build-support
|
||||||
decription: "Build Support Components"
|
description: "Build Support Components"
|
||||||
containers:
|
containers:
|
||||||
- cerc/builder-js
|
- cerc/builder-js
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
version: "1.0"
|
version: "1.0"
|
||||||
name: chain-chunker
|
name: chain-chunker
|
||||||
decription: "Stack to build containers for chain-chunker"
|
description: "Stack to build containers for chain-chunker"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/ipld-eth-state-snapshot@v5
|
- github.com/cerc-io/ipld-eth-state-snapshot@v5
|
||||||
- github.com/cerc-io/eth-statediff-service@v5
|
- github.com/cerc-io/eth-statediff-service@v5
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
version: "1.0"
|
version: "1.0"
|
||||||
name: fixturenet-eth-loaded
|
name: fixturenet-eth-loaded
|
||||||
decription: "Loaded Ethereum Fixturenet"
|
description: "Loaded Ethereum Fixturenet"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/go-ethereum
|
- github.com/cerc-io/go-ethereum
|
||||||
- github.com/cerc-io/tx-spammer
|
- github.com/cerc-io/tx-spammer
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
version: "1.2"
|
version: "1.2"
|
||||||
name: fixturenet-eth-tx
|
name: fixturenet-eth-tx
|
||||||
decription: "Ethereum Fixturenet w/ tx-spammer"
|
description: "Ethereum Fixturenet w/ tx-spammer"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/go-ethereum
|
- github.com/cerc-io/go-ethereum
|
||||||
- github.com/cerc-io/tx-spammer
|
- github.com/cerc-io/tx-spammer
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
version: "1.1"
|
version: "1.1"
|
||||||
name: fixturenet-eth
|
name: fixturenet-eth
|
||||||
decription: "Ethereum Fixturenet"
|
description: "Ethereum Fixturenet"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/go-ethereum
|
- github.com/cerc-io/go-ethereum
|
||||||
- github.com/cerc-io/lighthouse
|
- github.com/cerc-io/lighthouse
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
# Graph-Node Fixturenet
|
|
||||||
|
|
||||||
Experimental
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
version: "1.0"
|
|
||||||
name: fixturenet-graph-node
|
|
||||||
description: "A graph-node fixturenet"
|
|
||||||
repos:
|
|
||||||
- github.com/filecoin-project/lotus
|
|
||||||
- github.com/graphprotocol/graph-node
|
|
||||||
containers:
|
|
||||||
- cerc/lotus
|
|
||||||
- cerc/graph-node
|
|
||||||
pods:
|
|
||||||
- fixturenet-lotus
|
|
||||||
- fixturenet-graph-node
|
|
||||||
@@ -4,6 +4,8 @@ Testing a "Loaded" fixturenet with console.
|
|||||||
|
|
||||||
Instructions for deploying a local Laconic blockchain "fixturenet" for development and testing purposes using laconic-stack-orchestrator.
|
Instructions for deploying a local Laconic blockchain "fixturenet" for development and testing purposes using laconic-stack-orchestrator.
|
||||||
|
|
||||||
|
**Note:** For building some NPMs, access to the @lirewine repositories is required. If you don't have access, see [this tutorial](/docs/laconicd-fixturenet.md) to run this stack
|
||||||
|
|
||||||
## 1. Install Laconic Stack Orchestrator
|
## 1. Install Laconic Stack Orchestrator
|
||||||
Installation is covered in detail [here](https://github.com/cerc-io/stack-orchestrator#user-mode) but if you're on Linux and already have docker installed it should be as simple as:
|
Installation is covered in detail [here](https://github.com/cerc-io/stack-orchestrator#user-mode) but if you're on Linux and already have docker installed it should be as simple as:
|
||||||
```
|
```
|
||||||
@@ -30,24 +32,24 @@ $ export CERC_NPM_AUTH_TOKEN=<my-token>
|
|||||||
|
|
||||||
## 3. Clone required repositories
|
## 3. Clone required repositories
|
||||||
```
|
```
|
||||||
$ laconic-so --stack fixturenet-laconicd setup-repositories
|
$ laconic-so --stack fixturenet-laconic-loaded setup-repositories
|
||||||
```
|
```
|
||||||
## 4. Build the stack's packages and containers
|
## 4. Build the stack's packages and containers
|
||||||
```
|
```
|
||||||
$ laconic-so --stack fixturenet-laconicd build-npms
|
$ laconic-so --stack fixturenet-laconic-loaded build-npms
|
||||||
$ laconic-so --stack fixturenet-laconicd build-containers
|
$ laconic-so --stack fixturenet-laconic-loaded build-containers
|
||||||
```
|
```
|
||||||
## 5. Deploy the stack
|
## 5. Deploy the stack
|
||||||
```
|
```
|
||||||
$ laconic-so --stack fixturenet-laconicd deploy up
|
$ laconic-so --stack fixturenet-laconic-loaded deploy up
|
||||||
```
|
```
|
||||||
Correct operation should be verified by checking the laconicd container's logs with:
|
Correct operation should be verified by checking the laconicd container's logs with:
|
||||||
```
|
```
|
||||||
$ laconic-so --stack fixturenet-laconicd deploy logs
|
$ laconic-so --stack fixturenet-laconic-loaded deploy logs
|
||||||
```
|
```
|
||||||
## 6. Test with the Registry CLI
|
## 6. Test with the Registry CLI
|
||||||
```
|
```
|
||||||
$ laconic-so --stack fixturenet-laconicd deploy exec cli "laconic cns status"
|
$ laconic-so --stack fixturenet-laconic-loaded deploy exec cli "laconic cns status"
|
||||||
```
|
```
|
||||||
## 7. View the laconic console
|
## 7. View the laconic console
|
||||||
Get the URL for the console web app with this command (the port number will be different for each deployment):
|
Get the URL for the console web app with this command (the port number will be different for each deployment):
|
||||||
|
|||||||
@@ -18,6 +18,11 @@ Build the container images:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
laconic-so --stack fixturenet-optimism build-containers
|
laconic-so --stack fixturenet-optimism build-containers
|
||||||
|
|
||||||
|
# If redeploying with changes in the stack containers
|
||||||
|
laconic-so --stack fixturenet-optimism build-containers --force-rebuild
|
||||||
|
|
||||||
|
# If errors are thrown during build, old images used by this stack would have to be deleted
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: this will take >10 mins depending on the specs of your machine, and **requires** 16GB of memory or greater.
|
Note: this will take >10 mins depending on the specs of your machine, and **requires** 16GB of memory or greater.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
version: "1.0"
|
version: "1.0"
|
||||||
name: fixturenet-optimism
|
name: fixturenet-optimism
|
||||||
decription: "Optimism Fixturenet"
|
description: "Optimism Fixturenet"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/go-ethereum
|
- github.com/cerc-io/go-ethereum
|
||||||
- github.com/cerc-io/lighthouse
|
- github.com/cerc-io/lighthouse
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ See `stacks/fixturenet-eth/README.md` for more information.
|
|||||||
* cerc/tx-spammer
|
* cerc/tx-spammer
|
||||||
|
|
||||||
## Deploy the stack
|
## Deploy the stack
|
||||||
|
Note: since some Go dependencies are currently private, `CERC_GO_AUTH_TOKEN` must be set to a valid Gitea access token before running the `build-containers` command.
|
||||||
```
|
```
|
||||||
$ laconic-so --stack fixturenet-plugeth-tx setup-repositories
|
$ laconic-so --stack fixturenet-plugeth-tx setup-repositories
|
||||||
$ laconic-so --stack fixturenet-plugeth-tx build-containers
|
$ laconic-so --stack fixturenet-plugeth-tx build-containers
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
version: "1.2"
|
version: "1.2"
|
||||||
name: fixturenet-plugeth-tx
|
name: fixturenet-plugeth-tx
|
||||||
decription: "plugeth Ethereum Fixturenet w/ tx-spammer"
|
description: "plugeth Ethereum Fixturenet w/ tx-spammer"
|
||||||
repos:
|
repos:
|
||||||
- git.vdb.to/cerc-io/plugeth@statediff
|
- git.vdb.to/cerc-io/plugeth@statediff
|
||||||
- git.vdb.to/cerc-io/plugeth-statediff
|
- git.vdb.to/cerc-io/plugeth-statediff
|
||||||
|
|||||||
@@ -0,0 +1,204 @@
|
|||||||
|
# Fixturenet SushiSwap Subgraph
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack fixturenet-sushiswap-subgraph setup-repositories --pull
|
||||||
|
```
|
||||||
|
|
||||||
|
Checkout to a non-default branch in the cloned repos if required:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Default repo base dir
|
||||||
|
cd ~/cerc
|
||||||
|
|
||||||
|
# Example
|
||||||
|
cd graph-node
|
||||||
|
git checkout <your-branch> && git pull
|
||||||
|
|
||||||
|
# Remove the corresponding docker image if it already exists
|
||||||
|
docker image rm cerc/graph-node:local
|
||||||
|
# Remove any dangling images
|
||||||
|
docker image prune
|
||||||
|
```
|
||||||
|
|
||||||
|
Build the container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack fixturenet-sushiswap-subgraph build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deploy
|
||||||
|
|
||||||
|
Deploy the stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack fixturenet-sushiswap-subgraph deploy --cluster sushigraph up
|
||||||
|
|
||||||
|
# Note: Remove any existing volumes for the cluster for a fresh start
|
||||||
|
```
|
||||||
|
|
||||||
|
After all services have started:
|
||||||
|
|
||||||
|
* Follow `graph-node` logs:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack fixturenet-sushiswap-subgraph deploy --cluster sushigraph logs -f graph-node
|
||||||
|
```
|
||||||
|
|
||||||
|
* Check that the subgraphs have been deployed:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack fixturenet-sushiswap-subgraph deploy --cluster sushigraph logs -f sushiswap-subgraph-v3
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# .
|
||||||
|
# .
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | - Deploying to Graph node http://graph-node:8020/
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | Deployed to http://graph-node:8000/subgraphs/name/sushiswap/v3-lotus/graphql
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 |
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 |
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | Subgraph endpoints:
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | Queries (HTTP): http://graph-node:8000/subgraphs/name/sushiswap/v3-lotus
|
||||||
|
# .
|
||||||
|
# .
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | - Deploying to Graph node http://graph-node:8020/
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | Deployed to http://graph-node:8000/subgraphs/name/sushiswap/blocks/graphql
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 |
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 |
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | Subgraph endpoints:
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | Queries (HTTP): http://graph-node:8000/subgraphs/name/sushiswap/blocks
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 |
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 |
|
||||||
|
# sushigraph-sushiswap-subgraph-v3-1 | Done
|
||||||
|
```
|
||||||
|
|
||||||
|
After `graph-node` has fetched the latest blocks from upstream, use the subgraph (GQL) endpoints for querying:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Find out the mapped host port for the subgraph endpoint
|
||||||
|
laconic-so --stack fixturenet-sushiswap-subgraph deploy --cluster sushigraph port graph-node 8000
|
||||||
|
# 0.0.0.0:HOST_PORT
|
||||||
|
|
||||||
|
# Blocks subgraph endpoint:
|
||||||
|
http://127.0.0.1:<HOST_PORT>/subgraphs/name/sushiswap/blocks/graphql
|
||||||
|
|
||||||
|
# v3 subgraph endpoint:
|
||||||
|
http://127.0.0.1:<HOST_PORT>/subgraphs/name/sushiswap/v3-lotus/graphql
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
* Deploy an ERC20 token:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it sushigraph-sushiswap-v3-periphery-1 yarn hardhat --network docker deploy --tags TestERC20
|
||||||
|
|
||||||
|
# Deploy two tokens and set the addresses to variables TOKEN1_ADDRESS and TOKEN2_ADDRESS
|
||||||
|
export TOKEN1_ADDRESS=<TOKEN1_ADDRESS>
|
||||||
|
export TOKEN2_ADDRESS=<TOKEN2_ADDRESS>
|
||||||
|
```
|
||||||
|
|
||||||
|
* Get contract address of factory deployed:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it sushigraph-sushiswap-v3-core-1 jq -r '.address' /app/deployments/docker/UniswapV3Factory.json
|
||||||
|
|
||||||
|
# Set the address to variable FACTORY_ADDRESS
|
||||||
|
export FACTORY_ADDRESS=<FACTORY_ADDRESS>
|
||||||
|
```
|
||||||
|
|
||||||
|
* Create a pool:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it sushigraph-sushiswap-v3-core-1 pnpm run pool:create:docker --factory $FACTORY_ADDRESS --token0 $TOKEN1_ADDRESS --token1 $TOKEN2_ADDRESS --fee 500
|
||||||
|
|
||||||
|
# Set the created pool address to variable POOL_ADDRESS
|
||||||
|
export POOL_ADDRESS=<POOL_ADDRESS>
|
||||||
|
```
|
||||||
|
|
||||||
|
* Initialize the pool:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it sushigraph-sushiswap-v3-core-1 pnpm run pool:initialize:docker --sqrt-price 4295128939 --pool $POOL_ADDRESS
|
||||||
|
```
|
||||||
|
|
||||||
|
* Set the recipient address to the contract deployer:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export RECIPIENT=0xD375B03bd3A2434A9f675bEC4Ccd68aC5e67C743
|
||||||
|
```
|
||||||
|
|
||||||
|
* Trigger pool `Mint` event:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it sushigraph-sushiswap-v3-core-1 pnpm run pool:mint:docker --pool $POOL_ADDRESS --recipient $RECIPIENT --amount 10
|
||||||
|
```
|
||||||
|
|
||||||
|
* Trigger pool `Burn` event:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it sushigraph-sushiswap-v3-core-1 pnpm run pool:burn:docker --pool $POOL_ADDRESS --amount 10
|
||||||
|
```
|
||||||
|
|
||||||
|
* Query the sushiswap v3-lotus subgraph GQL after running above commands
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
{
|
||||||
|
_meta {
|
||||||
|
block {
|
||||||
|
number
|
||||||
|
}
|
||||||
|
deployment
|
||||||
|
hasIndexingErrors
|
||||||
|
}
|
||||||
|
|
||||||
|
factories {
|
||||||
|
poolCount
|
||||||
|
id
|
||||||
|
}
|
||||||
|
|
||||||
|
pools {
|
||||||
|
id
|
||||||
|
token0 {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
symbol
|
||||||
|
}
|
||||||
|
mints {
|
||||||
|
id
|
||||||
|
owner
|
||||||
|
}
|
||||||
|
burns {
|
||||||
|
id
|
||||||
|
owner
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
|
||||||
|
Stop all the services running in background run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack fixturenet-sushiswap-subgraph deploy --cluster sushigraph down
|
||||||
|
```
|
||||||
|
|
||||||
|
Clear volumes created by this stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List all relevant volumes
|
||||||
|
docker volume ls -q --filter "name=sushigraph"
|
||||||
|
|
||||||
|
# Remove all the listed volumes
|
||||||
|
docker volume rm $(docker volume ls -q --filter "name=sushigraph")
|
||||||
|
|
||||||
|
# WARNING: To avoid refetching the Lotus proof params on the next run,
|
||||||
|
# avoid removing the corresponding volumes
|
||||||
|
|
||||||
|
# To remove volumes that do not contain Lotus params
|
||||||
|
docker volume rm $(docker volume ls -q --filter "name=sushigraph" | grep -v "params$")
|
||||||
|
```
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
version: "1.0"
|
||||||
|
name: fixturenet-sushiswap-subgraph
|
||||||
|
description: "An end-to-end SushiSwap Subgraph stack"
|
||||||
|
repos:
|
||||||
|
# fixturenet-lotus repo
|
||||||
|
- github.com/filecoin-project/lotus
|
||||||
|
# graph-node repo
|
||||||
|
- github.com/graphprotocol/graph-node
|
||||||
|
# sushiswap repos
|
||||||
|
- github.com/cerc-io/sushiswap-v3-core@watcher-ts
|
||||||
|
- github.com/cerc-io/sushiswap-v3-periphery@watcher-ts
|
||||||
|
# sushiswap subgraph repo
|
||||||
|
- github.com/sushiswap/subgraphs
|
||||||
|
containers:
|
||||||
|
# fixturenet-lotus image
|
||||||
|
- cerc/lotus
|
||||||
|
# graph-node image
|
||||||
|
- cerc/graph-node
|
||||||
|
# sushiswap contract deployment images
|
||||||
|
- cerc/sushiswap-v3-core
|
||||||
|
- cerc/sushiswap-v3-periphery
|
||||||
|
# sushiswap subgraphs image
|
||||||
|
- cerc/sushiswap-subgraphs
|
||||||
|
pods:
|
||||||
|
- fixturenet-lotus
|
||||||
|
- graph-node
|
||||||
|
- contract-sushiswap
|
||||||
|
- fixturenet-sushiswap-subgraph-v3
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
# Graph Node
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Clone required repositories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack graph-node setup-repositories --pull
|
||||||
|
```
|
||||||
|
|
||||||
|
Checkout to a non-default branch in the cloned repos if required:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Default repo base dir
|
||||||
|
cd ~/cerc
|
||||||
|
|
||||||
|
# Example
|
||||||
|
cd graph-node
|
||||||
|
git checkout <your-branch> && git pull
|
||||||
|
|
||||||
|
# Remove the corresponding docker image if it already exists
|
||||||
|
docker image rm cerc/graph-node:local
|
||||||
|
# Remove any dangling images
|
||||||
|
docker image prune
|
||||||
|
```
|
||||||
|
|
||||||
|
Build the container images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack graph-node build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create a deployment
|
||||||
|
|
||||||
|
Initialize deployment and create "spec" file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack graph-node deploy init --output graph-node-spec.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
We need to assign fixed ports: `8000` for subgraph GQL endpoint, `8020` for subgraph deployment and `5001` for IPFS. The values can be
|
||||||
|
customized by editing the "spec" file generated by `laconic-so deploy init`.
|
||||||
|
```
|
||||||
|
$ cat graph-node-spec.yml
|
||||||
|
stack: graph-node
|
||||||
|
ports:
|
||||||
|
graph-node:
|
||||||
|
- '8000:8000'
|
||||||
|
- '8001'
|
||||||
|
- '8020:8020'
|
||||||
|
- '8030'
|
||||||
|
ipfs:
|
||||||
|
- '8080'
|
||||||
|
- '4001'
|
||||||
|
- '5001:5001'
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Create deployment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deploy create --spec-file graph-node-spec.yml --deployment-dir graph-node-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
## Start the stack
|
||||||
|
|
||||||
|
Create an env file with the following values to be set before starting the stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Set ETH RPC endpoint the graph node will use
|
||||||
|
|
||||||
|
# Host and port of the ETH RPC endpoint to check before starting graph-node
|
||||||
|
export ETH_RPC_HOST=
|
||||||
|
export ETH_RPC_PORT=
|
||||||
|
|
||||||
|
# The etherum network(s) graph-node will connect to
|
||||||
|
# Set this to a space-separated list of the networks where each entry has the form NAME:URL
|
||||||
|
export ETH_NETWORKS=
|
||||||
|
```
|
||||||
|
|
||||||
|
Example env file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export ETH_RPC_HOST=filecoin.chainup.net
|
||||||
|
export ETH_RPC_PORT=443
|
||||||
|
|
||||||
|
export ETH_NETWORKS=filecoin:https://filecoin.chainup.net/rpc/v1
|
||||||
|
```
|
||||||
|
|
||||||
|
Set the environment variables:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source <PATH_TO_ENV_FILE>
|
||||||
|
```
|
||||||
|
|
||||||
|
Deploy the stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir graph-node-deployment start
|
||||||
|
|
||||||
|
# Note: Remove any existing volumes in the cluster for a fresh start
|
||||||
|
```
|
||||||
|
|
||||||
|
After all services have started, follow `graph-node` logs:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir graph-node-deployment logs -f graph-node
|
||||||
|
```
|
||||||
|
|
||||||
|
Subgraphs can now be deployed to the graph-node.
|
||||||
|
Follow [Deploy the Subgraph](https://github.com/graphprotocol/graph-node/blob/v0.32.0/docs/getting-started.md#24-deploy-the-subgraph) section in graph-node docs for an existing subgraph.
|
||||||
|
|
||||||
|
## Set environment variables
|
||||||
|
|
||||||
|
* The graph-node environment variable `ETHEREUM_REORG_THRESHOLD` can be set in the deployment compose file
|
||||||
|
```bash
|
||||||
|
$ cat graph-node-deployment/compose/docker-compose-graph-node.yml
|
||||||
|
services:
|
||||||
|
graph-node:
|
||||||
|
image: cerc/graph-node:local
|
||||||
|
...
|
||||||
|
environment:
|
||||||
|
...
|
||||||
|
GRAPH_LOG: debug
|
||||||
|
ETHEREUM_REORG_THRESHOLD: 3
|
||||||
|
```
|
||||||
|
Change `ETHEREUM_REORG_THRESHOLD` to desired value
|
||||||
|
|
||||||
|
* To restart graph-node with updated values
|
||||||
|
* Stop the stack first
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir graph-node-deployment stop
|
||||||
|
```
|
||||||
|
* Start the stack again
|
||||||
|
```
|
||||||
|
laconic-so deployment --dir graph-node-deployment start
|
||||||
|
```
|
||||||
|
* To check if environment variable has been updated in graph-node container
|
||||||
|
```bash
|
||||||
|
$ laconic-so deployment --dir graph-node-deployment exec graph-node bash
|
||||||
|
root@dc4d3abe1615:/# echo $ETHEREUM_REORG_THRESHOLD
|
||||||
|
16
|
||||||
|
```
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
|
||||||
|
Stop all the services running in background run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir graph-node-deployment stop
|
||||||
|
```
|
||||||
|
|
||||||
|
Clear volumes created by this stack:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir graph-node-deployment stop --delete-volumes
|
||||||
|
```
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
# Deploying Subgraph
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
We will use the [ethereum-gravatar](https://github.com/graphprotocol/graph-tooling/tree/%40graphprotocol/graph-cli%400.58.0/examples/ethereum-gravatar) example subgraph from `graphprotocol/graph-tooling` repo
|
||||||
|
|
||||||
|
- Clone the repo
|
||||||
|
```bash
|
||||||
|
git clone git@github.com:graphprotocol/graph-tooling.git
|
||||||
|
|
||||||
|
cd graph-tooling
|
||||||
|
```
|
||||||
|
|
||||||
|
- Install dependencies
|
||||||
|
```bash
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
- Change directory to example-subgraph
|
||||||
|
```bash
|
||||||
|
cd examples/ethereum-gravatar
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deploy
|
||||||
|
|
||||||
|
The following steps should be similar for every subgraph
|
||||||
|
|
||||||
|
- Change the network and address in `subgraph.yaml`
|
||||||
|
```yaml
|
||||||
|
...
|
||||||
|
dataSources:
|
||||||
|
- kind: ethereum/contract
|
||||||
|
name: Gravity
|
||||||
|
network: <NETWORK_NAME>
|
||||||
|
source:
|
||||||
|
address: '<CONTRACT_ADDRESS>'
|
||||||
|
abi: Gravity
|
||||||
|
startBlock: <START_BLOCK>
|
||||||
|
...
|
||||||
|
```
|
||||||
|
- `CONTRACT_ADDRESS` is the address of the deployed contract on the desired network
|
||||||
|
- `START_BLOCK` is the block number after which we want to process events
|
||||||
|
- `NETWORK_NAME` is the name of the network specified when deploying graph-node
|
||||||
|
- When deploying graph-node `ETH_NETWORKS` env is set to a space-separated list of the networks where each entry has the form `NAME:URL`
|
||||||
|
- The `NAME` can be used in subgraph to specify which network to use
|
||||||
|
- More details can be seen in [Start the stack](./README.md#start-the-stack) section
|
||||||
|
|
||||||
|
- Build the subgraph
|
||||||
|
```bash
|
||||||
|
pnpm codegen
|
||||||
|
pnpm build
|
||||||
|
```
|
||||||
|
|
||||||
|
- Create and deploy the subgraph
|
||||||
|
```bash
|
||||||
|
pnpm graph create example --node <GRAPH_NODE_DEPLOY_ENDPOINT>
|
||||||
|
|
||||||
|
pnpm graph deploy example --ipfs <GRAPH_NODE_IPFS_ENDPOINT> --node <GRAPH_NODE_DEPLOY_ENDPOINT>
|
||||||
|
```
|
||||||
|
- `GRAPH_NODE_DEPLOY_ENDPOINT` and `GRAPH_NODE_IPFS_ENDPOINT` will be available after graph-node has been deployed
|
||||||
|
- More details can be seen in [Create a deployment](./README.md#create-a-deployment) section
|
||||||
|
|
||||||
|
- The subgraph GQL endpoint will be seen after deploy command runs successfully
|
||||||
|
|
||||||
|
- To remove the subgraph
|
||||||
|
```bash
|
||||||
|
pnpm graph remove --node <GRAPH_NODE_DEPLOY_ENDPOINT> example
|
||||||
|
```
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
version: "1.0"
|
||||||
|
name: graph-node
|
||||||
|
description: "Stack for running graph-node"
|
||||||
|
repos:
|
||||||
|
- github.com/graphprotocol/graph-node
|
||||||
|
containers:
|
||||||
|
- cerc/graph-node
|
||||||
|
pods:
|
||||||
|
- graph-node
|
||||||
@@ -17,7 +17,7 @@ $ laconic-so --stack mainnet-eth build-containers
|
|||||||
## Create a deployment
|
## Create a deployment
|
||||||
|
|
||||||
```
|
```
|
||||||
$ laconic-so --stack mainnet-eth deploy init --output mainnet-eth-spec.yml
|
$ laconic-so --stack mainnet-eth deploy init --map-ports-to-host any-same --output mainnet-eth-spec.yml
|
||||||
$ laconic-so deploy create --spec-file mainnet-eth-spec.yml --deployment-dir mainnet-eth-deployment
|
$ laconic-so deploy create --spec-file mainnet-eth-spec.yml --deployment-dir mainnet-eth-deployment
|
||||||
```
|
```
|
||||||
## Start the stack
|
## Start the stack
|
||||||
@@ -73,7 +73,7 @@ After deleting the volumes, any subsequent re-start will begin chain sync from c
|
|||||||
|
|
||||||
## Ports
|
## Ports
|
||||||
It is usually necessary to expose certain container ports on one or more the host's addresses to allow incoming connections.
|
It is usually necessary to expose certain container ports on one or more the host's addresses to allow incoming connections.
|
||||||
Any ports defined in the Docker compose file are exposed by default with random port assignments, but the values can be
|
Any ports defined in the Docker compose file are exposed by default with random port assignments, bound to "any" interface (IP address 0.0.0.0), but the port mappings can be
|
||||||
customized by editing the "spec" file generated by `laconic-so deploy init`.
|
customized by editing the "spec" file generated by `laconic-so deploy init`.
|
||||||
|
|
||||||
In this example, ports `8545` and `5052` have been assigned to a specific addresses/port combination on the host, while
|
In this example, ports `8545` and `5052` have been assigned to a specific addresses/port combination on the host, while
|
||||||
@@ -92,7 +92,15 @@ volumes:
|
|||||||
mainnet_eth_geth_1_data: ./data/mainnet_eth_geth_1_data
|
mainnet_eth_geth_1_data: ./data/mainnet_eth_geth_1_data
|
||||||
mainnet_eth_lighthouse_1_data: ./data/mainnet_eth_lighthouse_1_data
|
mainnet_eth_lighthouse_1_data: ./data/mainnet_eth_lighthouse_1_data
|
||||||
```
|
```
|
||||||
|
In addition, a stack-wide port mapping "recipe" can be applied at the time the
|
||||||
|
`laconic-so deploy init` command is run, by supplying the desired recipe with the `--map-ports-to-host` option. The following recipes are supported:
|
||||||
|
| Recipe | Host Port Mapping |
|
||||||
|
|--------|-------------------|
|
||||||
|
| any-variable-random | Bind to 0.0.0.0 using a random port assigned at start time (default) |
|
||||||
|
| localhost-same | Bind to 127.0.0.1 using the same port number as exposed by the containers |
|
||||||
|
| any-same | Bind to 0.0.0.0 using the same port number as exposed by the containers |
|
||||||
|
| localhost-fixed-random | Bind to 127.0.0.1 using a random port number selected at the time the command is run (not checked for already in use)|
|
||||||
|
| any-fixed-random | Bind to 0.0.0.0 using a random port number selected at the time the command is run (not checked for already in use) |
|
||||||
## Data volumes
|
## Data volumes
|
||||||
Container data volumes are bind-mounted to specified paths in the host filesystem.
|
Container data volumes are bind-mounted to specified paths in the host filesystem.
|
||||||
The default setup (generated by `laconic-so deploy init`) places the volumes in the `./data` subdirectory of the deployment directory:
|
The default setup (generated by `laconic-so deploy init`) places the volumes in the `./data` subdirectory of the deployment directory:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright © 2023 Cerc
|
# Copyright © 2023 Vulcanize
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
from secrets import token_hex
|
from secrets import token_hex
|
||||||
|
|
||||||
|
|
||||||
def init(ctx):
|
def init(ctx):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ def setup(ctx):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def create(ctx):
|
def create(ctx, extra_args):
|
||||||
# Generate the JWT secret and save to its config file
|
# Generate the JWT secret and save to its config file
|
||||||
secret = token_hex(32)
|
secret = token_hex(32)
|
||||||
jwt_file_path = ctx.deployment_dir.joinpath("data", "mainnet_eth_config_data", "jwtsecret")
|
jwt_file_path = ctx.deployment_dir.joinpath("data", "mainnet_eth_config_data", "jwtsecret")
|
||||||
|
|||||||
@@ -1,15 +1,23 @@
|
|||||||
version: "1.1"
|
version: "1.2"
|
||||||
name: mainnet-eth
|
name: mainnet-eth
|
||||||
decription: "Ethereum Mainnet"
|
description: "Ethereum Mainnet"
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/go-ethereum
|
- github.com/cerc-io/go-ethereum
|
||||||
- github.com/cerc-io/lighthouse
|
- github.com/cerc-io/lighthouse
|
||||||
- github.com/dboreham/foundry
|
- github.com/dboreham/foundry
|
||||||
|
- git.vdb.to/cerc-io/keycloak-reg-api
|
||||||
|
- git.vdb.to/cerc-io/keycloak-reg-ui
|
||||||
containers:
|
containers:
|
||||||
- cerc/go-ethereum
|
- cerc/go-ethereum
|
||||||
- cerc/lighthouse
|
- cerc/lighthouse
|
||||||
- cerc/lighthouse-cli
|
- cerc/lighthouse-cli
|
||||||
- cerc/foundry
|
- cerc/foundry
|
||||||
|
- cerc/keycloak
|
||||||
|
- cerc/webapp-base
|
||||||
|
- cerc/keycloak-reg-api
|
||||||
|
- cerc/keycloak-reg-ui
|
||||||
pods:
|
pods:
|
||||||
- mainnet-eth
|
- mainnet-eth
|
||||||
|
- mainnet-eth-keycloak
|
||||||
|
- mainnet-eth-metrics
|
||||||
- foundry
|
- foundry
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
version: "1.1"
|
version: "1.1"
|
||||||
name: mainnet-opera
|
name: mainnet-opera
|
||||||
decription: "Fantom mainnet node"
|
description: "Fantom mainnet node"
|
||||||
repos:
|
repos:
|
||||||
- github.com/Fantom-foundation/go-opera@release/1.1.2-rc.5
|
- github.com/Fantom-foundation/go-opera@release/1.1.2-rc.5
|
||||||
containers:
|
containers:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright © 2022, 2023 Cerc
|
# Copyright © 2022, 2023 Vulcanize
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from app.util import get_yaml
|
from app.util import get_yaml
|
||||||
from app.deploy_types import DeployCommandContext, LaconicStackSetupCommand
|
from app.deploy_types import DeployCommandContext, LaconicStackSetupCommand, DeploymentContext
|
||||||
from app.stack_state import State
|
from app.stack_state import State
|
||||||
from app.deploy_util import VolumeMapping, run_container_command
|
from app.deploy_util import VolumeMapping, run_container_command
|
||||||
from app.command_types import CommandOptions
|
from app.command_types import CommandOptions
|
||||||
@@ -32,9 +32,6 @@ default_spec_file_content = """config:
|
|||||||
chain_id: my-chain-id
|
chain_id: my-chain-id
|
||||||
"""
|
"""
|
||||||
|
|
||||||
init_help_text = """Add helpful text here on setting config variables.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class SetupPhase(Enum):
|
class SetupPhase(Enum):
|
||||||
INITIALIZE = 1
|
INITIALIZE = 1
|
||||||
@@ -113,17 +110,22 @@ def _remove_persistent_peers(options: CommandOptions, network_dir: Path):
|
|||||||
output_file.write(config_file_content)
|
output_file.write(config_file_content)
|
||||||
|
|
||||||
|
|
||||||
def setup(command_context: DeployCommandContext, parameters: LaconicStackSetupCommand, extra_args):
|
def _insert_persistent_peers(options: CommandOptions, config_dir: Path, new_persistent_peers: str):
|
||||||
|
config_file_path = config_dir.joinpath("config.toml")
|
||||||
|
if not config_file_path.exists():
|
||||||
|
print("Error: config.toml not found")
|
||||||
|
sys.exit(1)
|
||||||
|
with open(config_file_path, "r") as input_file:
|
||||||
|
config_file_content = input_file.read()
|
||||||
|
persistent_peers_pattern = '^persistent_peers = ""'
|
||||||
|
replace_with = f"persistent_peers = \"{new_persistent_peers}\""
|
||||||
|
config_file_content = re.sub(persistent_peers_pattern, replace_with, config_file_content, flags=re.MULTILINE)
|
||||||
|
with open(config_file_path, "w") as output_file:
|
||||||
|
output_file.write(config_file_content)
|
||||||
|
|
||||||
options = command_context.cluster_context.options
|
|
||||||
|
|
||||||
currency = "stake" # Does this need to be a parameter?
|
|
||||||
|
|
||||||
if options.debug:
|
|
||||||
print(f"parameters: {parameters}")
|
|
||||||
|
|
||||||
|
def _phase_from_params(parameters):
|
||||||
phase = SetupPhase.ILLEGAL
|
phase = SetupPhase.ILLEGAL
|
||||||
|
|
||||||
if parameters.initialize_network:
|
if parameters.initialize_network:
|
||||||
if parameters.join_network or parameters.create_network:
|
if parameters.join_network or parameters.create_network:
|
||||||
print("Can't supply --join-network or --create-network with --initialize-network")
|
print("Can't supply --join-network or --create-network with --initialize-network")
|
||||||
@@ -146,6 +148,19 @@ def setup(command_context: DeployCommandContext, parameters: LaconicStackSetupCo
|
|||||||
print("Can't supply --initialize-network or --join-network with --create-network")
|
print("Can't supply --initialize-network or --join-network with --create-network")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
phase = SetupPhase.CREATE
|
phase = SetupPhase.CREATE
|
||||||
|
return phase
|
||||||
|
|
||||||
|
|
||||||
|
def setup(command_context: DeployCommandContext, parameters: LaconicStackSetupCommand, extra_args):
|
||||||
|
|
||||||
|
options = command_context.cluster_context.options
|
||||||
|
|
||||||
|
currency = "stake" # Does this need to be a parameter?
|
||||||
|
|
||||||
|
if options.debug:
|
||||||
|
print(f"parameters: {parameters}")
|
||||||
|
|
||||||
|
phase = _phase_from_params(parameters)
|
||||||
|
|
||||||
network_dir = Path(parameters.network_dir).absolute()
|
network_dir = Path(parameters.network_dir).absolute()
|
||||||
laconicd_home_path_in_container = "/laconicd-home"
|
laconicd_home_path_in_container = "/laconicd-home"
|
||||||
@@ -187,20 +202,22 @@ def setup(command_context: DeployCommandContext, parameters: LaconicStackSetupCo
|
|||||||
f"laconicd add-genesis-account {parameters.key_name} 12900000000000000000000{currency}\
|
f"laconicd add-genesis-account {parameters.key_name} 12900000000000000000000{currency}\
|
||||||
--home {laconicd_home_path_in_container} --keyring-backend test",
|
--home {laconicd_home_path_in_container} --keyring-backend test",
|
||||||
mounts)
|
mounts)
|
||||||
print(f"Command output: {output2}")
|
if options.debug:
|
||||||
|
print(f"Command output: {output2}")
|
||||||
output3, status3 = run_container_command(
|
output3, status3 = run_container_command(
|
||||||
command_context,
|
command_context,
|
||||||
"laconicd",
|
"laconicd",
|
||||||
f"laconicd gentx {parameters.key_name} 90000000000{currency} --home {laconicd_home_path_in_container}\
|
f"laconicd gentx {parameters.key_name} 90000000000{currency} --home {laconicd_home_path_in_container}\
|
||||||
--chain-id {chain_id} --keyring-backend test",
|
--chain-id {chain_id} --keyring-backend test",
|
||||||
mounts)
|
mounts)
|
||||||
print(f"Command output: {output3}")
|
if options.debug:
|
||||||
|
print(f"Command output: {output3}")
|
||||||
output4, status4 = run_container_command(
|
output4, status4 = run_container_command(
|
||||||
command_context,
|
command_context,
|
||||||
"laconicd",
|
"laconicd",
|
||||||
f"laconicd keys show {parameters.key_name} -a --home {laconicd_home_path_in_container} --keyring-backend test",
|
f"laconicd keys show {parameters.key_name} -a --home {laconicd_home_path_in_container} --keyring-backend test",
|
||||||
mounts)
|
mounts)
|
||||||
print(f"Command output: {output4}")
|
print(f"Node validator address: {output4}")
|
||||||
|
|
||||||
elif phase == SetupPhase.CREATE:
|
elif phase == SetupPhase.CREATE:
|
||||||
if not os.path.exists(network_dir):
|
if not os.path.exists(network_dir):
|
||||||
@@ -219,6 +236,9 @@ def setup(command_context: DeployCommandContext, parameters: LaconicStackSetupCo
|
|||||||
copyfile(genesis_file_path, os.path.join(network_dir, "config", os.path.basename(genesis_file_path)))
|
copyfile(genesis_file_path, os.path.join(network_dir, "config", os.path.basename(genesis_file_path)))
|
||||||
else:
|
else:
|
||||||
# We're generating the genesis file
|
# We're generating the genesis file
|
||||||
|
if not parameters.gentx_file_list:
|
||||||
|
print("Error: --gentx-files must be supplied")
|
||||||
|
sys.exit(1)
|
||||||
# First look in the supplied gentx files for the other nodes' keys
|
# First look in the supplied gentx files for the other nodes' keys
|
||||||
other_node_keys = _get_node_keys_from_gentx_files(options, parameters.gentx_file_list)
|
other_node_keys = _get_node_keys_from_gentx_files(options, parameters.gentx_file_list)
|
||||||
# Add those keys to our genesis, with balances we determine here (why?)
|
# Add those keys to our genesis, with balances we determine here (why?)
|
||||||
@@ -226,13 +246,15 @@ def setup(command_context: DeployCommandContext, parameters: LaconicStackSetupCo
|
|||||||
outputk, statusk = run_container_command(
|
outputk, statusk = run_container_command(
|
||||||
command_context, "laconicd", f"laconicd add-genesis-account {other_node_key} 12900000000000000000000{currency}\
|
command_context, "laconicd", f"laconicd add-genesis-account {other_node_key} 12900000000000000000000{currency}\
|
||||||
--home {laconicd_home_path_in_container} --keyring-backend test", mounts)
|
--home {laconicd_home_path_in_container} --keyring-backend test", mounts)
|
||||||
print(f"Command output: {outputk}")
|
if options.debug:
|
||||||
|
print(f"Command output: {outputk}")
|
||||||
# Copy the gentx json files into our network dir
|
# Copy the gentx json files into our network dir
|
||||||
_copy_gentx_files(options, network_dir, parameters.gentx_file_list)
|
_copy_gentx_files(options, network_dir, parameters.gentx_file_list)
|
||||||
# Now we can run collect-gentxs
|
# Now we can run collect-gentxs
|
||||||
output1, status1 = run_container_command(
|
output1, status1 = run_container_command(
|
||||||
command_context, "laconicd", f"laconicd collect-gentxs --home {laconicd_home_path_in_container}", mounts)
|
command_context, "laconicd", f"laconicd collect-gentxs --home {laconicd_home_path_in_container}", mounts)
|
||||||
print(f"Command output: {output1}")
|
if options.debug:
|
||||||
|
print(f"Command output: {output1}")
|
||||||
print(f"Generated genesis file, please copy to other nodes as required: \
|
print(f"Generated genesis file, please copy to other nodes as required: \
|
||||||
{os.path.join(network_dir, 'config', 'genesis.json')}")
|
{os.path.join(network_dir, 'config', 'genesis.json')}")
|
||||||
# Last thing, collect-gentxs puts a likely bogus set of persistent_peers in config.toml so we remove that now
|
# Last thing, collect-gentxs puts a likely bogus set of persistent_peers in config.toml so we remove that now
|
||||||
@@ -240,15 +262,15 @@ def setup(command_context: DeployCommandContext, parameters: LaconicStackSetupCo
|
|||||||
# In both cases we validate the genesis file now
|
# In both cases we validate the genesis file now
|
||||||
output2, status1 = run_container_command(
|
output2, status1 = run_container_command(
|
||||||
command_context, "laconicd", f"laconicd validate-genesis --home {laconicd_home_path_in_container}", mounts)
|
command_context, "laconicd", f"laconicd validate-genesis --home {laconicd_home_path_in_container}", mounts)
|
||||||
print(f"Command output: {output2}")
|
print(f"validate-genesis result: {output2}")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("Illegal parameters supplied")
|
print("Illegal parameters supplied")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
def create(command_context: DeployCommandContext, extra_args):
|
def create(context: DeploymentContext, extra_args):
|
||||||
network_dir = extra_args
|
network_dir = extra_args[0]
|
||||||
if network_dir is None:
|
if network_dir is None:
|
||||||
print("Error: --network-dir must be supplied")
|
print("Error: --network-dir must be supplied")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@@ -266,16 +288,19 @@ def create(command_context: DeployCommandContext, extra_args):
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
# Copy the network directory contents into our deployment
|
# Copy the network directory contents into our deployment
|
||||||
# TODO: change this to work with non local paths
|
# TODO: change this to work with non local paths
|
||||||
deployment_config_dir = command_context.deployment_dir.joinpath("data", "laconicd-config")
|
deployment_config_dir = context.deployment_dir.joinpath("data", "laconicd-config")
|
||||||
copytree(config_dir_path, deployment_config_dir, dirs_exist_ok=True)
|
copytree(config_dir_path, deployment_config_dir, dirs_exist_ok=True)
|
||||||
|
# If supplied, add the initial persistent peers to the config file
|
||||||
|
if extra_args[1]:
|
||||||
|
initial_persistent_peers = extra_args[1]
|
||||||
|
_insert_persistent_peers(context.command_context.cluster_context.options, deployment_config_dir, initial_persistent_peers)
|
||||||
# Copy the data directory contents into our deployment
|
# Copy the data directory contents into our deployment
|
||||||
# TODO: change this to work with non local paths
|
# TODO: change this to work with non local paths
|
||||||
deployment_data_dir = command_context.deployment_dir.joinpath("data", "laconicd-data")
|
deployment_data_dir = context.deployment_dir.joinpath("data", "laconicd-data")
|
||||||
copytree(data_dir_path, deployment_data_dir, dirs_exist_ok=True)
|
copytree(data_dir_path, deployment_data_dir, dirs_exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
def init(command_context: DeployCommandContext):
|
def init(command_context: DeployCommandContext):
|
||||||
print(init_help_text)
|
|
||||||
yaml = get_yaml()
|
yaml = get_yaml()
|
||||||
return yaml.load(default_spec_file_content)
|
return yaml.load(default_spec_file_content)
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user