forked from cerc-io/stack-orchestrator
Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6396e43c68 | ||
|
|
6cb7bbf1d0 | ||
|
|
acbadc83fc | ||
|
|
728bf653cc | ||
|
|
a5b5054af5 | ||
|
|
3cdad5b2d6 | ||
|
|
bb33cdffec | ||
|
|
79891b9128 | ||
|
|
1abde44a31 | ||
|
|
19eb67ed08 | ||
|
|
c69ce45190 | ||
|
|
9cd3ac2567 | ||
|
|
0c1170e51c | ||
|
|
3b9fe60e59 | ||
|
|
6bd84e5b2f |
@@ -1,27 +0,0 @@
|
|||||||
name: Fixturenet-Eth-Test
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: 'ci-test'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
name: "Run an Ethereum fixturenet test"
|
|
||||||
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 fixturenet-eth tests"
|
|
||||||
run: ./tests/fixturenet-eth/run-test.sh
|
|
||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
build_tag=$(./scripts/create_build_tag_file.sh)
|
build_tag=$(./scripts/create_build_tag_file.sh)
|
||||||
echo "build-tag=v${build_tag}" >> $GITHUB_OUTPUT
|
echo "build-tag=v${build_tag}" >> $GITHUB_OUTPUT
|
||||||
- name: "Install Python"
|
- name: "Install Python"
|
||||||
uses: actions/setup-python@v4
|
uses: cerc-io/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: '3.8'
|
python-version: '3.8'
|
||||||
- name: "Print Python version"
|
- name: "Print Python version"
|
||||||
@@ -37,10 +37,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cp ${{ steps.build.outputs.package-file }} ./laconic-so
|
cp ${{ steps.build.outputs.package-file }} ./laconic-so
|
||||||
- name: "Create release"
|
- name: "Create release"
|
||||||
uses: https://gitea.com/cerc-io/action-gh-release@gitea-v2
|
uses: cerc-io/action-gh-release@gitea-v1
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.build-info.outputs.build-tag }}
|
tag_name: ${{ steps.build-info.outputs.build-tag }}
|
||||||
# On the publish test branch, mark our release as a draft
|
# On the publish test branch, mark our release as a draft
|
||||||
# Hack using endsWith to workaround Gitea sometimes sending "publish-test" vs "refs/heads/publish-test"
|
# Hack using endsWith to workaround Gitea sometimes sending "publish-test" vs "refs/heads/publish-test"
|
||||||
draft: ${{ endsWith('publish-test', github.ref ) }}
|
draft: ${{ endsWith('publish-test', github.ref ) }}
|
||||||
files: ./laconic-so
|
files: ./laconic-so
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
name: Deploy Test
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: '*'
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- ci-test
|
|
||||||
|
|
||||||
# Needed until we can incorporate docker startup into the executor container
|
|
||||||
env:
|
|
||||||
DOCKER_HOST: unix:///var/run/dind.sock
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
name: "Run deploy 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: Start dockerd # Also needed until we can incorporate into the executor
|
|
||||||
run: |
|
|
||||||
dockerd -H $DOCKER_HOST --userland-proxy=false &
|
|
||||||
sleep 5
|
|
||||||
- name: "Run deploy tests"
|
|
||||||
run: ./tests/deploy/run-deploy-test.sh
|
|
||||||
@@ -1,16 +1,10 @@
|
|||||||
name: Smoke Test
|
name: Test
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: '*'
|
branches: '*'
|
||||||
push:
|
push:
|
||||||
branches:
|
branches: '*'
|
||||||
- main
|
|
||||||
- ci-test
|
|
||||||
|
|
||||||
# Needed until we can incorporate docker startup into the executor container
|
|
||||||
env:
|
|
||||||
DOCKER_HOST: unix:///var/run/dind.sock
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
@@ -20,20 +14,14 @@ jobs:
|
|||||||
- name: "Clone project repository"
|
- name: "Clone project repository"
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: "Install Python"
|
- name: "Install Python"
|
||||||
uses: actions/setup-python@v4
|
uses: cerc-io/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: '3.8'
|
python-version: '3.8'
|
||||||
- name: "Print Python version"
|
- name: "Print Python version"
|
||||||
run: python3 --version
|
run: python3 --version
|
||||||
- name: "Install shiv"
|
- name: "Install shiv"
|
||||||
run: pip install shiv
|
run: pip install shiv
|
||||||
- name: "Generate build version file"
|
|
||||||
run: ./scripts/create_build_tag_file.sh
|
|
||||||
- name: "Build local shiv package"
|
- name: "Build local shiv package"
|
||||||
run: ./scripts/build_shiv_package.sh
|
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 smoke tests"
|
- name: "Run smoke tests"
|
||||||
run: ./tests/smoke-test/run-smoke-test.sh
|
run: ./tests/smoke-test/run-smoke-test.sh
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
name: Publish
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- publish-test
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
publish:
|
|
||||||
name: "Build and publish"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: "Clone project repository"
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: "Get build info"
|
|
||||||
id: build-info
|
|
||||||
run: |
|
|
||||||
build_tag=$(./scripts/create_build_tag_file.sh)
|
|
||||||
echo "build-tag=v${build_tag}" >> $GITHUB_OUTPUT
|
|
||||||
- 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: "Build local shiv package"
|
|
||||||
id: build
|
|
||||||
run: |
|
|
||||||
./scripts/build_shiv_package.sh
|
|
||||||
result_code=$?
|
|
||||||
echo "package-file=$(ls ./package/*)" >> $GITHUB_OUTPUT
|
|
||||||
exit $result_code
|
|
||||||
- name: "Stage artifact file"
|
|
||||||
run: |
|
|
||||||
cp ${{ steps.build.outputs.package-file }} ./laconic-so
|
|
||||||
- name: "Create release"
|
|
||||||
uses: softprops/action-gh-release@v1
|
|
||||||
with:
|
|
||||||
tag_name: ${{ steps.build-info.outputs.build-tag }}
|
|
||||||
# On the publish test branch, mark our release as a draft
|
|
||||||
# Hack using endsWith to workaround Gitea sometimes sending "publish-test" vs "refs/heads/publish-test"
|
|
||||||
draft: ${{ endsWith('publish-test', github.ref ) }}
|
|
||||||
files: ./laconic-so
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
name: Deploy Test
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: '*'
|
|
||||||
push:
|
|
||||||
branches: '*'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
name: "Run deploy 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 deploy tests"
|
|
||||||
run: ./tests/deploy/run-deploy-test.sh
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
name: Smoke 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 smoke tests"
|
|
||||||
run: ./tests/smoke-test/run-smoke-test.sh
|
|
||||||
+1
-3
@@ -5,6 +5,4 @@ laconic-so
|
|||||||
laconic_stack_orchestrator.egg-info
|
laconic_stack_orchestrator.egg-info
|
||||||
__pycache__
|
__pycache__
|
||||||
*~
|
*~
|
||||||
package
|
|
||||||
app/data/build_tag.txt
|
|
||||||
build
|
|
||||||
|
|||||||
@@ -35,28 +35,58 @@ curl -L -o ~/bin/laconic-so https://github.com/cerc-io/stack-orchestrator/releas
|
|||||||
```
|
```
|
||||||
|
|
||||||
Give it execute permissions:
|
Give it execute permissions:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x ~/bin/laconic-so
|
chmod +x ~/bin/laconic-so
|
||||||
```
|
```
|
||||||
|
|
||||||
Ensure `laconic-so` is on the [`PATH`](https://unix.stackexchange.com/a/26059)
|
Ensure `laconic-so` is on the [`PATH`](https://unix.stackexchange.com/a/26059)
|
||||||
|
|
||||||
Verify operation (your version will probably be different, just check here that you see some version output and not an error):
|
Verify operation (your version will probably be different, just check here that you see some version outut and not an error):
|
||||||
|
|
||||||
```
|
```
|
||||||
laconic-so version
|
laconic-so version
|
||||||
Version: 1.1.0-7a607c2-202304260513
|
Version: v1.0.27-7831078
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
The various [stacks](/app/data/stacks) each contain instructions for running different stacks based on your use case. For example:
|
Three sub-commands: `setup-repositories`, `build-containers` and `deploy-system` are generally run in order. The following is a slim example for standing up the `erc20-watcher`. Go further with the [erc20 watcher demo](/app/data/stacks/erc20) and other pieces of the stack, within the [`stacks` directory](/app/data/stacks).
|
||||||
|
|
||||||
- [self-hosted Gitea](/app/data/stacks/build-support)
|
### Setup Repositories
|
||||||
- [an Optimism Fixturenet](/app/data/stacks/fixturenet-optimism)
|
|
||||||
- [laconicd with console and CLI](app/data/stacks/fixturenet-laconic-loaded)
|
Clone the set of git repositories necessary to build a system:
|
||||||
- [kubo (IPFS)](app/data/stacks/kubo)
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack erc20 setup-repositories
|
||||||
|
```
|
||||||
|
|
||||||
|
This will default to cloning git reposiories into: `~/cerc` or - if set - the environment variable `CERC_REPO_BASE_DIR`
|
||||||
|
|
||||||
|
### Build Containers
|
||||||
|
|
||||||
|
Build the set of docker container images required to run a system. It takes around 10 minutes to build all the containers from scratch.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack erc20 build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy System
|
||||||
|
|
||||||
|
Uses `docker compose` to deploy a system (with most recently built container images).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack erc20 deploy-system up
|
||||||
|
```
|
||||||
|
|
||||||
|
Check out he GraphQL playground here: [http://localhost:3002/graphql](http://localhost:3002/graphql)
|
||||||
|
|
||||||
|
See the [erc20 watcher demo](/app/data/stacks/erc20) to continue further.
|
||||||
|
|
||||||
|
### Cleanup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack erc20 deploy-system down
|
||||||
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
@@ -66,4 +96,3 @@ See the [CONTRIBUTING.md](/docs/CONTRIBUTING.md) for developer mode install.
|
|||||||
|
|
||||||
Native aarm64 is _not_ currently supported. x64 emulation on ARM64 macos should work (not yet tested).
|
Native aarm64 is _not_ currently supported. x64 emulation on ARM64 macos should work (not yet tested).
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-9
@@ -15,8 +15,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from app.deploy import get_stack_status
|
from .deploy_system import get_stack_status
|
||||||
from decouple import config
|
|
||||||
|
|
||||||
|
|
||||||
def get_stack(config, stack):
|
def get_stack(config, stack):
|
||||||
@@ -70,10 +69,3 @@ class package_registry_stack(base_stack):
|
|||||||
|
|
||||||
def get_url(self):
|
def get_url(self):
|
||||||
return self.url
|
return self.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 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/"
|
|
||||||
return config("CERC_NPM_REGISTRY_URL", default=default_npm_registry_url)
|
|
||||||
|
|||||||
+7
-18
@@ -27,8 +27,7 @@ import subprocess
|
|||||||
import click
|
import click
|
||||||
import importlib.resources
|
import importlib.resources
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from app.util import include_exclude_check, get_parsed_stack_config
|
from .util import include_exclude_check, get_parsed_stack_config
|
||||||
from app.base import get_npm_registry_url
|
|
||||||
|
|
||||||
# TODO: find a place for this
|
# TODO: find a place for this
|
||||||
# epilog="Config provided either in .env or settings.ini or env vars: CERC_REPO_BASE_DIR (defaults to ~/cerc)"
|
# epilog="Config provided either in .env or settings.ini or env vars: CERC_REPO_BASE_DIR (defaults to ~/cerc)"
|
||||||
@@ -37,16 +36,13 @@ from app.base import get_npm_registry_url
|
|||||||
@click.command()
|
@click.command()
|
||||||
@click.option('--include', help="only build these containers")
|
@click.option('--include', help="only build these containers")
|
||||||
@click.option('--exclude', help="don\'t build these containers")
|
@click.option('--exclude', help="don\'t build these containers")
|
||||||
@click.option("--force-rebuild", is_flag=True, default=False, help="Override dependency checking -- always rebuild")
|
|
||||||
@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):
|
||||||
'''build the set of containers required for a complete stack'''
|
'''build the set of containers required for a complete stack'''
|
||||||
|
|
||||||
quiet = ctx.obj.quiet
|
quiet = ctx.obj.quiet
|
||||||
verbose = ctx.obj.verbose
|
verbose = ctx.obj.verbose
|
||||||
dry_run = ctx.obj.dry_run
|
dry_run = ctx.obj.dry_run
|
||||||
debug = ctx.obj.debug
|
|
||||||
local_stack = ctx.obj.local_stack
|
local_stack = ctx.obj.local_stack
|
||||||
stack = ctx.obj.stack
|
stack = ctx.obj.stack
|
||||||
continue_on_error = ctx.obj.continue_on_error
|
continue_on_error = ctx.obj.continue_on_error
|
||||||
@@ -67,7 +63,7 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
print('Dev root directory doesn\'t exist, creating')
|
print('Dev root directory doesn\'t exist, creating')
|
||||||
|
|
||||||
# See: https://stackoverflow.com/a/20885799/1701505
|
# See: https://stackoverflow.com/a/20885799/1701505
|
||||||
from app import data
|
from . import data
|
||||||
with importlib.resources.open_text(data, "container-image-list.txt") as container_list_file:
|
with importlib.resources.open_text(data, "container-image-list.txt") as container_list_file:
|
||||||
all_containers = container_list_file.read().splitlines()
|
all_containers = container_list_file.read().splitlines()
|
||||||
|
|
||||||
@@ -85,20 +81,13 @@ 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_URL": "http://gitea.local:3000/api/packages/cerc-io/npm/",
|
||||||
"CERC_NPM_AUTH_TOKEN": config("CERC_NPM_AUTH_TOKEN", default=""),
|
"CERC_NPM_AUTH_TOKEN": config("CERC_NPM_AUTH_TOKEN", default="<token-not-supplied>"),
|
||||||
"CERC_REPO_BASE_DIR": dev_root_path,
|
"CERC_REPO_BASE_DIR": dev_root_path,
|
||||||
"CERC_CONTAINER_BASE_DIR": container_build_dir,
|
|
||||||
"CERC_HOST_UID": f"{os.getuid()}",
|
"CERC_HOST_UID": f"{os.getuid()}",
|
||||||
"CERC_HOST_GID": f"{os.getgid()}",
|
"CERC_HOST_GID": f"{os.getgid()}",
|
||||||
"DOCKER_BUILDKIT": config("DOCKER_BUILDKIT", default="0")
|
"DOCKER_BUILDKIT": "0"
|
||||||
}
|
}
|
||||||
container_build_env.update({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
|
|
||||||
container_build_env.update({"CERC_FORCE_REBUILD": "true"} if force_rebuild else {})
|
|
||||||
container_build_env.update({"CERC_CONTAINER_EXTRA_BUILD_ARGS": extra_build_args} if extra_build_args else {})
|
|
||||||
docker_host_env = os.getenv("DOCKER_HOST")
|
|
||||||
if docker_host_env:
|
|
||||||
container_build_env.update({"DOCKER_HOST": docker_host_env})
|
|
||||||
|
|
||||||
def process_container(container):
|
def process_container(container):
|
||||||
if not quiet:
|
if not quiet:
|
||||||
@@ -116,7 +105,7 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
# TODO: make this less of a hack -- should be specified in some metadata somewhere
|
# TODO: make this less of a hack -- should be specified in some metadata somewhere
|
||||||
# Check if we have a repo for this container. If not, set the context dir to the container-build subdir
|
# Check if we have a repo for this container. If not, set the context dir to the container-build subdir
|
||||||
repo_full_path = os.path.join(dev_root_path, repo_dir)
|
repo_full_path = os.path.join(dev_root_path, repo_dir)
|
||||||
repo_dir_or_build_dir = repo_full_path if os.path.exists(repo_full_path) else build_dir
|
repo_dir_or_build_dir = repo_dir if os.path.exists(repo_full_path) else build_dir
|
||||||
build_command = os.path.join(container_build_dir, "default-build.sh") + f" {container}:local {repo_dir_or_build_dir}"
|
build_command = os.path.join(container_build_dir, "default-build.sh") + f" {container}:local {repo_dir_or_build_dir}"
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
if verbose:
|
if verbose:
|
||||||
|
|||||||
+5
-11
@@ -25,18 +25,16 @@ from decouple import config
|
|||||||
import click
|
import click
|
||||||
import importlib.resources
|
import importlib.resources
|
||||||
from python_on_whales import docker, DockerException
|
from python_on_whales import docker, DockerException
|
||||||
from app.base import get_stack
|
from .base import get_stack
|
||||||
from app.util import include_exclude_check, get_parsed_stack_config
|
from .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("--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):
|
||||||
'''build the set of npm packages required for a complete stack'''
|
'''build the set of npm packages required for a complete stack'''
|
||||||
|
|
||||||
quiet = ctx.obj.quiet
|
quiet = ctx.obj.quiet
|
||||||
@@ -81,7 +79,7 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
os.makedirs(build_root_path)
|
os.makedirs(build_root_path)
|
||||||
|
|
||||||
# See: https://stackoverflow.com/a/20885799/1701505
|
# See: https://stackoverflow.com/a/20885799/1701505
|
||||||
from app import data
|
from . import data
|
||||||
with importlib.resources.open_text(data, "npm-package-list.txt") as package_list_file:
|
with importlib.resources.open_text(data, "npm-package-list.txt") as package_list_file:
|
||||||
all_packages = package_list_file.read().splitlines()
|
all_packages = package_list_file.read().splitlines()
|
||||||
|
|
||||||
@@ -121,12 +119,8 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
# Originally we used the PEP 584 merge operator:
|
# Originally we used the PEP 584 merge operator:
|
||||||
# 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
|
|
||||||
}
|
|
||||||
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_CONTAINER_EXTRA_BUILD_ARGS": extra_build_args} if extra_build_args else {})
|
|
||||||
try:
|
try:
|
||||||
docker.run(builder_js_image_name,
|
docker.run(builder_js_image_name,
|
||||||
remove=True,
|
remove=True,
|
||||||
|
|||||||
@@ -2,34 +2,30 @@ version: '3.7'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
fixturenet-eth-bootnode-geth:
|
fixturenet-eth-bootnode-geth:
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-bootnode-geth
|
hostname: fixturenet-eth-bootnode-geth
|
||||||
env_file:
|
env_file:
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
- ../config/fixturenet-eth/fixturenet-eth.env
|
||||||
environment:
|
environment:
|
||||||
RUN_BOOTNODE: "true"
|
RUN_BOOTNODE: "true"
|
||||||
image: cerc/fixturenet-eth-geth:local
|
image: cerc/fixturenet-eth-geth:local
|
||||||
volumes:
|
|
||||||
- fixturenet_eth_bootnode_geth_data:/root/ethdata
|
|
||||||
ports:
|
ports:
|
||||||
- "9898"
|
- "9898"
|
||||||
- "30303"
|
- "30303"
|
||||||
|
|
||||||
fixturenet-eth-geth-1:
|
fixturenet-eth-geth-1:
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-geth-1
|
hostname: fixturenet-eth-geth-1
|
||||||
cap_add:
|
cap_add:
|
||||||
- SYS_PTRACE
|
- SYS_PTRACE
|
||||||
environment:
|
environment:
|
||||||
CERC_REMOTE_DEBUG: "true"
|
CERC_REMOTE_DEBUG: "true"
|
||||||
CERC_RUN_STATEDIFF: ${CERC_RUN_STATEDIFF:-detect}
|
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:
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
- ../config/fixturenet-eth/fixturenet-eth.env
|
||||||
image: cerc/fixturenet-eth-geth:local
|
image: cerc/fixturenet-eth-geth:local
|
||||||
volumes:
|
volumes:
|
||||||
- fixturenet_eth_geth_1_data:/root/ethdata
|
- fixturenet_geth_accounts:/opt/testnet/build/el
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-v", "localhost", "8545"]
|
test: ["CMD", "nc", "-v", "localhost", "8545"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
@@ -44,7 +40,6 @@ services:
|
|||||||
- "6060"
|
- "6060"
|
||||||
|
|
||||||
fixturenet-eth-geth-2:
|
fixturenet-eth-geth-2:
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-geth-2
|
hostname: fixturenet-eth-geth-2
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-v", "localhost", "8545"]
|
test: ["CMD", "nc", "-v", "localhost", "8545"]
|
||||||
@@ -52,25 +47,19 @@ services:
|
|||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 10
|
retries: 10
|
||||||
start_period: 3s
|
start_period: 3s
|
||||||
environment:
|
|
||||||
CERC_KEEP_RUNNING_AFTER_GETH_EXIT: "true"
|
|
||||||
env_file:
|
env_file:
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
- ../config/fixturenet-eth/fixturenet-eth.env
|
||||||
image: cerc/fixturenet-eth-geth:local
|
image: cerc/fixturenet-eth-geth:local
|
||||||
depends_on:
|
depends_on:
|
||||||
- fixturenet-eth-bootnode-geth
|
- fixturenet-eth-bootnode-geth
|
||||||
volumes:
|
|
||||||
- fixturenet_eth_geth_2_data:/root/ethdata
|
|
||||||
|
|
||||||
fixturenet-eth-bootnode-lighthouse:
|
fixturenet-eth-bootnode-lighthouse:
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-bootnode-lighthouse
|
hostname: fixturenet-eth-bootnode-lighthouse
|
||||||
environment:
|
environment:
|
||||||
RUN_BOOTNODE: "true"
|
RUN_BOOTNODE: "true"
|
||||||
image: cerc/fixturenet-eth-lighthouse:local
|
image: cerc/fixturenet-eth-lighthouse:local
|
||||||
|
|
||||||
fixturenet-eth-lighthouse-1:
|
fixturenet-eth-lighthouse-1:
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-lighthouse-1
|
hostname: fixturenet-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:8001/eth/v2/beacon/blocks/head"]
|
||||||
@@ -85,8 +74,6 @@ services:
|
|||||||
ETH1_ENDPOINT: "http://fixturenet-eth-geth-1:8545"
|
ETH1_ENDPOINT: "http://fixturenet-eth-geth-1:8545"
|
||||||
EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-1:8551"
|
EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-1:8551"
|
||||||
image: cerc/fixturenet-eth-lighthouse:local
|
image: cerc/fixturenet-eth-lighthouse:local
|
||||||
volumes:
|
|
||||||
- fixturenet_eth_lighthouse_1_data:/opt/testnet/build/cl
|
|
||||||
depends_on:
|
depends_on:
|
||||||
fixturenet-eth-bootnode-lighthouse:
|
fixturenet-eth-bootnode-lighthouse:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
@@ -96,7 +83,6 @@ services:
|
|||||||
- "8001"
|
- "8001"
|
||||||
|
|
||||||
fixturenet-eth-lighthouse-2:
|
fixturenet-eth-lighthouse-2:
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-lighthouse-2
|
hostname: fixturenet-eth-lighthouse-2
|
||||||
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:8001/eth/v2/beacon/blocks/head"]
|
||||||
@@ -112,8 +98,6 @@ services:
|
|||||||
EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-2:8551"
|
EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-2:8551"
|
||||||
LIGHTHOUSE_GENESIS_STATE_URL: "http://fixturenet-eth-lighthouse-1:8001/eth/v2/debug/beacon/states/0"
|
LIGHTHOUSE_GENESIS_STATE_URL: "http://fixturenet-eth-lighthouse-1:8001/eth/v2/debug/beacon/states/0"
|
||||||
image: cerc/fixturenet-eth-lighthouse:local
|
image: cerc/fixturenet-eth-lighthouse:local
|
||||||
volumes:
|
|
||||||
- fixturenet_eth_lighthouse_2_data:/opt/testnet/build/cl
|
|
||||||
depends_on:
|
depends_on:
|
||||||
fixturenet-eth-bootnode-lighthouse:
|
fixturenet-eth-bootnode-lighthouse:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
@@ -121,8 +105,4 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
fixturenet_eth_bootnode_geth_data:
|
fixturenet_geth_accounts:
|
||||||
fixturenet_eth_geth_1_data:
|
|
||||||
fixturenet_eth_geth_2_data:
|
|
||||||
fixturenet_eth_lighthouse_1_data:
|
|
||||||
fixturenet_eth_lighthouse_2_data:
|
|
||||||
|
|||||||
@@ -2,7 +2,5 @@ services:
|
|||||||
laconic-console:
|
laconic-console:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: cerc/laconic-console-host:local
|
image: cerc/laconic-console-host:local
|
||||||
environment:
|
|
||||||
- LACONIC_HOSTED_ENDPOINT=${LACONIC_HOSTED_ENDPOINT:-http://localhost}
|
|
||||||
ports:
|
ports:
|
||||||
- "80"
|
- "80"
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
|
version: "3.2"
|
||||||
services:
|
services:
|
||||||
laconicd:
|
laconicd:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: cerc/laconicd:local
|
image: cerc/laconicd:local
|
||||||
command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
# The cosmos-sdk node's database directory:
|
|
||||||
- laconicd-data:/root/.laconicd/data
|
|
||||||
# TODO: look at folding these scripts into the container
|
# TODO: look at folding these scripts into the container
|
||||||
- ../config/fixturenet-laconicd/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh
|
- ../config/fixturenet-laconicd/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh
|
||||||
- ../config/fixturenet-laconicd/export-mykey.sh:/docker-entrypoint-scripts.d/export-mykey.sh
|
- ../config/fixturenet-laconicd/export-mykey.sh:/docker-entrypoint-scripts.d/export-mykey.sh
|
||||||
- ../config/fixturenet-laconicd/export-myaddress.sh:/docker-entrypoint-scripts.d/export-myaddress.sh
|
|
||||||
# TODO: determine which of the ports below is really needed
|
# TODO: determine which of the ports below is really needed
|
||||||
ports:
|
ports:
|
||||||
- "6060"
|
- "6060"
|
||||||
@@ -25,6 +23,3 @@ services:
|
|||||||
image: cerc/laconic-registry-cli:local
|
image: cerc/laconic-registry-cli:local
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/fixturenet-laconicd/registry-cli-config-template.yml:/registry-cli-config-template.yml
|
- ../config/fixturenet-laconicd/registry-cli-config-template.yml:/registry-cli-config-template.yml
|
||||||
|
|
||||||
volumes:
|
|
||||||
laconicd-data:
|
|
||||||
|
|||||||
@@ -1,68 +0,0 @@
|
|||||||
version: "3.8"
|
|
||||||
services:
|
|
||||||
|
|
||||||
lotus-miner:
|
|
||||||
hostname: lotus-miner
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-lotus/lotus-env.env
|
|
||||||
image: cerc/lotus:local
|
|
||||||
volumes:
|
|
||||||
- ../config/fixturenet-lotus/setup-miner.sh:/docker-entrypoint-scripts.d/setup-miner.sh
|
|
||||||
- ../config/fixturenet-lotus/genesis/devgen.car:/devgen.car
|
|
||||||
- $HOME/stack-orchestrator/app/data/config/fixturenet-lotus/genesis/.genesis-sectors:/root/.genesis-sectors
|
|
||||||
- lotus-shared:/root/.lotus-shared
|
|
||||||
healthcheck:
|
|
||||||
# test: ["CMD-SHELL", "grep 'started ChainNotify channel' /var/log/lotus.log"]
|
|
||||||
# test: ["CMD-SHELL", "[ -f /root/.lotus-shared/miner.addr ]"]
|
|
||||||
test: ["CMD-SHELL", "[ -d /root/.lotus-miner-local-net ]"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
start_period: 60s
|
|
||||||
entrypoint: ["sh", "/docker-entrypoint-scripts.d/setup-miner.sh"]
|
|
||||||
ports:
|
|
||||||
- "1234"
|
|
||||||
- "2345"
|
|
||||||
- "3456"
|
|
||||||
- "1777"
|
|
||||||
|
|
||||||
lotus-node-1:
|
|
||||||
hostname: lotus-node-1
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-lotus/lotus-env.env
|
|
||||||
image: cerc/lotus:local
|
|
||||||
volumes:
|
|
||||||
- ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh
|
|
||||||
- ../config/fixturenet-lotus/genesis/devgen.car:/devgen.car
|
|
||||||
- lotus-shared:/root/.lotus-shared
|
|
||||||
depends_on:
|
|
||||||
lotus-miner:
|
|
||||||
condition: service_healthy
|
|
||||||
entrypoint: ["sh", "/docker-entrypoint-scripts.d/setup-node.sh"]
|
|
||||||
ports:
|
|
||||||
- "1234"
|
|
||||||
- "2345"
|
|
||||||
- "3456"
|
|
||||||
- "1777"
|
|
||||||
|
|
||||||
lotus-node-2:
|
|
||||||
hostname: lotus-node-2
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-lotus/lotus-env.env
|
|
||||||
image: cerc/lotus:local
|
|
||||||
volumes:
|
|
||||||
- ../config/fixturenet-lotus/setup-node.sh:/docker-entrypoint-scripts.d/setup-node.sh
|
|
||||||
- ../config/fixturenet-lotus/genesis/devgen.car:/devgen.car
|
|
||||||
- lotus-shared:/root/.lotus-shared
|
|
||||||
depends_on:
|
|
||||||
lotus-miner:
|
|
||||||
condition: service_healthy
|
|
||||||
entrypoint: ["sh", "/docker-entrypoint-scripts.d/setup-node.sh"]
|
|
||||||
ports:
|
|
||||||
- "1234"
|
|
||||||
- "2345"
|
|
||||||
- "3456"
|
|
||||||
- "1777"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
lotus-shared:
|
|
||||||
@@ -5,58 +5,44 @@ services:
|
|||||||
# Creates / updates the configuration for L1 contracts deployment
|
# Creates / updates the configuration for L1 contracts deployment
|
||||||
# Deploys the L1 smart contracts (outputs to volume l1_deployment)
|
# Deploys the L1 smart contracts (outputs to volume l1_deployment)
|
||||||
fixturenet-optimism-contracts:
|
fixturenet-optimism-contracts:
|
||||||
restart: on-failure
|
|
||||||
hostname: fixturenet-optimism-contracts
|
hostname: fixturenet-optimism-contracts
|
||||||
image: cerc/optimism-contracts:local
|
image: cerc/optimism-contracts:local
|
||||||
env_file:
|
env_file:
|
||||||
- ../config/fixturenet-optimism/l1-params.env
|
- ../config/fixturenet-optimism/l1-params.env
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_L1_CHAIN_ID: ${CERC_L1_CHAIN_ID}
|
|
||||||
CERC_L1_RPC: ${CERC_L1_RPC}
|
|
||||||
CERC_L1_ACCOUNTS_CSV_URL: ${CERC_L1_ACCOUNTS_CSV_URL}
|
|
||||||
CERC_L1_ADDRESS: ${CERC_L1_ADDRESS}
|
|
||||||
CERC_L1_PRIV_KEY: ${CERC_L1_PRIV_KEY}
|
|
||||||
CERC_L1_ADDRESS_2: ${CERC_L1_ADDRESS_2}
|
|
||||||
CERC_L1_PRIV_KEY_2: ${CERC_L1_PRIV_KEY_2}
|
|
||||||
# Waits for L1 endpoint to be up before running the script
|
# Waits for L1 endpoint to be up before running the script
|
||||||
command: |
|
command: |
|
||||||
"./wait-for-it.sh -h ${CERC_L1_HOST:-$${DEFAULT_CERC_L1_HOST}} -p ${CERC_L1_PORT:-$${DEFAULT_CERC_L1_PORT}} -s -t 60 -- ./run.sh"
|
"./wait-for-it.sh -h $${L1_HOST} -p $${L1_PORT} -s -t 60 -- ./run.sh"
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/network/wait-for-it.sh:/app/packages/contracts-bedrock/wait-for-it.sh
|
- ../config/wait-for-it.sh:/app/packages/contracts-bedrock/wait-for-it.sh
|
||||||
- ../config/optimism-contracts/hardhat-tasks/verify-contract-deployment.ts:/app/packages/contracts-bedrock/tasks/verify-contract-deployment.ts
|
- ../container-build/cerc-optimism-contracts/hardhat-tasks/verify-contract-deployment.ts:/app/packages/contracts-bedrock/tasks/verify-contract-deployment.ts
|
||||||
- ../config/optimism-contracts/hardhat-tasks/rekey-json.ts:/app/packages/contracts-bedrock/tasks/rekey-json.ts
|
- ../container-build/cerc-optimism-contracts/hardhat-tasks/rekey-json.ts:/app/packages/contracts-bedrock/tasks/rekey-json.ts
|
||||||
- ../config/optimism-contracts/hardhat-tasks/send-balance.ts:/app/packages/contracts-bedrock/tasks/send-balance.ts
|
- ../container-build/cerc-optimism-contracts/hardhat-tasks/send-balance.ts:/app/packages/contracts-bedrock/tasks/send-balance.ts
|
||||||
- ../config/fixturenet-optimism/optimism-contracts/update-config.js:/app/packages/contracts-bedrock/update-config.js
|
- ../config/fixturenet-optimism/optimism-contracts/update-config.js:/app/packages/contracts-bedrock/update-config.js
|
||||||
- ../config/fixturenet-optimism/optimism-contracts/run.sh:/app/packages/contracts-bedrock/run.sh
|
- ../config/fixturenet-optimism/optimism-contracts/run.sh:/app/packages/contracts-bedrock/run.sh
|
||||||
|
- fixturenet_geth_accounts:/geth-accounts:ro
|
||||||
- l2_accounts:/l2-accounts
|
- l2_accounts:/l2-accounts
|
||||||
- l1_deployment:/app/packages/contracts-bedrock
|
- l1_deployment:/app/packages/contracts-bedrock
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
# Generates the config files required for L2 (outputs to volume l2_config)
|
# Generates the config files required for L2 (outputs to volume l2_config)
|
||||||
op-node-l2-config-gen:
|
op-node-l2-config-gen:
|
||||||
restart: on-failure
|
|
||||||
image: cerc/optimism-op-node:local
|
image: cerc/optimism-op-node:local
|
||||||
depends_on:
|
depends_on:
|
||||||
fixturenet-optimism-contracts:
|
fixturenet-optimism-contracts:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
env_file:
|
env_file:
|
||||||
- ../config/fixturenet-optimism/l1-params.env
|
- ../config/fixturenet-optimism/l1-params.env
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_L1_RPC: ${CERC_L1_RPC}
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/fixturenet-optimism/generate-l2-config.sh:/app/generate-l2-config.sh
|
- ../config/fixturenet-optimism/generate-l2-config.sh:/app/generate-l2-config.sh
|
||||||
- l1_deployment:/contracts-bedrock:ro
|
- l1_deployment:/contracts-bedrock:ro
|
||||||
- l2_config:/app
|
- l2_config:/app
|
||||||
command: ["sh", "/app/generate-l2-config.sh"]
|
command: ["sh", "/app/generate-l2-config.sh"]
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
# Initializes and runs the L2 execution client (outputs to volume l2_geth_data)
|
# Initializes and runs the L2 execution client (outputs to volume l2_geth_data)
|
||||||
op-geth:
|
op-geth:
|
||||||
restart: always
|
|
||||||
image: cerc/optimism-l2geth:local
|
image: cerc/optimism-l2geth:local
|
||||||
depends_on:
|
depends_on:
|
||||||
op-node-l2-config-gen:
|
op-node-l2-config-gen:
|
||||||
@@ -79,16 +65,12 @@ services:
|
|||||||
|
|
||||||
# Runs the L2 consensus client (Sequencer node)
|
# Runs the L2 consensus client (Sequencer node)
|
||||||
op-node:
|
op-node:
|
||||||
restart: always
|
env_file:
|
||||||
image: cerc/optimism-op-node:local
|
- ../config/fixturenet-optimism/l1-params.env
|
||||||
depends_on:
|
depends_on:
|
||||||
op-geth:
|
op-geth:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
env_file:
|
image: cerc/optimism-op-node:local
|
||||||
- ../config/fixturenet-optimism/l1-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_L1_RPC: ${CERC_L1_RPC}
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/fixturenet-optimism/run-op-node.sh:/app/run-op-node.sh
|
- ../config/fixturenet-optimism/run-op-node.sh:/app/run-op-node.sh
|
||||||
- l2_config:/op-node-data:ro
|
- l2_config:/op-node-data:ro
|
||||||
@@ -107,58 +89,27 @@ services:
|
|||||||
|
|
||||||
# Runs the batcher (takes transactions from the Sequencer and publishes them to L1)
|
# Runs the batcher (takes transactions from the Sequencer and publishes them to L1)
|
||||||
op-batcher:
|
op-batcher:
|
||||||
restart: always
|
env_file:
|
||||||
image: cerc/optimism-op-batcher:local
|
- ../config/fixturenet-optimism/l1-params.env
|
||||||
depends_on:
|
depends_on:
|
||||||
op-node:
|
op-node:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
op-geth:
|
op-geth:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
env_file:
|
image: cerc/optimism-op-batcher:local
|
||||||
- ../config/fixturenet-optimism/l1-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_L1_RPC: ${CERC_L1_RPC}
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/network/wait-for-it.sh:/wait-for-it.sh
|
- ../config/wait-for-it.sh:/wait-for-it.sh
|
||||||
- ../config/fixturenet-optimism/run-op-batcher.sh:/run-op-batcher.sh
|
- ../config/fixturenet-optimism/run-op-batcher.sh:/run-op-batcher.sh
|
||||||
- l2_accounts:/l2-accounts:ro
|
- l2_accounts:/l2-accounts:ro
|
||||||
entrypoint: ["sh", "-c"]
|
entrypoint: ["sh", "-c"]
|
||||||
# Waits for L1 endpoint to be up before running the batcher
|
# Waits for L1 endpoint to be up before running the batcher
|
||||||
command: |
|
command: |
|
||||||
"/wait-for-it.sh -h ${CERC_L1_HOST:-$${DEFAULT_CERC_L1_HOST}} -p ${CERC_L1_PORT:-$${DEFAULT_CERC_L1_PORT}} -s -t 60 -- /run-op-batcher.sh"
|
"/wait-for-it.sh -h $${L1_HOST} -p $${L1_PORT} -s -t 60 -- /run-op-batcher.sh"
|
||||||
ports:
|
|
||||||
- "127.0.0.1:8548:8548"
|
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
# Runs the proposer (periodically submits new state roots to L1)
|
|
||||||
op-proposer:
|
|
||||||
restart: always
|
|
||||||
image: cerc/optimism-op-proposer:local
|
|
||||||
depends_on:
|
|
||||||
op-node:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-optimism/l1-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_L1_RPC: ${CERC_L1_RPC}
|
|
||||||
volumes:
|
|
||||||
- ../config/network/wait-for-it.sh:/wait-for-it.sh
|
|
||||||
- ../config/fixturenet-optimism/run-op-proposer.sh:/run-op-proposer.sh
|
|
||||||
- l1_deployment:/contracts-bedrock:ro
|
|
||||||
- l2_accounts:/l2-accounts:ro
|
|
||||||
entrypoint: ["sh", "-c"]
|
|
||||||
# Waits for L1 endpoint to be up before running the proposer
|
|
||||||
command: |
|
|
||||||
"/wait-for-it.sh -h ${CERC_L1_HOST:-$${DEFAULT_CERC_L1_HOST}} -p ${CERC_L1_PORT:-$${DEFAULT_CERC_L1_PORT}} -s -t 60 -- /run-op-proposer.sh"
|
|
||||||
ports:
|
|
||||||
- "127.0.0.1:8560:8560"
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
fixturenet_geth_accounts:
|
||||||
l1_deployment:
|
l1_deployment:
|
||||||
l2_accounts:
|
l2_accounts:
|
||||||
l2_config:
|
l2_config:
|
||||||
|
|||||||
@@ -1,127 +0,0 @@
|
|||||||
services:
|
|
||||||
fixturenet-eth-bootnode-geth:
|
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-bootnode-geth
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
|
||||||
environment:
|
|
||||||
RUN_BOOTNODE: "true"
|
|
||||||
image: cerc/fixturenet-plugeth-plugeth:local
|
|
||||||
volumes:
|
|
||||||
- fixturenet_plugeth_bootnode_geth_data:/root/ethdata
|
|
||||||
- ../config/fixturenet-plugeth/plugins:/root/ethdata/plugins
|
|
||||||
ports:
|
|
||||||
- "9898"
|
|
||||||
- "30303"
|
|
||||||
|
|
||||||
fixturenet-eth-geth-1:
|
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-geth-1
|
|
||||||
cap_add:
|
|
||||||
- SYS_PTRACE
|
|
||||||
environment:
|
|
||||||
CERC_REMOTE_DEBUG: "true"
|
|
||||||
CERC_RUN_STATEDIFF: "detect"
|
|
||||||
CERC_STATEDIFF_DB_NODE_ID: 1
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
|
||||||
image: cerc/fixturenet-plugeth-plugeth:local
|
|
||||||
volumes:
|
|
||||||
- fixturenet_plugeth_geth_1_data:/root/ethdata
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8545/"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
start_period: 3s
|
|
||||||
depends_on:
|
|
||||||
- fixturenet-eth-bootnode-geth
|
|
||||||
ports:
|
|
||||||
- "8545"
|
|
||||||
- "40000"
|
|
||||||
- "6060"
|
|
||||||
|
|
||||||
fixturenet-eth-geth-2:
|
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-geth-2
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8545/"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
start_period: 3s
|
|
||||||
environment:
|
|
||||||
CERC_KEEP_RUNNING_AFTER_GETH_EXIT: "true"
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
|
||||||
image: cerc/fixturenet-plugeth-plugeth:local
|
|
||||||
depends_on:
|
|
||||||
- fixturenet-eth-bootnode-geth
|
|
||||||
volumes:
|
|
||||||
- fixturenet_plugeth_geth_2_data:/root/ethdata
|
|
||||||
|
|
||||||
fixturenet-eth-bootnode-lighthouse:
|
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-bootnode-lighthouse
|
|
||||||
environment:
|
|
||||||
RUN_BOOTNODE: "true"
|
|
||||||
image: cerc/fixturenet-plugeth-lighthouse:local
|
|
||||||
|
|
||||||
fixturenet-eth-lighthouse-1:
|
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-lighthouse-1
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8001/eth/v2/beacon/blocks/head"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
start_period: 30s
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
|
||||||
environment:
|
|
||||||
NODE_NUMBER: "1"
|
|
||||||
ETH1_ENDPOINT: "http://fixturenet-eth-geth-1:8545"
|
|
||||||
EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-1:8551"
|
|
||||||
image: cerc/fixturenet-plugeth-lighthouse:local
|
|
||||||
volumes:
|
|
||||||
- fixturenet_plugeth_lighthouse_1_data:/opt/testnet/build/cl
|
|
||||||
depends_on:
|
|
||||||
fixturenet-eth-bootnode-lighthouse:
|
|
||||||
condition: service_started
|
|
||||||
fixturenet-eth-geth-1:
|
|
||||||
condition: service_healthy
|
|
||||||
ports:
|
|
||||||
- "8001"
|
|
||||||
|
|
||||||
fixturenet-eth-lighthouse-2:
|
|
||||||
restart: always
|
|
||||||
hostname: fixturenet-eth-lighthouse-2
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8001/eth/v2/beacon/blocks/head"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
start_period: 30s
|
|
||||||
env_file:
|
|
||||||
- ../config/fixturenet-eth/fixturenet-eth.env
|
|
||||||
environment:
|
|
||||||
NODE_NUMBER: "2"
|
|
||||||
ETH1_ENDPOINT: "http://fixturenet-eth-geth-2:8545"
|
|
||||||
EXECUTION_ENDPOINT: "http://fixturenet-eth-geth-2:8551"
|
|
||||||
LIGHTHOUSE_GENESIS_STATE_URL: "http://fixturenet-eth-lighthouse-1:8001/eth/v2/debug/beacon/states/0"
|
|
||||||
image: cerc/fixturenet-plugeth-lighthouse:local
|
|
||||||
volumes:
|
|
||||||
- fixturenet_plugeth_lighthouse_2_data:/opt/testnet/build/cl
|
|
||||||
depends_on:
|
|
||||||
fixturenet-eth-bootnode-lighthouse:
|
|
||||||
condition: service_started
|
|
||||||
fixturenet-eth-geth-2:
|
|
||||||
condition: service_healthy
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
fixturenet_plugeth_bootnode_geth_data:
|
|
||||||
fixturenet_plugeth_geth_1_data:
|
|
||||||
fixturenet_plugeth_geth_2_data:
|
|
||||||
fixturenet_plugeth_lighthouse_1_data:
|
|
||||||
fixturenet_plugeth_lighthouse_2_data:
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
version: "3.2"
|
|
||||||
services:
|
|
||||||
pocket:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: cerc/pocket:local
|
|
||||||
# command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
|
||||||
entrypoint: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
|
|
||||||
volumes:
|
|
||||||
# TODO: look at folding these scripts into the container
|
|
||||||
- ../config/fixturenet-pocket/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh
|
|
||||||
- ../config/fixturenet-pocket/chains.json:/home/app/pocket-configs/chains.json
|
|
||||||
- ../config/fixturenet-pocket/genesis.json:/home/app/pocket-configs/genesis.json
|
|
||||||
ports:
|
|
||||||
- "8081:8081" # pocket relay rpc
|
|
||||||
networks:
|
|
||||||
net1:
|
|
||||||
name: fixturenet-eth_default
|
|
||||||
external: true
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
# Add-on pod to include foundry tooling within a fixturenet
|
# Add-on pod to include foundry tooling within a fixturenet
|
||||||
services:
|
services:
|
||||||
foundry:
|
foundry:
|
||||||
restart: always
|
|
||||||
image: cerc/foundry:local
|
image: cerc/foundry:local
|
||||||
command: ["while :; do sleep 600; done"]
|
command: ["while :; do sleep 600; done"]
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -7,9 +7,11 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
image: cerc/ipld-eth-server:local
|
image: cerc/ipld-eth-server:local
|
||||||
environment:
|
environment:
|
||||||
SERVER_HTTP_PATH: 0.0.0.0:8081
|
IPLD_SERVER_GRAPHQL: "true"
|
||||||
SERVER_GRAPHQL: "true"
|
IPLD_POSTGRAPHILEPATH: http://graphql:5000
|
||||||
SERVER_GRAPHQLPATH: 0.0.0.0:8082
|
ETH_SERVER_HTTPPATH: 0.0.0.0:8081
|
||||||
|
ETH_SERVER_GRAPHQL: "true"
|
||||||
|
ETH_SERVER_GRAPHQLPATH: 0.0.0.0:8082
|
||||||
VDB_COMMAND: "serve"
|
VDB_COMMAND: "serve"
|
||||||
ETH_CHAIN_CONFIG: "/tmp/chain.json"
|
ETH_CHAIN_CONFIG: "/tmp/chain.json"
|
||||||
DATABASE_NAME: cerc_testing
|
DATABASE_NAME: cerc_testing
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ services:
|
|||||||
- ./ipfs/import:/import
|
- ./ipfs/import:/import
|
||||||
- ./ipfs/data:/data/ipfs
|
- ./ipfs/data:/data/ipfs
|
||||||
ports:
|
ports:
|
||||||
- "0.0.0.0:8080:8080"
|
- "8080"
|
||||||
- "0.0.0.0:4001:4001"
|
- "4001"
|
||||||
- "0.0.0.0:5001:5001"
|
- "5001"
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
version: "3.2"
|
|
||||||
|
|
||||||
services:
|
|
||||||
lasso:
|
|
||||||
image: cerc/lasso:local
|
|
||||||
restart: always
|
|
||||||
ports:
|
|
||||||
- "0.0.0.0:3000:3000"
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
|
|
||||||
services:
|
|
||||||
|
|
||||||
mainnet-eth-geth-1:
|
|
||||||
restart: always
|
|
||||||
hostname: mainnet-eth-geth-1
|
|
||||||
cap_add:
|
|
||||||
- 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
|
|
||||||
entrypoint: /bin/sh
|
|
||||||
command: -c "/opt/run-geth.sh"
|
|
||||||
volumes:
|
|
||||||
- mainnet_eth_geth_1_data:/root/ethdata
|
|
||||||
- mainnet_eth_config_data:/etc/mainnet-eth
|
|
||||||
- ../config/mainnet-eth/scripts/run-geth.sh:/opt/run-geth.sh
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "8545"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
start_period: 3s
|
|
||||||
ports:
|
|
||||||
- "8545"
|
|
||||||
- "40000"
|
|
||||||
- "6060"
|
|
||||||
|
|
||||||
mainnet-eth-lighthouse-1:
|
|
||||||
restart: always
|
|
||||||
hostname: mainnet-eth-lighthouse-1
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "--tries=1", "--connect-timeout=1", "--quiet", "-O", "-", "http://localhost:8001/eth/v2/beacon/blocks/head"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
start_period: 30s
|
|
||||||
environment:
|
|
||||||
EXECUTION_ENDPOINT: "http://mainnet-eth-geth-1:8551"
|
|
||||||
image: cerc/lighthouse:local
|
|
||||||
entrypoint: /bin/sh
|
|
||||||
command: -c "/opt/run-lighthouse.sh"
|
|
||||||
volumes:
|
|
||||||
- mainnet_eth_lighthouse_1_data:/var/lighthouse-data-dir
|
|
||||||
- mainnet_eth_config_data:/etc/mainnet-eth
|
|
||||||
- ../config/mainnet-eth/scripts/run-lighthouse.sh:/opt/run-lighthouse.sh
|
|
||||||
ports:
|
|
||||||
- "8001"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
mainnet_eth_config_data:
|
|
||||||
mainnet_eth_geth_1_data:
|
|
||||||
mainnet_eth_lighthouse_1_data:
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
|
||||||
go-opera:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: cerc/go-opera:local
|
|
||||||
entrypoint: ["sh", "/docker-entrypoint-scripts.d/start-node.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/mainnet-go-opera/start-node.sh:/docker-entrypoint-scripts.d/start-node.sh
|
|
||||||
# TODO: ports taken from dockerfile, determine which are needed
|
|
||||||
ports:
|
|
||||||
- "5050:5050" # p2p port, needed
|
|
||||||
- "5050:5050/udp"
|
|
||||||
- "18545:18545" # http rpc port
|
|
||||||
- "18546:18546" # websockets rpc port
|
|
||||||
#- "18547" # unknown
|
|
||||||
#- "19090" # unknown
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
services:
|
|
||||||
laconicd:
|
|
||||||
restart: no
|
|
||||||
image: cerc/laconicd:local
|
|
||||||
command: ["/bin/sh", "-c", "while :; do sleep 600; done"]
|
|
||||||
volumes:
|
|
||||||
# The cosmos-sdk node's database directory:
|
|
||||||
- laconicd-data:/root/.laconicd/data
|
|
||||||
# TODO: look at folding these scripts into the container
|
|
||||||
- ../config/mainnet-laconicd/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh
|
|
||||||
- ../config/mainnet-laconicd/export-mykey.sh:/docker-entrypoint-scripts.d/export-mykey.sh
|
|
||||||
- ../config/mainnet-laconicd/export-myaddress.sh:/docker-entrypoint-scripts.d/export-myaddress.sh
|
|
||||||
# TODO: determine which of the ports below is really needed
|
|
||||||
ports:
|
|
||||||
- "6060"
|
|
||||||
- "26657"
|
|
||||||
- "26656"
|
|
||||||
- "9473:9473"
|
|
||||||
- "8545"
|
|
||||||
- "8546"
|
|
||||||
- "9090"
|
|
||||||
- "9091"
|
|
||||||
- "1317"
|
|
||||||
cli:
|
|
||||||
image: cerc/laconic-registry-cli:local
|
|
||||||
volumes:
|
|
||||||
- ../config/mainnet-laconicd/registry-cli-config-template.yml:/registry-cli-config-template.yml
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
laconicd-data:
|
|
||||||
@@ -3,68 +3,29 @@ version: '3.2'
|
|||||||
services:
|
services:
|
||||||
# Builds and serves the MobyMask react-app
|
# Builds and serves the MobyMask react-app
|
||||||
mobymask-app:
|
mobymask-app:
|
||||||
restart: unless-stopped
|
|
||||||
image: cerc/mobymask-ui:local
|
image: cerc/mobymask-ui:local
|
||||||
env_file:
|
env_file:
|
||||||
- ../config/watcher-mobymask-v2/mobymask-params.env
|
- ../config/watcher-mobymask-v2/mobymask-params.env
|
||||||
environment:
|
# Waits for watcher server to be up before app build
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
# Required when running with watcher stack to get deployed contract address
|
||||||
CERC_CHAIN_ID: ${CERC_CHAIN_ID}
|
command:
|
||||||
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
- sh
|
||||||
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
|
- -c
|
||||||
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
- ./wait-for-it.sh -h $${WATCHER_HOST} -p $${WATCHER_PORT} -s -t 0 -- ./mobymask-app-start.sh
|
||||||
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
|
||||||
CERC_BUILD_DIR: "@cerc-io/mobymask-ui/build"
|
|
||||||
working_dir: /scripts
|
|
||||||
command: ["sh", "mobymask-app-start.sh"]
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/network/wait-for-it.sh:/scripts/wait-for-it.sh
|
- ../config/wait-for-it.sh:/app/wait-for-it.sh
|
||||||
- ../config/watcher-mobymask-v2/mobymask-app-start.sh:/scripts/mobymask-app-start.sh
|
- ../config/watcher-mobymask-v2/mobymask-app-config.json:/app/src/mobymask-app-config.json
|
||||||
- peers_ids:/peers
|
- ../config/watcher-mobymask-v2/mobymask-app-start.sh:/app/mobymask-app-start.sh
|
||||||
- mobymask_deployment:/server
|
- mobymask_deployment:/server
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:3002:80"
|
- "0.0.0.0:3002:3000"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "80"]
|
test: ["CMD", "nc", "-v", "localhost", "3000"]
|
||||||
interval: 20s
|
interval: 20s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 15
|
retries: 15
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
extra_hosts:
|
shm_size: '1GB'
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Builds and serves the LXDAO version of MobyMask react-app
|
|
||||||
lxdao-mobymask-app:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: cerc/mobymask-ui:local
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-mobymask-v2/mobymask-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_CHAIN_ID: ${CERC_CHAIN_ID}
|
|
||||||
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
|
||||||
CERC_APP_WATCHER_URL: ${CERC_APP_WATCHER_URL}
|
|
||||||
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
|
||||||
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
|
||||||
CERC_BUILD_DIR: "@cerc-io/mobymask-ui-lxdao/build"
|
|
||||||
working_dir: /scripts
|
|
||||||
command: ["sh", "mobymask-app-start.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/network/wait-for-it.sh:/scripts/wait-for-it.sh
|
|
||||||
- ../config/watcher-mobymask-v2/mobymask-app-start.sh:/scripts/mobymask-app-start.sh
|
|
||||||
- peers_ids:/peers
|
|
||||||
- mobymask_deployment:/server
|
|
||||||
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"
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mobymask_deployment:
|
mobymask_deployment:
|
||||||
peers_ids:
|
|
||||||
|
|||||||
@@ -1,32 +1,21 @@
|
|||||||
version: '3.2'
|
version: '3.2'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# Builds and serves the peer-test react-app
|
|
||||||
peer-test-app:
|
peer-test-app:
|
||||||
restart: unless-stopped
|
# Builds and serves the peer-test react-app
|
||||||
image: cerc/react-peer:local
|
image: cerc/react-peer:local
|
||||||
working_dir: /scripts
|
working_dir: /app/packages/test-app
|
||||||
env_file:
|
env_file:
|
||||||
- ../config/watcher-mobymask-v2/mobymask-params.env
|
- ../config/watcher-mobymask-v2/mobymask-params.env
|
||||||
environment:
|
command: ["sh", "./test-app-start.sh"]
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_RELAY_NODES: ${CERC_RELAY_NODES}
|
|
||||||
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
|
||||||
command: ["sh", "test-app-start.sh"]
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/network/wait-for-it.sh:/scripts/wait-for-it.sh
|
- ../config/watcher-mobymask-v2/test-app-config.json:/app/packages/test-app/src/test-app-config.json
|
||||||
- ../config/watcher-mobymask-v2/test-app-start.sh:/scripts/test-app-start.sh
|
- ../config/watcher-mobymask-v2/test-app-start.sh:/app/packages/test-app/test-app-start.sh
|
||||||
- peers_ids:/peers
|
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:3003:80"
|
- "0.0.0.0:3003:3000"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-v", "localhost", "80"]
|
test: ["CMD", "nc", "-v", "localhost", "3000"]
|
||||||
interval: 20s
|
interval: 20s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 15
|
retries: 15
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
peers_ids:
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
|
||||||
reth:
|
|
||||||
restart: unless-stopped
|
|
||||||
hostname: reth
|
|
||||||
image: cerc/reth:local
|
|
||||||
entrypoint: ["sh", "/docker-entrypoint-scripts.d/start-reth.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/reth/start-reth.sh:/docker-entrypoint-scripts.d/start-reth.sh
|
|
||||||
- reth_data:/root/.local/share/reth
|
|
||||||
- shared_data:/root/.shared_data
|
|
||||||
ports:
|
|
||||||
- "8545:8545" # http rpc
|
|
||||||
- "8546:8546" # ws rpc
|
|
||||||
- "30303:30303" # network listening port
|
|
||||||
- "30303:30303/udp"
|
|
||||||
- "8551" # consensus auth
|
|
||||||
|
|
||||||
lighthouse:
|
|
||||||
restart: unless-stopped
|
|
||||||
hostname: lighthouse
|
|
||||||
image: cerc/lighthouse:local
|
|
||||||
entrypoint: ["sh", "/docker-entrypoint-scripts.d/start-lighthouse.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/reth/start-lighthouse.sh:/docker-entrypoint-scripts.d/start-lighthouse.sh
|
|
||||||
- lighthouse_data:/root/.lighthouse/mainnet
|
|
||||||
- shared_data:/root/.shared_data
|
|
||||||
ports:
|
|
||||||
- "8001"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
reth_data:
|
|
||||||
lighthouse_data:
|
|
||||||
shared_data:
|
|
||||||
@@ -1,13 +1,7 @@
|
|||||||
|
version: "3.2"
|
||||||
services:
|
services:
|
||||||
test:
|
test:
|
||||||
image: cerc/test-container:local
|
image: cerc/test-container:local
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
volumes:
|
|
||||||
- test-data:/data
|
|
||||||
ports:
|
ports:
|
||||||
- "80"
|
- "80"
|
||||||
|
|
||||||
volumes:
|
|
||||||
test-data:
|
|
||||||
|
|||||||
@@ -1,304 +0,0 @@
|
|||||||
version: '3.2'
|
|
||||||
|
|
||||||
services:
|
|
||||||
# Starts the PostgreSQL database for watchers
|
|
||||||
watcher-db:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: postgres:14-alpine
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=vdbm
|
|
||||||
- POSTGRES_MULTIPLE_DATABASES=azimuth-watcher,azimuth-watcher-job-queue,censures-watcher,censures-watcher-job-queue,claims-watcher,claims-watcher-job-queue,conditional-star-release-watcher,conditional-star-release-watcher-job-queue,delegated-sending-watcher,delegated-sending-watcher-job-queue,ecliptic-watcher,ecliptic-watcher-job-queue,linear-star-release-watcher,linear-star-release-watcher-job-queue,polls-watcher,polls-watcher-job-queue
|
|
||||||
- POSTGRES_EXTENSION=azimuth-watcher-job-queue:pgcrypto,censures-watcher-job-queue:pgcrypto,claims-watcher-job-queue:pgcrypto,conditional-star-release-watcher-job-queue:pgcrypto,delegated-sending-watcher-job-queue:pgcrypto,ecliptic-watcher-job-queue:pgcrypto,linear-star-release-watcher-job-queue:pgcrypto,polls-watcher-job-queue:pgcrypto,
|
|
||||||
- POSTGRES_PASSWORD=password
|
|
||||||
volumes:
|
|
||||||
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
|
||||||
- watcher_db_data:/var/lib/postgresql/data
|
|
||||||
ports:
|
|
||||||
- "0.0.0.0:15432:5432"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 10s
|
|
||||||
|
|
||||||
# Starts the azimuth-watcher server
|
|
||||||
azimuth-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/azimuth-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/azimuth-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/azimuth-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/azimuth-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3001"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3001"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the censures-watcher server
|
|
||||||
censures-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/censures-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/censures-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/censures-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/censures-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3002"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3002"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the claims-watcher server
|
|
||||||
claims-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/claims-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/claims-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/claims-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/claims-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3003"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3003"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the conditional-star-release-watcher server
|
|
||||||
conditional-star-release-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/conditional-star-release-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/conditional-star-release-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/conditional-star-release-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/conditional-star-release-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3004"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3004"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the delegated-sending-watcher server
|
|
||||||
delegated-sending-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/delegated-sending-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/delegated-sending-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/delegated-sending-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/delegated-sending-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3005"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3005"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the ecliptic-watcher server
|
|
||||||
ecliptic-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/ecliptic-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/ecliptic-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/ecliptic-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/ecliptic-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3006"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3006"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the linear-star-release-watcher server
|
|
||||||
linear-star-release-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/linear-star-release-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/linear-star-release-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/linear-star-release-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/linear-star-release-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3007"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3007"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the polls-watcher server
|
|
||||||
polls-watcher-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-azimuth/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
working_dir: /app/packages/polls-watcher
|
|
||||||
command: "./start-server.sh"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/watcher-config-template.toml:/app/packages/polls-watcher/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-azimuth/merge-toml.js:/app/packages/polls-watcher/merge-toml.js
|
|
||||||
- ../config/watcher-azimuth/start-server.sh:/app/packages/polls-watcher/start-server.sh
|
|
||||||
ports:
|
|
||||||
- "3008"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "3008"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the gateway-server for proxying queries
|
|
||||||
gateway-server:
|
|
||||||
image: cerc/watcher-azimuth:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
azimuth-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
censures-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
claims-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
conditional-star-release-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
delegated-sending-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
ecliptic-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
linear-star-release-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
polls-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
working_dir: /app/packages/gateway-server
|
|
||||||
command: "yarn server"
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-azimuth/gateway-watchers.json:/app/packages/gateway-server/dist/watchers.json
|
|
||||||
ports:
|
|
||||||
- "0.0.0.0:4000:4000"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-vz", "localhost", "4000"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
watcher_db_data:
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
version: '3.2'
|
|
||||||
|
|
||||||
services:
|
|
||||||
# Starts the PostgreSQL database for watcher
|
|
||||||
gelato-watcher-db:
|
|
||||||
restart: unless-stopped
|
|
||||||
image: postgres:14-alpine
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=vdbm
|
|
||||||
- POSTGRES_MULTIPLE_DATABASES=gelato-watcher,gelato-watcher-job-queue
|
|
||||||
- POSTGRES_EXTENSION=gelato-watcher-job-queue:pgcrypto
|
|
||||||
- POSTGRES_PASSWORD=password
|
|
||||||
volumes:
|
|
||||||
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
|
||||||
- gelato_watcher_db_data:/var/lib/postgresql/data
|
|
||||||
ports:
|
|
||||||
- "0.0.0.0:15432:5432"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 10s
|
|
||||||
|
|
||||||
# Starts the gelato-watcher job runner
|
|
||||||
gelato-watcher-job-runner:
|
|
||||||
image: cerc/watcher-gelato:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
gelato-watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-gelato/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
command: ["./start-job-runner.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-gelato/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-gelato/start-job-runner.sh:/app/start-job-runner.sh
|
|
||||||
ports:
|
|
||||||
- "0.0.0.0:9000:9000"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "9000"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 10s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
# Starts the gelato-watcher server
|
|
||||||
gelato-watcher-server:
|
|
||||||
image: cerc/watcher-gelato:local
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
gelato-watcher-db:
|
|
||||||
condition: service_healthy
|
|
||||||
gelato-watcher-job-runner:
|
|
||||||
condition: service_healthy
|
|
||||||
env_file:
|
|
||||||
- ../config/watcher-gelato/watcher-params.env
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
CERC_IPLD_ETH_RPC: ${CERC_IPLD_ETH_RPC}
|
|
||||||
CERC_IPLD_ETH_GQL: ${CERC_IPLD_ETH_GQL}
|
|
||||||
CERC_USE_STATE_SNAPSHOT: ${CERC_USE_STATE_SNAPSHOT}
|
|
||||||
CERC_SNAPSHOT_GQL_ENDPOINT: ${CERC_SNAPSHOT_GQL_ENDPOINT}
|
|
||||||
CERC_SNAPSHOT_BLOCKHASH: ${CERC_SNAPSHOT_BLOCKHASH}
|
|
||||||
command: ["./start-server.sh"]
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-gelato/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
|
||||||
- ../config/watcher-gelato/start-server.sh:/app/start-server.sh
|
|
||||||
- ../config/watcher-gelato/create-and-import-checkpoint.sh:/app/create-and-import-checkpoint.sh
|
|
||||||
- gelato_watcher_state_gql:/app/state_checkpoint
|
|
||||||
ports:
|
|
||||||
- "0.0.0.0:3008:3008"
|
|
||||||
- "0.0.0.0:9001:9001"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "3008"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 5s
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
gelato_watcher_db_data:
|
|
||||||
gelato_watcher_state_gql:
|
|
||||||
@@ -14,7 +14,7 @@ services:
|
|||||||
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
|
||||||
- mobymask_watcher_db_data:/var/lib/postgresql/data
|
- mobymask_watcher_db_data:/var/lib/postgresql/data
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:15432:5432"
|
- "0.0.0.0:15432:5432"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
test: ["CMD", "nc", "-v", "localhost", "5432"]
|
||||||
interval: 20s
|
interval: 20s
|
||||||
@@ -22,8 +22,8 @@ services:
|
|||||||
retries: 15
|
retries: 15
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
|
|
||||||
# Deploys the MobyMask contract and generates an invite link
|
# Deploys MobyMask contract and generates an invite link
|
||||||
# Deployment is skipped if CERC_DEPLOYED_CONTRACT env is set
|
# Deployment is skipped if DEPLOYED_CONTRACT env is already set
|
||||||
mobymask:
|
mobymask:
|
||||||
image: cerc/mobymask:local
|
image: cerc/mobymask:local
|
||||||
working_dir: /app/packages/server
|
working_dir: /app/packages/server
|
||||||
@@ -31,73 +31,50 @@ services:
|
|||||||
- ../config/watcher-mobymask-v2/optimism-params.env
|
- ../config/watcher-mobymask-v2/optimism-params.env
|
||||||
- ../config/watcher-mobymask-v2/mobymask-params.env
|
- ../config/watcher-mobymask-v2/mobymask-params.env
|
||||||
environment:
|
environment:
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
- ENV=PROD
|
||||||
ENV: "PROD"
|
# Waits for L2 Optimism Geth and Node servers to be up before deploying contract
|
||||||
CERC_L2_GETH_RPC: ${CERC_L2_GETH_RPC}
|
command:
|
||||||
CERC_L1_ACCOUNTS_CSV_URL: ${CERC_L1_ACCOUNTS_CSV_URL}
|
- sh
|
||||||
CERC_PRIVATE_KEY_DEPLOYER: ${CERC_PRIVATE_KEY_DEPLOYER}
|
- -c
|
||||||
CERC_MOBYMASK_APP_BASE_URI: ${CERC_MOBYMASK_APP_BASE_URI}
|
- |
|
||||||
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
./wait-for-it.sh -h $${L2_GETH_HOST} -p $${L2_GETH_PORT} -s -t 0 && \
|
||||||
CERC_L2_GETH_HOST: ${CERC_L2_GETH_HOST}
|
./wait-for-it.sh -h $${L2_NODE_HOST} -p $${L2_NODE_PORT} -s -t 0 && \
|
||||||
CERC_L2_GETH_PORT: ${CERC_L2_GETH_PORT}
|
./deploy-and-generate-invite.sh
|
||||||
CERC_L2_NODE_HOST: ${CERC_L2_NODE_HOST}
|
|
||||||
CERC_L2_NODE_PORT: ${CERC_L2_NODE_PORT}
|
|
||||||
command: ["sh", "deploy-and-generate-invite.sh"]
|
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/network/wait-for-it.sh:/app/packages/server/wait-for-it.sh
|
- ../config/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/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
|
- ../config/watcher-mobymask-v2/deploy-and-generate-invite.sh:/app/packages/server/deploy-and-generate-invite.sh
|
||||||
- mobymask_deployment:/app/packages/server
|
- mobymask_deployment:/app/packages/server
|
||||||
|
- fixturenet_geth_accounts:/geth-accounts:ro
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "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
|
|
||||||
|
|
||||||
# Starts the mobymask-v2-watcher server
|
# Starts the mobymask-v2-watcher server
|
||||||
mobymask-watcher-server:
|
mobymask-watcher-server:
|
||||||
image: cerc/watcher-mobymask-v2:local
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
mobymask-watcher-db:
|
mobymask-watcher-db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
peer-ids-gen:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
mobymask:
|
mobymask:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
|
image: cerc/watcher-mobymask-v2:local
|
||||||
env_file:
|
env_file:
|
||||||
- ../config/watcher-mobymask-v2/optimism-params.env
|
- ../config/watcher-mobymask-v2/optimism-params.env
|
||||||
- ../config/watcher-mobymask-v2/mobymask-params.env
|
- ../config/watcher-mobymask-v2/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_PEER: ${CERC_PRIVATE_KEY_PEER}
|
|
||||||
CERC_RELAY_PEERS: ${CERC_RELAY_PEERS}
|
|
||||||
CERC_DENY_MULTIADDRS: ${CERC_DENY_MULTIADDRS}
|
|
||||||
CERC_RELAY_ANNOUNCE_DOMAIN: ${CERC_RELAY_ANNOUNCE_DOMAIN}
|
|
||||||
CERC_ENABLE_PEER_L2_TXS: ${CERC_ENABLE_PEER_L2_TXS}
|
|
||||||
CERC_DEPLOYED_CONTRACT: ${CERC_DEPLOYED_CONTRACT}
|
|
||||||
command: ["sh", "start-server.sh"]
|
command: ["sh", "start-server.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
- ../config/watcher-mobymask-v2/watcher-config-template.toml:/app/environments/watcher-config-template.toml
|
- ../config/watcher-mobymask-v2/watcher-config-template.toml:/app/packages/mobymask-v2-watcher/environments/watcher-config-template.toml
|
||||||
- ../config/watcher-mobymask-v2/start-server.sh:/app/start-server.sh
|
- ../config/watcher-mobymask-v2/peer.env:/app/packages/peer/.env
|
||||||
- peers_ids:/app/peers
|
- ../config/watcher-mobymask-v2/relay-id.json:/app/packages/mobymask-v2-watcher/relay-id.json
|
||||||
|
- ../config/watcher-mobymask-v2/peer-id.json:/app/packages/mobymask-v2-watcher/peer-id.json
|
||||||
|
- ../config/watcher-mobymask-v2/start-server.sh:/app/packages/mobymask-v2-watcher/start-server.sh
|
||||||
- mobymask_deployment:/server
|
- mobymask_deployment:/server
|
||||||
|
- fixturenet_geth_accounts:/geth-accounts:ro
|
||||||
# Expose GQL, metrics and relay node ports
|
# Expose GQL, metrics and relay node ports
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:3001:3001"
|
- "0.0.0.0:3001:3001"
|
||||||
- "127.0.0.1:9001:9001"
|
- "0.0.0.0:9001:9001"
|
||||||
- "127.0.0.1:9090:9090"
|
- "0.0.0.0:9090:9090"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "busybox", "nc", "localhost", "9090"]
|
test: ["CMD", "busybox", "nc", "localhost", "9090"]
|
||||||
interval: 20s
|
interval: 20s
|
||||||
@@ -107,29 +84,7 @@ services:
|
|||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
# Container to run peer tests
|
|
||||||
peer-tests:
|
|
||||||
image: cerc/watcher-ts:local
|
|
||||||
restart: on-failure
|
|
||||||
depends_on:
|
|
||||||
mobymask-watcher-server:
|
|
||||||
condition: service_healthy
|
|
||||||
peer-ids-gen:
|
|
||||||
condition: service_completed_successfully
|
|
||||||
environment:
|
|
||||||
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
|
|
||||||
working_dir: /app/packages/peer
|
|
||||||
command:
|
|
||||||
- sh
|
|
||||||
- -c
|
|
||||||
- |
|
|
||||||
./set-tests-env.sh && \
|
|
||||||
tail -f /dev/null
|
|
||||||
volumes:
|
|
||||||
- ../config/watcher-mobymask-v2/set-tests-env.sh:/app/packages/peer/set-tests-env.sh
|
|
||||||
- peers_ids:/peer-ids
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
mobymask_watcher_db_data:
|
mobymask_watcher_db_data:
|
||||||
peers_ids:
|
|
||||||
mobymask_deployment:
|
mobymask_deployment:
|
||||||
|
fixturenet_geth_accounts:
|
||||||
|
|||||||
@@ -75,8 +75,6 @@ services:
|
|||||||
uni-watcher-server:
|
uni-watcher-server:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
ipld-eth-server:
|
|
||||||
condition: service_healthy
|
|
||||||
uniswap-watcher-db:
|
uniswap-watcher-db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
uni-watcher-job-runner:
|
uni-watcher-job-runner:
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ CERC_STATEDIFF_DB_PORT=5432
|
|||||||
CERC_STATEDIFF_DB_NAME="cerc_testing"
|
CERC_STATEDIFF_DB_NAME="cerc_testing"
|
||||||
CERC_STATEDIFF_DB_USER="vdbm"
|
CERC_STATEDIFF_DB_USER="vdbm"
|
||||||
CERC_STATEDIFF_DB_PASSWORD="password"
|
CERC_STATEDIFF_DB_PASSWORD="password"
|
||||||
CERC_STATEDIFF_DB_GOOSE_MIN_VER=${CERC_STATEDIFF_DB_GOOSE_MIN_VER:-18}
|
CERC_STATEDIFF_DB_GOOSE_MIN_VER=23
|
||||||
CERC_STATEDIFF_DB_LOG_STATEMENTS="false"
|
CERC_STATEDIFF_DB_LOG_STATEMENTS="false"
|
||||||
CERC_STATEDIFF_WORKERS=2
|
|
||||||
|
|
||||||
CERC_GETH_VMODULE="statediff/*=5,rpc/*=5"
|
CERC_GETH_VMODULE="statediff/*=5,rpc/*=5"
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
laconicd keys show mykey | grep address | cut -d ' ' -f 3
|
|
||||||
@@ -5,5 +5,3 @@ services:
|
|||||||
userKey: REPLACE_WITH_MYKEY
|
userKey: REPLACE_WITH_MYKEY
|
||||||
bondId:
|
bondId:
|
||||||
chainId: laconic_9000-1
|
chainId: laconic_9000-1
|
||||||
gas: 250000
|
|
||||||
fees: 200000aphoton
|
|
||||||
|
|||||||
-1
@@ -1 +0,0 @@
|
|||||||
}+V�{iνΆΠΉ�²�¨ΣΗ\k»qς␍—?δΪAΒfκ’~μ©™LΉ�tb·yqτ·²ηξΔ�Ο?ξaΣ�J
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
Βfκ’~μ©™LΉ�tb·yqτ·²ηξΔ�Ο?ξaΣ�J
|
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -1,71 +0,0 @@
|
|||||||
{
|
|
||||||
"t01000": {
|
|
||||||
"ID": "t01000",
|
|
||||||
"Owner": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"Worker": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"PeerId": "12D3KooWG5q6pWJVdPBhDBv9AjWVbUh4xxTAZ7xvgZSjczWuD2Z9",
|
|
||||||
"MarketBalance": "0",
|
|
||||||
"PowerBalance": "0",
|
|
||||||
"SectorSize": 2048,
|
|
||||||
"Sectors": [
|
|
||||||
{
|
|
||||||
"CommR": {
|
|
||||||
"/": "bagboea4b5abcboxypcewlkmrat2myu4vthk3ii2pcomak7nhqmdbb6sxlolp2wdf"
|
|
||||||
},
|
|
||||||
"CommD": {
|
|
||||||
"/": "baga6ea4seaqn3jfixthmdgksv4vhfeuyvr6upw6tvaqbmzmsyxnzosm4pwgnmlq"
|
|
||||||
},
|
|
||||||
"SectorID": 0,
|
|
||||||
"Deal": {
|
|
||||||
"PieceCID": {
|
|
||||||
"/": "baga6ea4seaqn3jfixthmdgksv4vhfeuyvr6upw6tvaqbmzmsyxnzosm4pwgnmlq"
|
|
||||||
},
|
|
||||||
"PieceSize": 2048,
|
|
||||||
"VerifiedDeal": false,
|
|
||||||
"Client": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"Provider": "t01000",
|
|
||||||
"Label": "0",
|
|
||||||
"StartEpoch": 0,
|
|
||||||
"EndEpoch": 9001,
|
|
||||||
"StoragePricePerEpoch": "0",
|
|
||||||
"ProviderCollateral": "0",
|
|
||||||
"ClientCollateral": "0"
|
|
||||||
},
|
|
||||||
"DealClientKey": {
|
|
||||||
"Type": "bls",
|
|
||||||
"PrivateKey": "tFvSRiSg2G3Ssgg0PSYy23XyjaIMXpsmdyG2B7UFLT4="
|
|
||||||
},
|
|
||||||
"ProofType": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"CommR": {
|
|
||||||
"/": "bagboea4b5abcb6krzypqcczhcnbeyjcqkeo6omfergm336o3kitugh3jgjog2yqq"
|
|
||||||
},
|
|
||||||
"CommD": {
|
|
||||||
"/": "baga6ea4seaqhondpb2373hjasjplxvbjzi5n5mm4fbbhjxp5ptnbq4cibapkeii"
|
|
||||||
},
|
|
||||||
"SectorID": 1,
|
|
||||||
"Deal": {
|
|
||||||
"PieceCID": {
|
|
||||||
"/": "baga6ea4seaqhondpb2373hjasjplxvbjzi5n5mm4fbbhjxp5ptnbq4cibapkeii"
|
|
||||||
},
|
|
||||||
"PieceSize": 2048,
|
|
||||||
"VerifiedDeal": false,
|
|
||||||
"Client": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"Provider": "t01000",
|
|
||||||
"Label": "1",
|
|
||||||
"StartEpoch": 0,
|
|
||||||
"EndEpoch": 9001,
|
|
||||||
"StoragePricePerEpoch": "0",
|
|
||||||
"ProviderCollateral": "0",
|
|
||||||
"ClientCollateral": "0"
|
|
||||||
},
|
|
||||||
"DealClientKey": {
|
|
||||||
"Type": "bls",
|
|
||||||
"PrivateKey": "tFvSRiSg2G3Ssgg0PSYy23XyjaIMXpsmdyG2B7UFLT4="
|
|
||||||
},
|
|
||||||
"ProofType": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
7b2254797065223a22626c73222c22507269766174654b6579223a227446765352695367324733537367673050535979323358796a61494d5870736d64794732423755464c54343d227d
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"ID": "f355523e-69d0-4984-bd0e-9588487c6231",
|
|
||||||
"Weight": 0,
|
|
||||||
"CanSeal": false,
|
|
||||||
"CanStore": false,
|
|
||||||
"MaxStorage": 0,
|
|
||||||
"Groups": null,
|
|
||||||
"AllowTo": null,
|
|
||||||
"AllowTypes": null,
|
|
||||||
"DenyTypes": null
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,108 +0,0 @@
|
|||||||
{
|
|
||||||
"NetworkVersion": 18,
|
|
||||||
"Accounts": [
|
|
||||||
{
|
|
||||||
"Type": "account",
|
|
||||||
"Balance": "50000000000000000000000000",
|
|
||||||
"Meta": {
|
|
||||||
"Owner": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"Miners": [
|
|
||||||
{
|
|
||||||
"ID": "t01000",
|
|
||||||
"Owner": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"Worker": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"PeerId": "12D3KooWG5q6pWJVdPBhDBv9AjWVbUh4xxTAZ7xvgZSjczWuD2Z9",
|
|
||||||
"MarketBalance": "0",
|
|
||||||
"PowerBalance": "0",
|
|
||||||
"SectorSize": 2048,
|
|
||||||
"Sectors": [
|
|
||||||
{
|
|
||||||
"CommR": {
|
|
||||||
"/": "bagboea4b5abcboxypcewlkmrat2myu4vthk3ii2pcomak7nhqmdbb6sxlolp2wdf"
|
|
||||||
},
|
|
||||||
"CommD": {
|
|
||||||
"/": "baga6ea4seaqn3jfixthmdgksv4vhfeuyvr6upw6tvaqbmzmsyxnzosm4pwgnmlq"
|
|
||||||
},
|
|
||||||
"SectorID": 0,
|
|
||||||
"Deal": {
|
|
||||||
"PieceCID": {
|
|
||||||
"/": "baga6ea4seaqn3jfixthmdgksv4vhfeuyvr6upw6tvaqbmzmsyxnzosm4pwgnmlq"
|
|
||||||
},
|
|
||||||
"PieceSize": 2048,
|
|
||||||
"VerifiedDeal": false,
|
|
||||||
"Client": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"Provider": "t01000",
|
|
||||||
"Label": "0",
|
|
||||||
"StartEpoch": 0,
|
|
||||||
"EndEpoch": 9001,
|
|
||||||
"StoragePricePerEpoch": "0",
|
|
||||||
"ProviderCollateral": "0",
|
|
||||||
"ClientCollateral": "0"
|
|
||||||
},
|
|
||||||
"DealClientKey": {
|
|
||||||
"Type": "bls",
|
|
||||||
"PrivateKey": "tFvSRiSg2G3Ssgg0PSYy23XyjaIMXpsmdyG2B7UFLT4="
|
|
||||||
},
|
|
||||||
"ProofType": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"CommR": {
|
|
||||||
"/": "bagboea4b5abcb6krzypqcczhcnbeyjcqkeo6omfergm336o3kitugh3jgjog2yqq"
|
|
||||||
},
|
|
||||||
"CommD": {
|
|
||||||
"/": "baga6ea4seaqhondpb2373hjasjplxvbjzi5n5mm4fbbhjxp5ptnbq4cibapkeii"
|
|
||||||
},
|
|
||||||
"SectorID": 1,
|
|
||||||
"Deal": {
|
|
||||||
"PieceCID": {
|
|
||||||
"/": "baga6ea4seaqhondpb2373hjasjplxvbjzi5n5mm4fbbhjxp5ptnbq4cibapkeii"
|
|
||||||
},
|
|
||||||
"PieceSize": 2048,
|
|
||||||
"VerifiedDeal": false,
|
|
||||||
"Client": "t3spusn5ia57qezc3fwpe3n2lhb4y4xt67xoflqbqy2muliparw2uktevletuv7gl4qakjpafgcl7jk2s2er3q",
|
|
||||||
"Provider": "t01000",
|
|
||||||
"Label": "1",
|
|
||||||
"StartEpoch": 0,
|
|
||||||
"EndEpoch": 9001,
|
|
||||||
"StoragePricePerEpoch": "0",
|
|
||||||
"ProviderCollateral": "0",
|
|
||||||
"ClientCollateral": "0"
|
|
||||||
},
|
|
||||||
"DealClientKey": {
|
|
||||||
"Type": "bls",
|
|
||||||
"PrivateKey": "tFvSRiSg2G3Ssgg0PSYy23XyjaIMXpsmdyG2B7UFLT4="
|
|
||||||
},
|
|
||||||
"ProofType": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"NetworkName": "localnet-6d52dae5-ff29-4bac-a45d-f84e6c07564c",
|
|
||||||
"VerifregRootKey": {
|
|
||||||
"Type": "multisig",
|
|
||||||
"Balance": "0",
|
|
||||||
"Meta": {
|
|
||||||
"Signers": [
|
|
||||||
"t1ceb34gnsc6qk5dt6n7xg6ycwzasjhbxm3iylkiy"
|
|
||||||
],
|
|
||||||
"Threshold": 1,
|
|
||||||
"VestingDuration": 0,
|
|
||||||
"VestingStart": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"RemainderAccount": {
|
|
||||||
"Type": "multisig",
|
|
||||||
"Balance": "0",
|
|
||||||
"Meta": {
|
|
||||||
"Signers": [
|
|
||||||
"t1ceb34gnsc6qk5dt6n7xg6ycwzasjhbxm3iylkiy"
|
|
||||||
],
|
|
||||||
"Threshold": 1,
|
|
||||||
"VestingDuration": 0,
|
|
||||||
"VestingStart": 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
LOTUS_PATH=~/.lotus-local-net
|
|
||||||
LOTUS_MINER_PATH=~/.lotus-miner-local-net
|
|
||||||
LOTUS_SKIP_GENESIS_CHECK=_yes_
|
|
||||||
CGO_CFLAGS_ALLOW="-D__BLST_PORTABLE__"
|
|
||||||
CGO_CFLAGS="-D__BLST_PORTABLE__"
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
lotus --version
|
|
||||||
|
|
||||||
# # remove old bootnode peer info if present
|
|
||||||
# [ -f /root/.lotus-shared/miner.addr ] && rm /root/.lotus-shared/miner.addr
|
|
||||||
|
|
||||||
##TODO: generate genesis files inside container instead of bundling in config dir
|
|
||||||
##something like commands below should work, other scripts/compose will have to be updated to corresponding directories
|
|
||||||
# lotus fetch-params 2048
|
|
||||||
# lotus-seed pre-seal --sector-size 2KiB --num-sectors 2
|
|
||||||
# lotus-seed genesis new localnet.json
|
|
||||||
# lotus-seed genesis add-miner localnet.json ~/.genesis-sectors/pre-seal-t01000.json
|
|
||||||
|
|
||||||
|
|
||||||
# start daemon
|
|
||||||
nohup lotus daemon --genesis=/devgen.car --profile=bootstrapper --bootstrap=false > /var/log/lotus.log 2>&1 &
|
|
||||||
|
|
||||||
# Loop until the daemon is started
|
|
||||||
echo "Waiting for daemon to start..."
|
|
||||||
while ! grep -q "started ChainNotify channel" /var/log/lotus.log ; do
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
echo "Daemon started."
|
|
||||||
|
|
||||||
# publish bootnode peer info to shared volume
|
|
||||||
lotus net listen | awk 'NR==1{print}' > /root/.lotus-shared/miner.addr
|
|
||||||
|
|
||||||
# if miner not already initialized
|
|
||||||
if [ ! -d /root/.lotus-miner-local-net ]; then
|
|
||||||
# initialize miner
|
|
||||||
lotus wallet import --as-default ~/.genesis-sectors/pre-seal-t01000.key
|
|
||||||
lotus-miner init --genesis-miner --actor=t01000 --sector-size=2KiB --pre-sealed-sectors=~/.genesis-sectors --pre-sealed-metadata=~/.genesis-sectors/pre-seal-t01000.json --nosync
|
|
||||||
fi
|
|
||||||
|
|
||||||
# start miner
|
|
||||||
nohup lotus-miner run --nosync &
|
|
||||||
|
|
||||||
tail -f /dev/null
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
lotus --version
|
|
||||||
|
|
||||||
##TODO: paths can use values from lotus-env.env file
|
|
||||||
|
|
||||||
# if not already initialized
|
|
||||||
if [ ! -f /root/.lotus-local-net/config.toml ]; then
|
|
||||||
# init node config
|
|
||||||
mkdir $HOME/.lotus-local-net
|
|
||||||
lotus config default > $HOME/.lotus-local-net/config.toml
|
|
||||||
|
|
||||||
# add bootstrap peer info if available
|
|
||||||
if [ -f /root/.lotus-shared/miner.addr ]; then
|
|
||||||
MINER_ADDR=\"$(cat /root/.lotus-shared/miner.addr)\"
|
|
||||||
# add bootstrap peer id to config file
|
|
||||||
sed -i "/^\[Libp2p\]/a \ \ BootstrapPeers = [$MINER_ADDR]" $HOME/.lotus-local-net/config.toml
|
|
||||||
else
|
|
||||||
echo "Bootstrap peer info not found, unable to configure. Manual peering will be required."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# start node
|
|
||||||
lotus daemon --genesis=/devgen.car
|
|
||||||
@@ -4,8 +4,6 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_L1_RPC="${CERC_L1_RPC:-${DEFAULT_CERC_L1_RPC}}"
|
|
||||||
|
|
||||||
# Check existing config if it exists
|
# Check existing config if it exists
|
||||||
if [ -f /app/jwt.txt ] && [ -f /app/rollup.json ]; then
|
if [ -f /app/jwt.txt ] && [ -f /app/rollup.json ]; then
|
||||||
echo "Found existing L2 config, cross-checking with L1 deployment config"
|
echo "Found existing L2 config, cross-checking with L1 deployment config"
|
||||||
@@ -32,6 +30,6 @@ op-node genesis l2 \
|
|||||||
--deployment-dir /contracts-bedrock/deployments/getting-started/ \
|
--deployment-dir /contracts-bedrock/deployments/getting-started/ \
|
||||||
--outfile.l2 /app/genesis.json \
|
--outfile.l2 /app/genesis.json \
|
||||||
--outfile.rollup /app/rollup.json \
|
--outfile.rollup /app/rollup.json \
|
||||||
--l1-rpc $CERC_L1_RPC
|
--l1-rpc $L1_RPC
|
||||||
|
|
||||||
openssl rand -hex 32 > /app/jwt.txt
|
openssl rand -hex 32 > /app/jwt.txt
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
# Defaults
|
# Change if pointing to an external L1 endpoint
|
||||||
|
|
||||||
# L1 endpoint
|
# L1 endpoint
|
||||||
DEFAULT_CERC_L1_CHAIN_ID=1212
|
L1_CHAIN_ID=1212
|
||||||
DEFAULT_CERC_L1_RPC="http://fixturenet-eth-geth-1:8545"
|
L1_RPC="http://fixturenet-eth-geth-1:8545"
|
||||||
DEFAULT_CERC_L1_HOST="fixturenet-eth-geth-1"
|
L1_HOST="fixturenet-eth-geth-1"
|
||||||
DEFAULT_CERC_L1_PORT=8545
|
L1_PORT=8545
|
||||||
|
|
||||||
# URL to get CSV with credentials for accounts on L1
|
# Credentials for accounts on L1 to send balance to Optimism Proxy contract from
|
||||||
# that are used to send balance to Optimism Proxy contract
|
|
||||||
# (enables them to do transactions on L2)
|
# (enables them to do transactions on L2)
|
||||||
DEFAULT_CERC_L1_ACCOUNTS_CSV_URL="http://fixturenet-eth-bootnode-geth:9898/accounts.csv"
|
L1_ADDRESS=
|
||||||
|
L1_PRIV_KEY=
|
||||||
|
L1_ADDRESS_2=
|
||||||
|
L1_PRIV_KEY_2=
|
||||||
|
|||||||
@@ -4,12 +4,7 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_L1_CHAIN_ID="${CERC_L1_CHAIN_ID:-${DEFAULT_CERC_L1_CHAIN_ID}}"
|
echo "Using L1 RPC endpoint ${L1_RPC}"
|
||||||
CERC_L1_RPC="${CERC_L1_RPC:-${DEFAULT_CERC_L1_RPC}}"
|
|
||||||
|
|
||||||
CERC_L1_ACCOUNTS_CSV_URL="${CERC_L1_ACCOUNTS_CSV_URL:-${DEFAULT_CERC_L1_ACCOUNTS_CSV_URL}}"
|
|
||||||
|
|
||||||
echo "Using L1 RPC endpoint ${CERC_L1_RPC}"
|
|
||||||
|
|
||||||
IMPORT_1="import './verify-contract-deployment'"
|
IMPORT_1="import './verify-contract-deployment'"
|
||||||
IMPORT_2="import './rekey-json'"
|
IMPORT_2="import './rekey-json'"
|
||||||
@@ -23,7 +18,7 @@ if ! grep -Fxq "$IMPORT_1" tasks/index.ts; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Update the chainId in the hardhat config
|
# Update the chainId in the hardhat config
|
||||||
sed -i "/getting-started/ {n; s/.*chainId.*/ chainId: $CERC_L1_CHAIN_ID,/}" hardhat.config.ts
|
sed -i "/getting-started/ {n; s/.*chainId.*/ chainId: $L1_CHAIN_ID,/}" hardhat.config.ts
|
||||||
|
|
||||||
# Exit if a deployment already exists (on restarts)
|
# Exit if a deployment already exists (on restarts)
|
||||||
# Note: fixturenet-eth-geth currently starts fresh on a restart
|
# Note: fixturenet-eth-geth currently starts fresh on a restart
|
||||||
@@ -59,32 +54,19 @@ PROPOSER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Proposer.address')
|
|||||||
BATCHER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Batcher.address')
|
BATCHER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Batcher.address')
|
||||||
SEQUENCER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Sequencer.address')
|
SEQUENCER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Sequencer.address')
|
||||||
|
|
||||||
# Get the private keys of L1 accounts
|
# Read the private key of L1 accounts
|
||||||
if [ -n "$CERC_L1_ACCOUNTS_CSV_URL" ] && \
|
if [ -f /geth-accounts/accounts.csv ]; then
|
||||||
l1_accounts_response=$(curl -L --write-out '%{http_code}' --silent --output /dev/null "$CERC_L1_ACCOUNTS_CSV_URL") && \
|
echo "Using L1 account credentials from the mounted volume"
|
||||||
[ "$l1_accounts_response" -eq 200 ];
|
L1_ADDRESS=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 2)
|
||||||
then
|
L1_PRIV_KEY=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
|
||||||
echo "Fetching L1 account credentials using provided URL"
|
L1_ADDRESS_2=$(awk -F, 'NR==2{print $(NF-1)}' /geth-accounts/accounts.csv)
|
||||||
mkdir -p /geth-accounts
|
L1_PRIV_KEY_2=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
|
||||||
wget -O /geth-accounts/accounts.csv "$CERC_L1_ACCOUNTS_CSV_URL"
|
|
||||||
|
|
||||||
CERC_L1_ADDRESS=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 2)
|
|
||||||
CERC_L1_PRIV_KEY=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
|
|
||||||
CERC_L1_ADDRESS_2=$(awk -F, 'NR==2{print $(NF-1)}' /geth-accounts/accounts.csv)
|
|
||||||
CERC_L1_PRIV_KEY_2=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
|
|
||||||
else
|
else
|
||||||
echo "Couldn't fetch L1 account credentials, using them from env"
|
echo "Using L1 account credentials from env"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Send balances to the above L2 addresses
|
|
||||||
yarn hardhat send-balance --to "${ADMIN_ADDRESS}" --amount 2 --private-key "${CERC_L1_PRIV_KEY}" --network getting-started
|
|
||||||
yarn hardhat send-balance --to "${PROPOSER_ADDRESS}" --amount 5 --private-key "${CERC_L1_PRIV_KEY}" --network getting-started
|
|
||||||
yarn hardhat send-balance --to "${BATCHER_ADDRESS}" --amount 1000 --private-key "${CERC_L1_PRIV_KEY}" --network getting-started
|
|
||||||
|
|
||||||
echo "Balances sent to L2 accounts"
|
|
||||||
|
|
||||||
# Select a finalized L1 block as the starting point for roll ups
|
# Select a finalized L1 block as the starting point for roll ups
|
||||||
until FINALIZED_BLOCK=$(cast block finalized --rpc-url "$CERC_L1_RPC"); do
|
until FINALIZED_BLOCK=$(cast block finalized --rpc-url "$L1_RPC"); do
|
||||||
echo "Waiting for a finalized L1 block to exist, retrying after 10s"
|
echo "Waiting for a finalized L1 block to exist, retrying after 10s"
|
||||||
sleep 10
|
sleep 10
|
||||||
done
|
done
|
||||||
@@ -95,22 +77,29 @@ L1_BLOCKTIMESTAMP=$(echo "$FINALIZED_BLOCK" | awk '/timestamp/{print $2}')
|
|||||||
|
|
||||||
echo "Selected L1 block ${L1_BLOCKNUMBER} as the starting block for roll ups"
|
echo "Selected L1 block ${L1_BLOCKNUMBER} as the starting block for roll ups"
|
||||||
|
|
||||||
|
# Send balances to the above L2 addresses
|
||||||
|
yarn hardhat send-balance --to "${ADMIN_ADDRESS}" --amount 2 --private-key "${L1_PRIV_KEY}" --network getting-started
|
||||||
|
yarn hardhat send-balance --to "${PROPOSER_ADDRESS}" --amount 5 --private-key "${L1_PRIV_KEY}" --network getting-started
|
||||||
|
yarn hardhat send-balance --to "${BATCHER_ADDRESS}" --amount 1000 --private-key "${L1_PRIV_KEY}" --network getting-started
|
||||||
|
|
||||||
|
echo "Balances sent to L2 accounts"
|
||||||
|
|
||||||
# Update the deployment config
|
# Update the deployment config
|
||||||
sed -i 's/"l2OutputOracleStartingTimestamp": TIMESTAMP/"l2OutputOracleStartingTimestamp": '"$L1_BLOCKTIMESTAMP"'/g' deploy-config/getting-started.json
|
sed -i 's/"l2OutputOracleStartingTimestamp": TIMESTAMP/"l2OutputOracleStartingTimestamp": '"$L1_BLOCKTIMESTAMP"'/g' deploy-config/getting-started.json
|
||||||
jq --arg chainid "$CERC_L1_CHAIN_ID" '.l1ChainID = ($chainid | tonumber)' deploy-config/getting-started.json > tmp.json && mv tmp.json deploy-config/getting-started.json
|
jq --arg chainid "$L1_CHAIN_ID" '.l1ChainID = ($chainid | tonumber)' deploy-config/getting-started.json > tmp.json && mv tmp.json deploy-config/getting-started.json
|
||||||
|
|
||||||
node update-config.js deploy-config/getting-started.json "$ADMIN_ADDRESS" "$PROPOSER_ADDRESS" "$BATCHER_ADDRESS" "$SEQUENCER_ADDRESS" "$L1_BLOCKHASH"
|
node update-config.js deploy-config/getting-started.json "$ADMIN_ADDRESS" "$PROPOSER_ADDRESS" "$BATCHER_ADDRESS" "$SEQUENCER_ADDRESS" "$L1_BLOCKHASH"
|
||||||
|
|
||||||
echo "Updated the deployment config"
|
echo "Updated the deployment config"
|
||||||
|
|
||||||
# Create a .env file
|
# Create a .env file
|
||||||
echo "L1_RPC=$CERC_L1_RPC" > .env
|
echo "L1_RPC=$L1_RPC" > .env
|
||||||
echo "PRIVATE_KEY_DEPLOYER=$ADMIN_PRIV_KEY" >> .env
|
echo "PRIVATE_KEY_DEPLOYER=$ADMIN_PRIV_KEY" >> .env
|
||||||
|
|
||||||
echo "Deploying the L1 smart contracts, this will take a while..."
|
echo "Deploying the L1 smart contracts, this will take a while..."
|
||||||
|
|
||||||
# Deploy the L1 smart contracts
|
# Deploy the L1 smart contracts
|
||||||
yarn hardhat deploy --network getting-started --tags l1
|
yarn hardhat deploy --network getting-started
|
||||||
|
|
||||||
echo "Deployed the L1 smart contracts"
|
echo "Deployed the L1 smart contracts"
|
||||||
|
|
||||||
@@ -120,12 +109,12 @@ PROXY_ADDRESS=$(echo "$PROXY_JSON" | jq -r '.address')
|
|||||||
|
|
||||||
# Send balance to the above Proxy contract in L1 for reflecting balance in L2
|
# Send balance to the above Proxy contract in L1 for reflecting balance in L2
|
||||||
# First account
|
# First account
|
||||||
yarn hardhat send-balance --to "${PROXY_ADDRESS}" --amount 1 --private-key "${CERC_L1_PRIV_KEY}" --network getting-started
|
yarn hardhat send-balance --to "${PROXY_ADDRESS}" --amount 1 --private-key "${L1_PRIV_KEY}" --network getting-started
|
||||||
# Second account
|
# Second account
|
||||||
yarn hardhat send-balance --to "${PROXY_ADDRESS}" --amount 1 --private-key "${CERC_L1_PRIV_KEY_2}" --network getting-started
|
yarn hardhat send-balance --to "${PROXY_ADDRESS}" --amount 1 --private-key "${L1_PRIV_KEY_2}" --network getting-started
|
||||||
|
|
||||||
echo "Balance sent to Proxy L2 contract"
|
echo "Balance sent to Proxy L2 contract"
|
||||||
echo "Use following accounts for transactions in L2:"
|
echo "Use following accounts for transactions in L2:"
|
||||||
echo "${CERC_L1_ADDRESS}"
|
echo "${L1_ADDRESS}"
|
||||||
echo "${CERC_L1_ADDRESS_2}"
|
echo "${L1_ADDRESS_2}"
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
|||||||
@@ -4,21 +4,9 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_L1_RPC="${CERC_L1_RPC:-${DEFAULT_CERC_L1_RPC}}"
|
# Get BACTHER_KEY from keys.json
|
||||||
|
|
||||||
# Get Batcher key from keys.json
|
|
||||||
BATCHER_KEY=$(jq -r '.Batcher.privateKey' /l2-accounts/keys.json | tr -d '"')
|
BATCHER_KEY=$(jq -r '.Batcher.privateKey' /l2-accounts/keys.json | tr -d '"')
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
echo "Signal received, cleaning up..."
|
|
||||||
kill ${batcher_pid}
|
|
||||||
|
|
||||||
wait
|
|
||||||
echo "Done"
|
|
||||||
}
|
|
||||||
trap 'cleanup' INT TERM
|
|
||||||
|
|
||||||
# Run op-batcher
|
|
||||||
op-batcher \
|
op-batcher \
|
||||||
--l2-eth-rpc=http://op-geth:8545 \
|
--l2-eth-rpc=http://op-geth:8545 \
|
||||||
--rollup-rpc=http://op-node:8547 \
|
--rollup-rpc=http://op-node:8547 \
|
||||||
@@ -31,9 +19,6 @@ op-batcher \
|
|||||||
--rpc.port=8548 \
|
--rpc.port=8548 \
|
||||||
--rpc.enable-admin \
|
--rpc.enable-admin \
|
||||||
--max-channel-duration=1 \
|
--max-channel-duration=1 \
|
||||||
--l1-eth-rpc=$CERC_L1_RPC \
|
--target-l1-tx-size-bytes=2048 \
|
||||||
--private-key=$BATCHER_KEY \
|
--l1-eth-rpc=$L1_RPC \
|
||||||
&
|
--private-key=$BATCHER_KEY
|
||||||
|
|
||||||
batcher_pid=$!
|
|
||||||
wait $batcher_pid
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ fi
|
|||||||
echo "Installing jq"
|
echo "Installing jq"
|
||||||
apk update && apk add jq
|
apk update && apk add jq
|
||||||
|
|
||||||
# Get Sequencer key from keys.json
|
# Get SEQUENCER key from keys.json
|
||||||
SEQUENCER_KEY=$(jq -r '.Sequencer.privateKey' /l2-accounts/keys.json | tr -d '"')
|
SEQUENCER_KEY=$(jq -r '.Sequencer.privateKey' /l2-accounts/keys.json | tr -d '"')
|
||||||
|
|
||||||
# Initialize op-geth if datadir/geth not found
|
# Initialize op-geth if datadir/geth not found
|
||||||
@@ -47,15 +47,6 @@ fi
|
|||||||
SEQUENCER_ADDRESS=$(jq -r '.Sequencer.address' /l2-accounts/keys.json | tr -d '"')
|
SEQUENCER_ADDRESS=$(jq -r '.Sequencer.address' /l2-accounts/keys.json | tr -d '"')
|
||||||
echo "SEQUENCER_ADDRESS: ${SEQUENCER_ADDRESS}"
|
echo "SEQUENCER_ADDRESS: ${SEQUENCER_ADDRESS}"
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
echo "Signal received, cleaning up..."
|
|
||||||
kill ${geth_pid}
|
|
||||||
|
|
||||||
wait
|
|
||||||
echo "Done"
|
|
||||||
}
|
|
||||||
trap 'cleanup' INT TERM
|
|
||||||
|
|
||||||
# Run op-geth
|
# Run op-geth
|
||||||
geth \
|
geth \
|
||||||
--datadir ./datadir \
|
--datadir ./datadir \
|
||||||
@@ -70,7 +61,7 @@ geth \
|
|||||||
--ws.origins="*" \
|
--ws.origins="*" \
|
||||||
--ws.api=debug,eth,txpool,net,engine \
|
--ws.api=debug,eth,txpool,net,engine \
|
||||||
--syncmode=full \
|
--syncmode=full \
|
||||||
--gcmode=archive \
|
--gcmode=full \
|
||||||
--nodiscover \
|
--nodiscover \
|
||||||
--maxpeers=0 \
|
--maxpeers=0 \
|
||||||
--networkid=42069 \
|
--networkid=42069 \
|
||||||
@@ -83,8 +74,4 @@ geth \
|
|||||||
--allow-insecure-unlock \
|
--allow-insecure-unlock \
|
||||||
--mine \
|
--mine \
|
||||||
--miner.etherbase=$SEQUENCER_ADDRESS \
|
--miner.etherbase=$SEQUENCER_ADDRESS \
|
||||||
--unlock=$SEQUENCER_ADDRESS \
|
--unlock=$SEQUENCER_ADDRESS
|
||||||
&
|
|
||||||
|
|
||||||
geth_pid=$!
|
|
||||||
wait $geth_pid
|
|
||||||
|
|||||||
@@ -4,12 +4,9 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_L1_RPC="${CERC_L1_RPC:-${DEFAULT_CERC_L1_RPC}}"
|
# Get SEQUENCER KEY from keys.json
|
||||||
|
|
||||||
# Get Sequencer key from keys.json
|
|
||||||
SEQUENCER_KEY=$(jq -r '.Sequencer.privateKey' /l2-accounts/keys.json | tr -d '"')
|
SEQUENCER_KEY=$(jq -r '.Sequencer.privateKey' /l2-accounts/keys.json | tr -d '"')
|
||||||
|
|
||||||
# Run op-node
|
|
||||||
op-node \
|
op-node \
|
||||||
--l2=http://op-geth:8551 \
|
--l2=http://op-geth:8551 \
|
||||||
--l2.jwt-secret=/op-node-data/jwt.txt \
|
--l2.jwt-secret=/op-node-data/jwt.txt \
|
||||||
@@ -22,5 +19,5 @@ op-node \
|
|||||||
--p2p.disable \
|
--p2p.disable \
|
||||||
--rpc.enable-admin \
|
--rpc.enable-admin \
|
||||||
--p2p.sequencer.key=$SEQUENCER_KEY \
|
--p2p.sequencer.key=$SEQUENCER_KEY \
|
||||||
--l1=$CERC_L1_RPC \
|
--l1=$L1_RPC \
|
||||||
--l1.rpckind=any
|
--l1.rpckind=any
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
CERC_L1_RPC="${CERC_L1_RPC:-${DEFAULT_CERC_L1_RPC}}"
|
|
||||||
|
|
||||||
# Read the L2OutputOracle contract address from the deployment
|
|
||||||
L2OO_DEPLOYMENT=$(cat /contracts-bedrock/deployments/getting-started/L2OutputOracle.json)
|
|
||||||
L2OO_ADDR=$(echo "$L2OO_DEPLOYMENT" | jq -r '.address')
|
|
||||||
|
|
||||||
# Get Proposer key from keys.json
|
|
||||||
PROPOSER_KEY=$(jq -r '.Proposer.privateKey' /l2-accounts/keys.json | tr -d '"')
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
echo "Signal received, cleaning up..."
|
|
||||||
kill ${proposer_pid}
|
|
||||||
|
|
||||||
wait
|
|
||||||
echo "Done"
|
|
||||||
}
|
|
||||||
trap 'cleanup' INT TERM
|
|
||||||
|
|
||||||
# Run op-proposer
|
|
||||||
op-proposer \
|
|
||||||
--poll-interval 12s \
|
|
||||||
--rpc.port 8560 \
|
|
||||||
--rollup-rpc http://op-node:8547 \
|
|
||||||
--l2oo-address $L2OO_ADDR \
|
|
||||||
--private-key $PROPOSER_KEY \
|
|
||||||
--l1-eth-rpc $CERC_L1_RPC \
|
|
||||||
&
|
|
||||||
|
|
||||||
proposer_pid=$!
|
|
||||||
wait $proposer_pid
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
See: https://docs.plugeth.org/
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"id": "0001",
|
|
||||||
"url": "http://127.0.0.1:8081/",
|
|
||||||
"basic_auth": {
|
|
||||||
"username": "",
|
|
||||||
"password": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "0021",
|
|
||||||
"url": "http://fixturenet-eth-geth-1:8545/",
|
|
||||||
"basic_auth": {
|
|
||||||
"username": "",
|
|
||||||
"password": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# TODO: we should have a mechanism to bundle it inside the container rather than link from here
|
|
||||||
# at deploy time.
|
|
||||||
|
|
||||||
CHAINID="pocketlocal-1"
|
|
||||||
MONIKER="localtestnet"
|
|
||||||
SERVICE_URL="http://127.0.0.1:8081"
|
|
||||||
PASSWORD="mypassword" # wallet password, required by cli
|
|
||||||
|
|
||||||
# check if jq is installed; install if necessary
|
|
||||||
# command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; }
|
|
||||||
if ! command -v jq > /dev/null 2>&1; then
|
|
||||||
echo "jq not installed, downloading..."
|
|
||||||
mkdir -p /home/app/bin
|
|
||||||
wget -O /home/app/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
|
|
||||||
chmod +x /home/app/bin/jq
|
|
||||||
export PATH=$PATH:/home/app/bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# remove existing daemon and client
|
|
||||||
rm -rf ~/.pocket*
|
|
||||||
|
|
||||||
# create a wallet with password "mypassword" and save the address for later
|
|
||||||
address=$(pocket accounts create --pwd $PASSWORD | awk '/Address:/ {print $2}')
|
|
||||||
|
|
||||||
# set this address as the validator address for the node
|
|
||||||
pocket accounts set-validator $address --pwd $PASSWORD
|
|
||||||
|
|
||||||
# save the public key for later
|
|
||||||
pubkey=$(pocket accounts show $address | awk '/Public Key:/ {print $3}')
|
|
||||||
|
|
||||||
# set node's moniker
|
|
||||||
echo $(pocket util print-configs) | jq '.tendermint_config.Moniker = "'"$MONIKER"'"' | jq . > $HOME/.pocket/config/config.json
|
|
||||||
|
|
||||||
# pocket mainnet has block time of 15 minutes, set closer to 1 minute instead
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPropose = 8000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutProposeDelta = 600000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrevote = 4000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrevoteDelta = 600000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrecommit = 4000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutPrecommitDelta = 6000000006' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.TimeoutCommit = 52000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.CreateEmptyBlocksInterval = 60000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.PeerGossipSleepDuration = 2000000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
cat $HOME/.pocket/config/config.json | jq '.tendermint_config.Consensus.PeerQueryMaj23SleepDuration = 1200000000' | jq . > $HOME/.pocket/config/tmp_config.json && mv $HOME/.pocket/config/tmp_config.json $HOME/.pocket/config/config.json
|
|
||||||
|
|
||||||
# include genesis.json and chains.json
|
|
||||||
cp $HOME/pocket-configs/genesis.json $HOME/.pocket/config/genesis.json
|
|
||||||
cp $HOME/pocket-configs/chains.json $HOME/.pocket/config/chains.json
|
|
||||||
|
|
||||||
# set chain-id and add node to genesis.json as a validator
|
|
||||||
cat $HOME/.pocket/config/genesis.json | jq '.chain_id="'"$CHAINID"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
|
||||||
cat $HOME/.pocket/config/genesis.json | jq '.app_state.auth.accounts[0].value.address="'"$address"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
|
||||||
cat $HOME/.pocket/config/genesis.json | jq '.app_state.auth.accounts[0].value.public_key.value="'"$pubkey"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
|
||||||
cat $HOME/.pocket/config/genesis.json | jq '.app_state.pos.validators[0].address="'"$address"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
|
||||||
cat $HOME/.pocket/config/genesis.json | jq '.app_state.pos.validators[0].public_key="'"$pubkey"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
|
||||||
cat $HOME/.pocket/config/genesis.json | jq '.app_state.pos.validators[0].service_url="'"$SERVICE_URL"'"' > $HOME/.pocket/config/tmp_genesis.json && mv $HOME/.pocket/config/tmp_genesis.json $HOME/.pocket/config/genesis.json
|
|
||||||
|
|
||||||
# if [[ $1 == "pending" ]]; then
|
|
||||||
# echo "pending mode is on, please wait for the first block committed."
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# Start the node
|
|
||||||
pocket start --simulateRelay
|
|
||||||
@@ -1,272 +0,0 @@
|
|||||||
{
|
|
||||||
"genesis_time": "2020-07-28T15:00:00.000000Z",
|
|
||||||
"chain_id": "testnet",
|
|
||||||
"consensus_params": {
|
|
||||||
"block": {
|
|
||||||
"max_bytes": "4000000",
|
|
||||||
"max_gas": "-1",
|
|
||||||
"time_iota_ms": "1"
|
|
||||||
},
|
|
||||||
"evidence": {
|
|
||||||
"max_age": "120000000000"
|
|
||||||
},
|
|
||||||
"validator": {
|
|
||||||
"pub_key_types": [
|
|
||||||
"ed25519"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"app_hash": "",
|
|
||||||
"app_state": {
|
|
||||||
"application": {
|
|
||||||
"params": {
|
|
||||||
"unstaking_time": "1814000000000000",
|
|
||||||
"max_applications": "9223372036854775807",
|
|
||||||
"app_stake_minimum": "1000000",
|
|
||||||
"base_relays_per_pokt": "167",
|
|
||||||
"stability_adjustment": "0",
|
|
||||||
"participation_rate_on": false,
|
|
||||||
"maximum_chains": "15"
|
|
||||||
},
|
|
||||||
"applications": [],
|
|
||||||
"exported": false
|
|
||||||
},
|
|
||||||
"auth": {
|
|
||||||
"params": {
|
|
||||||
"max_memo_characters": "75",
|
|
||||||
"tx_sig_limit": "8",
|
|
||||||
"fee_multipliers": {
|
|
||||||
"fee_multiplier": [],
|
|
||||||
"default": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"accounts": [
|
|
||||||
{
|
|
||||||
"type": "posmint/Account",
|
|
||||||
"value": {
|
|
||||||
"address": "!validator-address",
|
|
||||||
"coins": [
|
|
||||||
{
|
|
||||||
"amount": "0",
|
|
||||||
"denom": "upokt"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"public_key": {
|
|
||||||
"type": "crypto/ed25519_public_key",
|
|
||||||
"value": "!validator-pubkey"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"supply": []
|
|
||||||
},
|
|
||||||
"gov": {
|
|
||||||
"params": {
|
|
||||||
"acl": [
|
|
||||||
{
|
|
||||||
"acl_key": "application/ApplicationStakeMinimum",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "application/AppUnstakingTime",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "application/BaseRelaysPerPOKT",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "application/MaxApplications",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "application/MaximumChains",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "application/ParticipationRateOn",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "application/StabilityAdjustment",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "auth/MaxMemoCharacters",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "auth/TxSigLimit",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "gov/acl",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "gov/daoOwner",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "gov/upgrade",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pocketcore/ClaimExpiration",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "auth/FeeMultipliers",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pocketcore/ReplayAttackBurnMultiplier",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/ProposerPercentage",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pocketcore/ClaimSubmissionWindow",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pocketcore/MinimumNumberOfProofs",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pocketcore/SessionNodeCount",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pocketcore/SupportedBlockchains",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/BlocksPerSession",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/DAOAllocation",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/DowntimeJailDuration",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/MaxEvidenceAge",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/MaximumChains",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/MaxJailedBlocks",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/MaxValidators",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/MinSignedPerWindow",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/RelaysToTokensMultiplier",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/SignedBlocksWindow",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/SlashFractionDoubleSign",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/SlashFractionDowntime",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/StakeDenom",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/StakeMinimum",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"acl_key": "pos/UnstakingTime",
|
|
||||||
"address": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dao_owner": "a83172b67b5ffbfcb8acb95acc0fd0466a9d4bc4",
|
|
||||||
"upgrade": {
|
|
||||||
"Height": "0",
|
|
||||||
"Version": "0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"DAO_Tokens": "50000000000000"
|
|
||||||
},
|
|
||||||
"pos": {
|
|
||||||
"params": {
|
|
||||||
"relays_to_tokens_multiplier": "10000",
|
|
||||||
"unstaking_time": "1814000000000000",
|
|
||||||
"max_validators": "5000",
|
|
||||||
"stake_denom": "upokt",
|
|
||||||
"stake_minimum": "15000000000",
|
|
||||||
"session_block_frequency": "4",
|
|
||||||
"dao_allocation": "10",
|
|
||||||
"proposer_allocation": "1",
|
|
||||||
"maximum_chains": "15",
|
|
||||||
"max_jailed_blocks": "37960",
|
|
||||||
"max_evidence_age": "120000000000",
|
|
||||||
"signed_blocks_window": "10",
|
|
||||||
"min_signed_per_window": "0.60",
|
|
||||||
"downtime_jail_duration": "3600000000000",
|
|
||||||
"slash_fraction_double_sign": "0.05",
|
|
||||||
"slash_fraction_downtime": "0.000001"
|
|
||||||
},
|
|
||||||
"prevState_total_power": "0",
|
|
||||||
"prevState_validator_powers": null,
|
|
||||||
"validators": [
|
|
||||||
{
|
|
||||||
"address": "!validator-address",
|
|
||||||
"public_key": "!validator-pubkey",
|
|
||||||
"jailed": false,
|
|
||||||
"status": 2,
|
|
||||||
"tokens": "5000000000000",
|
|
||||||
"service_url": "!validator-url",
|
|
||||||
"chains": [
|
|
||||||
"0001",
|
|
||||||
"0021"
|
|
||||||
],
|
|
||||||
"unstaking_time": "2021-05-15T00:00:00Z"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"exported": false,
|
|
||||||
"signing_infos": {},
|
|
||||||
"missed_blocks": {},
|
|
||||||
"previous_proposer": ""
|
|
||||||
},
|
|
||||||
"pocketcore": {
|
|
||||||
"params": {
|
|
||||||
"session_node_count": "5",
|
|
||||||
"proof_waiting_period": "3",
|
|
||||||
"supported_blockchains": [
|
|
||||||
"0001",
|
|
||||||
"0021"
|
|
||||||
],
|
|
||||||
"claim_expiration": "120",
|
|
||||||
"replay_attack_burn_multiplier": "3",
|
|
||||||
"minimum_number_of_proofs": "10"
|
|
||||||
},
|
|
||||||
"receipts": null,
|
|
||||||
"claims": null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
CERC_ETH_DATADIR=/root/ethdata
|
|
||||||
|
|
||||||
START_CMD="geth"
|
|
||||||
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 --"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# See https://linuxconfig.org/how-to-propagate-a-signal-to-child-processes-from-a-bash-script
|
|
||||||
cleanup() {
|
|
||||||
echo "Signal received, cleaning up..."
|
|
||||||
|
|
||||||
# Kill the child process first (CERC_REMOTE_DEBUG=true uses dlv which starts geth as a child process)
|
|
||||||
pkill -P ${geth_pid}
|
|
||||||
sleep 2
|
|
||||||
kill $(jobs -p)
|
|
||||||
|
|
||||||
wait
|
|
||||||
echo "Done"
|
|
||||||
}
|
|
||||||
|
|
||||||
$START_CMD \
|
|
||||||
--datadir="${CERC_ETH_DATADIR}" \
|
|
||||||
--authrpc.addr="0.0.0.0" \
|
|
||||||
--authrpc.port 8551 \
|
|
||||||
--authrpc.vhosts="*" \
|
|
||||||
--authrpc.jwtsecret="/etc/mainnet-eth/jwtsecret" \
|
|
||||||
--ws \
|
|
||||||
--ws.addr="0.0.0.0" \
|
|
||||||
--ws.origins="*" \
|
|
||||||
--ws.api="${CERC_GETH_WS_APIS:-eth,web3,net,admin,personal,debug,statediff}" \
|
|
||||||
--http.corsdomain="*" \
|
|
||||||
--gcmode full \
|
|
||||||
--txlookuplimit=0 \
|
|
||||||
--cache.preimages \
|
|
||||||
--syncmode=snap \
|
|
||||||
&
|
|
||||||
|
|
||||||
geth_pid=$!
|
|
||||||
|
|
||||||
|
|
||||||
wait $geth_pid
|
|
||||||
|
|
||||||
if [ "true" == "$CERC_KEEP_RUNNING_AFTER_GETH_EXIT" ]; then
|
|
||||||
while [ 1 -eq 1 ]; do
|
|
||||||
sleep 60
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
DEBUG_LEVEL=${CERC_LIGHTHOUSE_DEBUG_LEVEL:-info}
|
|
||||||
|
|
||||||
data_dir=/var/lighthouse-data-dir
|
|
||||||
|
|
||||||
network_port=9001
|
|
||||||
http_port=8001
|
|
||||||
authrpc_port=8551
|
|
||||||
|
|
||||||
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 \
|
|
||||||
--checkpoint-sync-url https://beaconstate.ethstaker.cc
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# download genesis file
|
|
||||||
wget https://download.fantom.network/mainnet-109331-no-history.g
|
|
||||||
|
|
||||||
./opera --genesis=mainnet-109331-no-history.g --db.preset ldb-1 --syncmode snap --http --http.addr="0.0.0.0" --http.corsdomain="*" --http.api=eth,web3,net,txpool,ftm --ws --ws.addr="0.0.0.0" --ws.origins="*" --ws.api=eth,web3,net,txpool,ftm --cache 8192
|
|
||||||
#tail -f /dev/null
|
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# TODO: this file is now an unmodified copy of cerc-io/laconicd/init.sh
|
|
||||||
# so we should have a mechanism to bundle it inside the container rather than link from here
|
|
||||||
# at deploy time.
|
|
||||||
|
|
||||||
KEY="mykey"
|
|
||||||
CHAINID="laconic_9000-1"
|
|
||||||
MONIKER="localtestnet"
|
|
||||||
KEYRING="test"
|
|
||||||
KEYALGO="eth_secp256k1"
|
|
||||||
LOGLEVEL="info"
|
|
||||||
# trace evm
|
|
||||||
TRACE="--trace"
|
|
||||||
# TRACE=""
|
|
||||||
|
|
||||||
# validate dependencies are installed
|
|
||||||
command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; }
|
|
||||||
|
|
||||||
# remove existing daemon and client
|
|
||||||
rm -rf ~/.laconic*
|
|
||||||
|
|
||||||
make install
|
|
||||||
|
|
||||||
laconicd config keyring-backend $KEYRING
|
|
||||||
laconicd config chain-id $CHAINID
|
|
||||||
|
|
||||||
# if $KEY exists it should be deleted
|
|
||||||
laconicd keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO
|
|
||||||
|
|
||||||
# Set moniker and chain-id for Ethermint (Moniker can be anything, chain-id must be an integer)
|
|
||||||
laconicd init $MONIKER --chain-id $CHAINID
|
|
||||||
|
|
||||||
# Change parameter token denominations to aphoton
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
# Custom modules
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["record_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_commit_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_reveal_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_minimum_bid"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
|
|
||||||
if [[ "$TEST_REGISTRY_EXPIRY" == "true" ]]; then
|
|
||||||
echo "Setting timers for expiry tests."
|
|
||||||
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["record_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_grace_period"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$TEST_AUCTION_ENABLED" == "true" ]]; then
|
|
||||||
echo "Enabling auction and setting timers."
|
|
||||||
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_enabled"]=true' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_grace_period"]="300s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_commits_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_reveals_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
fi
|
|
||||||
|
|
||||||
# increase block time (?)
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.consensus_params["block"]["time_iota_ms"]="1000"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
|
|
||||||
# Set gas limit in genesis
|
|
||||||
cat $HOME/.laconicd/config/genesis.json | jq '.consensus_params["block"]["max_gas"]="10000000"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
|
|
||||||
|
|
||||||
# disable produce empty block
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
sed -i '' 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.laconicd/config/config.toml
|
|
||||||
else
|
|
||||||
sed -i 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.laconicd/config/config.toml
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $1 == "pending" ]]; then
|
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
||||||
sed -i '' 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i '' 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
else
|
|
||||||
sed -i 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
sed -i 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.laconicd/config/config.toml
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Allocate genesis accounts (cosmos formatted addresses)
|
|
||||||
laconicd add-genesis-account $KEY 100000000000000000000000000aphoton --keyring-backend $KEYRING
|
|
||||||
|
|
||||||
# Sign genesis transaction
|
|
||||||
laconicd gentx $KEY 1000000000000000000000aphoton --keyring-backend $KEYRING --chain-id $CHAINID
|
|
||||||
|
|
||||||
# Collect genesis tx
|
|
||||||
laconicd collect-gentxs
|
|
||||||
|
|
||||||
# Run this to ensure everything worked and that the genesis file is setup correctly
|
|
||||||
laconicd validate-genesis
|
|
||||||
|
|
||||||
if [[ $1 == "pending" ]]; then
|
|
||||||
echo "pending mode is on, please wait for the first block committed."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start the node (remove the --pruning=nothing flag if historical queries are not needed)
|
|
||||||
laconicd start --pruning=nothing --evm.tracer=json $TRACE --log_level $LOGLEVEL --minimum-gas-prices=0.0001aphoton --json-rpc.api eth,txpool,personal,net,debug,web3,miner --api.enable --gql-server --gql-playground
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
laconicd keys show mykey | grep address | cut -d ' ' -f 3
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
echo y | laconicd keys export mykey --unarmored-hex --unsafe
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
services:
|
|
||||||
cns:
|
|
||||||
restEndpoint: 'http://laconicd:1317'
|
|
||||||
gqlEndpoint: 'http://laconicd:9473/api'
|
|
||||||
userKey: REPLACE_WITH_MYKEY
|
|
||||||
bondId:
|
|
||||||
chainId: laconic_9000-1
|
|
||||||
gas: 250000
|
|
||||||
fees: 200000aphoton
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Wait for reth container to create jwt auth token
|
|
||||||
while [ ! -f /root/.shared_data/jwt.hex ]; do
|
|
||||||
echo "Jwt auth token not found, sleeping for 5s..."
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Jwt token found. Starting Lighthouse..."
|
|
||||||
export RUST_LOG=info
|
|
||||||
lighthouse bn \
|
|
||||||
--network mainnet \
|
|
||||||
--execution-endpoint http://reth:8551 \
|
|
||||||
--execution-jwt /root/.shared_data/jwt.hex \
|
|
||||||
--checkpoint-sync-url https://mainnet.checkpoint.sigp.io \
|
|
||||||
--disable-deposit-contract-sync
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# generate jwt token for reth/lighthouse authentication
|
|
||||||
echo "Installing OpenSSL..."
|
|
||||||
apt update
|
|
||||||
apt install openssl
|
|
||||||
echo "Generating jwt token for lighthouse auth..."
|
|
||||||
openssl rand -hex 32 | tr -d "\n" | tee /root/.shared_data/jwt.hex
|
|
||||||
|
|
||||||
# start reth
|
|
||||||
echo "Starting Reth..."
|
|
||||||
export RUST_LOG=info
|
|
||||||
reth node \
|
|
||||||
--authrpc.jwtsecret /root/.shared_data/jwt.hex \
|
|
||||||
--authrpc.addr 0.0.0.0 \
|
|
||||||
--authrpc.port 8551 \
|
|
||||||
--http \
|
|
||||||
--http.addr 0.0.0.0 \
|
|
||||||
--http.corsdomain * \
|
|
||||||
--http.api eth,web3,net,rpc \
|
|
||||||
--ws \
|
|
||||||
--ws.addr 0.0.0.0 \
|
|
||||||
--ws.origins * \
|
|
||||||
--ws.api eth,web3,net,rpc
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"endpoint": "http://azimuth-watcher-server:3001/graphql",
|
|
||||||
"prefix": "azimuth"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"endpoint": "http://censures-watcher-server:3002/graphql",
|
|
||||||
"prefix": "censures"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"endpoint": "http://claims-watcher-server:3003/graphql",
|
|
||||||
"prefix": "claims"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"endpoint": "http://conditional-star-release-watcher-server:3004/graphql",
|
|
||||||
"prefix": "conditionalStarRelease"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"endpoint": "http://delegated-sending-watcher-server:3005/graphql",
|
|
||||||
"prefix": "delegatedSending"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"endpoint": "http://ecliptic-watcher-server:3006/graphql",
|
|
||||||
"prefix": "ecliptic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"endpoint": "http://linear-star-release-watcher-server:3007/graphql",
|
|
||||||
"prefix": "linearStarRelease"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"endpoint": "http://polls-watcher-server:3008/graphql",
|
|
||||||
"prefix": "polls"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const tomlJS = require('toml-js');
|
|
||||||
const toml = require('toml');
|
|
||||||
const { merge } = require('lodash')
|
|
||||||
|
|
||||||
const main = () => {
|
|
||||||
const overrideConfigString = fs.readFileSync('environments/watcher-config.toml', 'utf-8');
|
|
||||||
const configString = fs.readFileSync('environments/local.toml', 'utf-8');
|
|
||||||
const overrideConfig = toml.parse(overrideConfigString)
|
|
||||||
const config = toml.parse(configString)
|
|
||||||
|
|
||||||
// Merge configs
|
|
||||||
const updatedConfig = merge(config, overrideConfig);
|
|
||||||
|
|
||||||
// Form dbConnectionString for jobQueue DB
|
|
||||||
const parts = config.jobQueue.dbConnectionString.split("://");
|
|
||||||
const credsAndDB = parts[1].split("@");
|
|
||||||
const creds = credsAndDB[0].split(":");
|
|
||||||
creds[0] = overrideConfig.database.username;
|
|
||||||
creds[1] = overrideConfig.database.password;
|
|
||||||
credsAndDB[0] = creds.join(":");
|
|
||||||
const dbName = credsAndDB[1].split("/")[1]
|
|
||||||
credsAndDB[1] = [overrideConfig.database.host, dbName].join("/");
|
|
||||||
parts[1] = credsAndDB.join("@");
|
|
||||||
|
|
||||||
updatedConfig.jobQueue.dbConnectionString = parts.join("://");
|
|
||||||
|
|
||||||
fs.writeFileSync('environments/local.toml', tomlJS.dump(updatedConfig), 'utf-8');
|
|
||||||
}
|
|
||||||
|
|
||||||
main();
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
CERC_IPLD_ETH_RPC="${CERC_IPLD_ETH_RPC:-${DEFAULT_CERC_IPLD_ETH_RPC}}"
|
|
||||||
CERC_IPLD_ETH_GQL="${CERC_IPLD_ETH_GQL:-${DEFAULT_CERC_IPLD_ETH_GQL}}"
|
|
||||||
|
|
||||||
echo "Using IPLD ETH RPC endpoint ${CERC_IPLD_ETH_RPC}"
|
|
||||||
echo "Using IPLD GQL endpoint ${CERC_IPLD_ETH_GQL}"
|
|
||||||
|
|
||||||
# Replace env variables in template TOML file
|
|
||||||
# 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_IPLD_ETH_RPC|${CERC_IPLD_ETH_RPC}|g; \
|
|
||||||
s|REPLACE_WITH_CERC_IPLD_ETH_GQL|${CERC_IPLD_ETH_GQL}| ")
|
|
||||||
|
|
||||||
# Write the modified content to a new file
|
|
||||||
echo "$WATCHER_CONFIG" > environments/watcher-config.toml
|
|
||||||
|
|
||||||
# Merge SO watcher config with existing config file
|
|
||||||
node merge-toml.js
|
|
||||||
|
|
||||||
echo 'yarn server'
|
|
||||||
yarn server
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[server]
|
|
||||||
host = "0.0.0.0"
|
|
||||||
maxSimultaneousRequests = -1
|
|
||||||
|
|
||||||
[database]
|
|
||||||
host = "watcher-db"
|
|
||||||
port = 5432
|
|
||||||
username = "vdbm"
|
|
||||||
password = "password"
|
|
||||||
|
|
||||||
[upstream]
|
|
||||||
[upstream.ethServer]
|
|
||||||
gqlApiEndpoint = "REPLACE_WITH_CERC_IPLD_ETH_GQL"
|
|
||||||
rpcProviderEndpoint = "REPLACE_WITH_CERC_IPLD_ETH_RPC"
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# Defaults
|
|
||||||
|
|
||||||
# ipld-eth-server endpoints
|
|
||||||
DEFAULT_CERC_IPLD_ETH_RPC=
|
|
||||||
DEFAULT_CERC_IPLD_ETH_GQL=
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
CERC_SNAPSHOT_GQL_ENDPOINT="${CERC_SNAPSHOT_GQL_ENDPOINT:-${DEFAULT_CERC_SNAPSHOT_GQL_ENDPOINT}}"
|
|
||||||
CERC_SNAPSHOT_BLOCKHASH="${CERC_SNAPSHOT_BLOCKHASH:-${DEFAULT_CERC_SNAPSHOT_BLOCKHASH}}"
|
|
||||||
|
|
||||||
CHECKPOINT_FILE_PATH="./state_checkpoint/state-gql-${CERC_SNAPSHOT_BLOCKHASH}"
|
|
||||||
|
|
||||||
if [ -f "${CHECKPOINT_FILE_PATH}" ]; then
|
|
||||||
# Skip checkpoint creation if the file already exists
|
|
||||||
echo "File at ${CHECKPOINT_FILE_PATH} already exists, skipping checkpoint creation..."
|
|
||||||
else
|
|
||||||
# Create a checkpoint using GQL endpoint
|
|
||||||
echo "Creating a state checkpoint using GQL endpoint..."
|
|
||||||
yarn create-state-gql \
|
|
||||||
--snapshot-block-hash "${CERC_SNAPSHOT_BLOCKHASH}" \
|
|
||||||
--gql-endpoint "${CERC_SNAPSHOT_GQL_ENDPOINT}" \
|
|
||||||
--output "${CHECKPOINT_FILE_PATH}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Initializing watcher using a state snapshot..."
|
|
||||||
|
|
||||||
# Import the state checkpoint
|
|
||||||
# (skips if snapshot block is already indexed)
|
|
||||||
yarn import-state --import-file "${CHECKPOINT_FILE_PATH}"
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
CERC_IPLD_ETH_RPC="${CERC_IPLD_ETH_RPC:-${DEFAULT_CERC_IPLD_ETH_RPC}}"
|
|
||||||
CERC_IPLD_ETH_GQL="${CERC_IPLD_ETH_GQL:-${DEFAULT_CERC_IPLD_ETH_GQL}}"
|
|
||||||
|
|
||||||
echo "Using ETH server RPC endpoint ${CERC_IPLD_ETH_RPC}"
|
|
||||||
echo "Using ETH server GQL endpoint ${CERC_IPLD_ETH_GQL}"
|
|
||||||
|
|
||||||
# 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_IPLD_ETH_GQL|${CERC_IPLD_ETH_GQL}|g; \
|
|
||||||
s|REPLACE_WITH_CERC_IPLD_ETH_RPC|${CERC_IPLD_ETH_RPC}| ")
|
|
||||||
|
|
||||||
# Write the modified content to a new file
|
|
||||||
echo "$WATCHER_CONFIG" > environments/local.toml
|
|
||||||
|
|
||||||
echo "Running job-runner"
|
|
||||||
DEBUG=vulcanize:* exec node --enable-source-maps dist/job-runner.js
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
CERC_IPLD_ETH_RPC="${CERC_IPLD_ETH_RPC:-${DEFAULT_CERC_IPLD_ETH_RPC}}"
|
|
||||||
CERC_IPLD_ETH_GQL="${CERC_IPLD_ETH_GQL:-${DEFAULT_CERC_IPLD_ETH_GQL}}"
|
|
||||||
|
|
||||||
CERC_USE_STATE_SNAPSHOT="${CERC_USE_STATE_SNAPSHOT:-${DEFAULT_CERC_USE_STATE_SNAPSHOT}}"
|
|
||||||
|
|
||||||
echo "Using ETH server RPC endpoint ${CERC_IPLD_ETH_RPC}"
|
|
||||||
echo "Using ETH server GQL endpoint ${CERC_IPLD_ETH_GQL}"
|
|
||||||
|
|
||||||
# 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_IPLD_ETH_GQL|${CERC_IPLD_ETH_GQL}|g; \
|
|
||||||
s|REPLACE_WITH_CERC_IPLD_ETH_RPC|${CERC_IPLD_ETH_RPC}| ")
|
|
||||||
|
|
||||||
# Write the modified content to a new file
|
|
||||||
echo "$WATCHER_CONFIG" > environments/local.toml
|
|
||||||
|
|
||||||
if [ "$CERC_USE_STATE_SNAPSHOT" = true ] ; then
|
|
||||||
./create-and-import-checkpoint.sh
|
|
||||||
else
|
|
||||||
echo "Initializing watcher using fill..."
|
|
||||||
yarn fill --start-block $DEFAULT_CERC_GELATO_START_BLOCK --end-block $DEFAULT_CERC_GELATO_START_BLOCK
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Running active server"
|
|
||||||
DEBUG=vulcanize:* exec node --enable-source-maps dist/server.js
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
[server]
|
|
||||||
host = "0.0.0.0"
|
|
||||||
port = 3008
|
|
||||||
kind = "active"
|
|
||||||
|
|
||||||
# Checkpointing state.
|
|
||||||
checkpointing = true
|
|
||||||
|
|
||||||
# Checkpoint interval in number of blocks.
|
|
||||||
checkpointInterval = 2000
|
|
||||||
|
|
||||||
# Enable state creation
|
|
||||||
# CAUTION: Disable only if state creation is not desired or can be filled subsequently
|
|
||||||
enableState = true
|
|
||||||
|
|
||||||
subgraphPath = "./subgraph"
|
|
||||||
|
|
||||||
# Interval to restart wasm instance periodically
|
|
||||||
wasmRestartBlocksInterval = 20
|
|
||||||
|
|
||||||
# Interval in number of blocks at which to clear entities cache.
|
|
||||||
clearEntitiesCacheInterval = 1000
|
|
||||||
|
|
||||||
# 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 = 1000
|
|
||||||
|
|
||||||
# GQL cache settings
|
|
||||||
[server.gqlCache]
|
|
||||||
enabled = true
|
|
||||||
|
|
||||||
# Max in-memory cache size (in bytes) (default 8 MB)
|
|
||||||
# maxCacheSize
|
|
||||||
|
|
||||||
# GQL cache-control max-age settings (in seconds)
|
|
||||||
maxAge = 15
|
|
||||||
timeTravelMaxAge = 86400 # 1 day
|
|
||||||
|
|
||||||
[metrics]
|
|
||||||
host = "0.0.0.0"
|
|
||||||
port = 9000
|
|
||||||
[metrics.gql]
|
|
||||||
port = 9001
|
|
||||||
|
|
||||||
[database]
|
|
||||||
type = "postgres"
|
|
||||||
host = "gelato-watcher-db"
|
|
||||||
port = 5432
|
|
||||||
database = "gelato-watcher"
|
|
||||||
username = "vdbm"
|
|
||||||
password = "password"
|
|
||||||
synchronize = true
|
|
||||||
logging = false
|
|
||||||
|
|
||||||
[upstream]
|
|
||||||
[upstream.ethServer]
|
|
||||||
gqlApiEndpoint = "REPLACE_WITH_CERC_IPLD_ETH_GQL"
|
|
||||||
rpcProviderEndpoint = "REPLACE_WITH_CERC_IPLD_ETH_RPC"
|
|
||||||
|
|
||||||
[upstream.cache]
|
|
||||||
name = "requests"
|
|
||||||
enabled = false
|
|
||||||
deleteOnStart = false
|
|
||||||
|
|
||||||
[jobQueue]
|
|
||||||
dbConnectionString = "postgres://vdbm:password@gelato-watcher-db/gelato-watcher-job-queue"
|
|
||||||
maxCompletionLagInSecs = 300
|
|
||||||
jobDelayInMilliSecs = 100
|
|
||||||
eventsInBatch = 50
|
|
||||||
blockDelayInMilliSecs = 2000
|
|
||||||
prefetchBlocksInMem = true
|
|
||||||
prefetchBlockCount = 10
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
# ipld-eth-server endpoints
|
|
||||||
DEFAULT_CERC_IPLD_ETH_RPC="http://ipld-eth-server:8082"
|
|
||||||
DEFAULT_CERC_IPLD_ETH_GQL="http://ipld-eth-server:8083/graphql"
|
|
||||||
|
|
||||||
# Gelato start block
|
|
||||||
DEFAULT_CERC_GELATO_START_BLOCK=11361987
|
|
||||||
|
|
||||||
# Whether to use a state snapshot to initialize the watcher
|
|
||||||
DEFAULT_CERC_USE_STATE_SNAPSHOT=false
|
|
||||||
|
|
||||||
# State snapshot params
|
|
||||||
DEFAULT_CERC_SNAPSHOT_GQL_ENDPOINT=
|
|
||||||
DEFAULT_CERC_SNAPSHOT_BLOCKHASH=
|
|
||||||
@@ -4,53 +4,33 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_L2_GETH_RPC="${CERC_L2_GETH_RPC:-${DEFAULT_CERC_L2_GETH_RPC}}"
|
echo "Using L2 RPC endpoint ${L2_GETH_RPC}"
|
||||||
CERC_L1_ACCOUNTS_CSV_URL="${CERC_L1_ACCOUNTS_CSV_URL:-${DEFAULT_CERC_L1_ACCOUNTS_CSV_URL}}"
|
|
||||||
|
|
||||||
CERC_MOBYMASK_APP_BASE_URI="${CERC_MOBYMASK_APP_BASE_URI:-${DEFAULT_CERC_MOBYMASK_APP_BASE_URI}}"
|
if [ -f /geth-accounts/accounts.csv ]; then
|
||||||
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
echo "Using L1 private key from the mounted volume"
|
||||||
|
# Read the private key of L1 account to deploy contract
|
||||||
# Check if CERC_DEPLOYED_CONTRACT environment variable set to skip contract deployment
|
PRIVATE_KEY_DEPLOYER=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
|
||||||
if [ -n "$CERC_DEPLOYED_CONTRACT" ]; then
|
|
||||||
echo "CERC_DEPLOYED_CONTRACT is set to '$CERC_DEPLOYED_CONTRACT'"
|
|
||||||
echo "Skipping contract deployment"
|
|
||||||
exit 0
|
|
||||||
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
|
else
|
||||||
echo "Couldn't fetch L1 account credentials, using CERC_PRIVATE_KEY_DEPLOYER from env"
|
echo "Using PRIVATE_KEY_DEPLOYER from env"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set the private key
|
# Set the private key
|
||||||
jq --arg privateKey "$CERC_PRIVATE_KEY_DEPLOYER" '.privateKey = $privateKey' secrets-template.json > secrets.json
|
jq --arg privateKey "$PRIVATE_KEY_DEPLOYER" '.privateKey = $privateKey' secrets-template.json > secrets.json
|
||||||
|
|
||||||
# Set the RPC URL
|
# Set the RPC URL
|
||||||
jq --arg rpcUrl "$CERC_L2_GETH_RPC" '.rpcUrl = $rpcUrl' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
|
jq --arg rpcUrl "$L2_GETH_RPC" '.rpcUrl = $rpcUrl' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
|
||||||
|
|
||||||
# Set the MobyMask app base URI
|
# Set the MobyMask app base URI
|
||||||
jq --arg baseURI "$CERC_MOBYMASK_APP_BASE_URI" '.baseURI = $baseURI' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
|
jq --arg baseURI "$MOBYMASK_APP_BASE_URI" '.baseURI = $baseURI' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
|
||||||
|
|
||||||
# Wait for L2 Optimism Geth and Node servers to be up before deploying contract
|
export RPC_URL="${L2_GETH_RPC}"
|
||||||
CERC_L2_GETH_HOST="${CERC_L2_GETH_HOST:-${DEFAULT_CERC_L2_GETH_HOST}}"
|
|
||||||
CERC_L2_GETH_PORT="${CERC_L2_GETH_PORT:-${DEFAULT_CERC_L2_GETH_PORT}}"
|
|
||||||
CERC_L2_NODE_HOST="${CERC_L2_NODE_HOST:-${DEFAULT_CERC_L2_NODE_HOST}}"
|
|
||||||
CERC_L2_NODE_PORT="${CERC_L2_NODE_PORT:-${DEFAULT_CERC_L2_NODE_PORT}}"
|
|
||||||
./wait-for-it.sh -h "${CERC_L2_GETH_HOST}" -p "${CERC_L2_GETH_PORT}" -s -t 0
|
|
||||||
./wait-for-it.sh -h "${CERC_L2_NODE_HOST}" -p "${CERC_L2_NODE_PORT}" -s -t 0
|
|
||||||
|
|
||||||
export RPC_URL="${CERC_L2_GETH_RPC}"
|
# Check if DEPLOYED_CONTRACT environment variable set to skip contract deployment
|
||||||
|
if [[ -n "$DEPLOYED_CONTRACT" ]]; then
|
||||||
|
echo "DEPLOYED_CONTRACT is set to '$DEPLOYED_CONTRACT'"
|
||||||
|
echo "Exiting without deploying contract"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Check and exit if a deployment already exists (on restarts)
|
# Check and exit if a deployment already exists (on restarts)
|
||||||
if [ -f ./config.json ]; then
|
if [ -f ./config.json ]; then
|
||||||
@@ -73,7 +53,7 @@ fi
|
|||||||
# Wait until balance for deployer account is updated
|
# Wait until balance for deployer account is updated
|
||||||
cd ../hardhat
|
cd ../hardhat
|
||||||
while true; do
|
while true; do
|
||||||
ACCOUNT_BALANCE=$(yarn balance --network optimism "$CERC_PRIVATE_KEY_DEPLOYER" | grep ETH)
|
ACCOUNT_BALANCE=$(yarn balance --network optimism "$PRIVATE_KEY_DEPLOYER" | grep ETH)
|
||||||
|
|
||||||
if [ "$ACCOUNT_BALANCE" != "0.0 ETH" ]; then
|
if [ "$ACCOUNT_BALANCE" != "0.0 ETH" ]; then
|
||||||
echo "Account balance updated: $ACCOUNT_BALANCE"
|
echo "Account balance updated: $ACCOUNT_BALANCE"
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for peer ids in ./peers folder, create if not present
|
|
||||||
if [ -f /peer-ids/relay-id.json ]; then
|
|
||||||
echo "Using peer id for relay node from the mounted volume"
|
|
||||||
else
|
|
||||||
echo "Creating a new peer id for relay node"
|
|
||||||
yarn create-peer -f /peer-ids/relay-id.json
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f /peer-ids/peer-id.json ]; then
|
|
||||||
echo "Using peer id for peer node from the mounted volume"
|
|
||||||
else
|
|
||||||
echo "Creating a new peer id for peer node"
|
|
||||||
yarn create-peer -f /peer-ids/peer-id.json
|
|
||||||
fi
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"name": "MobyMask",
|
||||||
|
"relayNodes": [
|
||||||
|
"/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
|
||||||
|
],
|
||||||
|
"peer": {
|
||||||
|
"enableDebugInfo": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,43 +1,25 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_CHAIN_ID="${CERC_CHAIN_ID:-${DEFAULT_CERC_CHAIN_ID}}"
|
# Use config from mounted volume if available (when running web-app along with watcher stack)
|
||||||
CERC_DEPLOYED_CONTRACT="${CERC_DEPLOYED_CONTRACT:-${DEFAULT_CERC_DEPLOYED_CONTRACT}}"
|
if [ -f /server/config.json ]; then
|
||||||
CERC_RELAY_NODES="${CERC_RELAY_NODES:-${DEFAULT_CERC_RELAY_NODES}}"
|
echo "Merging config for deployed contract from mounted volume"
|
||||||
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
# Merging config files to get deployed contract address
|
||||||
CERC_APP_WATCHER_URL="${CERC_APP_WATCHER_URL:-${DEFAULT_CERC_APP_WATCHER_URL}}"
|
jq -s '.[0] * .[1]' /app/src/mobymask-app-config.json /server/config.json > /app/src/config.json
|
||||||
|
|
||||||
# If not set (or []), check the mounted volume for relay peer id
|
|
||||||
if [ -z "$CERC_RELAY_NODES" ] || [ "$CERC_RELAY_NODES" = "[]" ]; then
|
|
||||||
echo "CERC_RELAY_NODES not provided, taking from the mounted volume"
|
|
||||||
CERC_RELAY_NODES="[\"/ip4/127.0.0.1/tcp/9090/ws/p2p/$(jq -r '.id' /peers/relay-id.json)\"]"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Using CERC_RELAY_NODES $CERC_RELAY_NODES"
|
|
||||||
|
|
||||||
if [ -z "$CERC_DEPLOYED_CONTRACT" ]; then
|
|
||||||
# Use config from mounted volume (when running web-app along with watcher stack)
|
|
||||||
echo "Taking config for deployed contract from mounted volume"
|
|
||||||
while [ ! -f /server/config.json ]; do
|
|
||||||
echo "Config not found, retrying after 5 seconds"
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
# Get deployed contract address and chain id
|
|
||||||
CERC_DEPLOYED_CONTRACT=$(jq -r '.address' /server/config.json | tr -d '"')
|
|
||||||
CERC_CHAIN_ID=$(jq -r '.chainId' /server/config.json)
|
|
||||||
else
|
else
|
||||||
echo "Taking deployed contract details from env"
|
echo "Setting deployed contract details from env"
|
||||||
|
|
||||||
|
# Set config values from environment variables
|
||||||
|
jq --arg address "$DEPLOYED_CONTRACT" \
|
||||||
|
--argjson chainId $CHAIN_ID \
|
||||||
|
--argjson relayNodes "$RELAY_NODES" \
|
||||||
|
'.address = $address | .chainId = $chainId | .relayNodes = $relayNodes' \
|
||||||
|
/app/src/mobymask-app-config.json > /app/src/config.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use yq to create config.yml with environment variables
|
REACT_APP_WATCHER_URI="$APP_WATCHER_URL/graphql" npm run build
|
||||||
yq -n ".address = env(CERC_DEPLOYED_CONTRACT)" > /config/config.yml
|
|
||||||
yq ".watcherUrl = env(CERC_APP_WATCHER_URL)" -i /config/config.yml
|
|
||||||
yq ".chainId = env(CERC_CHAIN_ID)" -i /config/config.yml
|
|
||||||
yq ".relayNodes = strenv(CERC_RELAY_NODES)" -i /config/config.yml
|
|
||||||
yq ".denyMultiaddrs = strenv(CERC_DENY_MULTIADDRS)" -i /config/config.yml
|
|
||||||
|
|
||||||
/scripts/start-serving-app.sh
|
serve -s build
|
||||||
|
|||||||
@@ -1,29 +1,20 @@
|
|||||||
# Defaults
|
# Change if pointing web app to external watcher endpoint
|
||||||
|
WATCHER_HOST="mobymask-watcher-server"
|
||||||
# Watcher endpoint
|
WATCHER_PORT=3001
|
||||||
DEFAULT_CERC_APP_WATCHER_URL="http://localhost:3001"
|
APP_WATCHER_URL="http://localhost:3001"
|
||||||
|
|
||||||
# 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)
|
# Base URI for mobymask-app (used for generating invite)
|
||||||
DEFAULT_CERC_MOBYMASK_APP_BASE_URI="http://127.0.0.1:3004/#"
|
MOBYMASK_APP_BASE_URI="http://127.0.0.1:3002/#"
|
||||||
|
|
||||||
# Set to false for disabling watcher peer to send txs to L2
|
# Set to false for disabling watcher peer to send txs to L2
|
||||||
DEFAULT_CERC_ENABLE_PEER_L2_TXS=true
|
ENABLE_PEER_L2_TXS=true
|
||||||
|
|
||||||
# Set deployed MobyMask contract address to avoid deploying contract in stack
|
# Set deployed MobyMask contract address to avoid deploying contract in stack
|
||||||
# mobymask-app will use this contract address in config if run separately
|
# mobymask-app will use this contract address in config if run separately
|
||||||
DEFAULT_CERC_DEPLOYED_CONTRACT=
|
DEPLOYED_CONTRACT=
|
||||||
|
|
||||||
# Chain ID is used by mobymask web-app for txs
|
# Chain ID is used by mobymask web-app for txs
|
||||||
DEFAULT_CERC_CHAIN_ID=42069
|
CHAIN_ID=42069
|
||||||
|
|
||||||
# Set of relay nodes to be used by web-apps
|
# Set relay nodes to be used by web-apps
|
||||||
DEFAULT_CERC_RELAY_NODES=[]
|
RELAY_NODES=["/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"]
|
||||||
|
|
||||||
# Set of multiaddrs to be avoided while dialling
|
|
||||||
DEFAULT_CERC_DENY_MULTIADDRS=[]
|
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
# Defaults
|
# Change if pointing to an external optimism geth endpoint
|
||||||
|
|
||||||
# L2 endpoints
|
# L2 endpoints
|
||||||
DEFAULT_CERC_L2_GETH_RPC="http://op-geth:8545"
|
L2_GETH_RPC="http://op-geth:8545"
|
||||||
|
L2_GETH_HOST="op-geth"
|
||||||
|
L2_GETH_PORT=8545
|
||||||
|
|
||||||
# Endpoints waited on before contract deployment
|
L2_NODE_HOST="op-node"
|
||||||
DEFAULT_CERC_L2_GETH_HOST="op-geth"
|
L2_NODE_PORT=8547
|
||||||
DEFAULT_CERC_L2_GETH_PORT=8545
|
|
||||||
|
|
||||||
DEFAULT_CERC_L2_NODE_HOST="op-node"
|
# Credentials for accounts to perform txs on L2
|
||||||
DEFAULT_CERC_L2_NODE_PORT=8547
|
PRIVATE_KEY_DEPLOYER=
|
||||||
|
PRIVATE_KEY_PEER=
|
||||||
# URL to get CSV with credentials for accounts on L1 to perform txs on L2
|
|
||||||
DEFAULT_CERC_L1_ACCOUNTS_CSV_URL="http://fixturenet-eth-bootnode-geth:9898/accounts.csv"
|
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"id": "12D3KooWK6myjc8r1KBnfP9igp31qJkPaVfsKDjKrjoSefV5SDEo",
|
||||||
|
"privKey": "CAESQJMHbMaH+UEOtjGOzXYtoPO/cdHakCtN1hcnknIWzx/6ie1lxb+8kfzBjwt7apfj8fHlTCYSIVK8Q2AWu9a2h3g=",
|
||||||
|
"pubKey": "CAESIIntZcW/vJH8wY8Le2qX4/Hx5UwmEiFSvENgFrvWtod4"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
RELAY="/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"id": "12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t",
|
||||||
|
"privKey": "CAESQGsqG5o4VlWJZM9XlA3MjabyZOXWQ2MLZU5AhBQsjXGt9iSlGtTuNOrHX5xSRgLBxLuMoqWsjGxE/dDB9c46RI8=",
|
||||||
|
"pubKey": "CAESIPYkpRrU7jTqx1+cUkYCwcS7jKKlrIxsRP3QwfXOOkSP"
|
||||||
|
}
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
fi
|
|
||||||
|
|
||||||
CERC_RELAY_MULTIADDR="/dns4/mobymask-watcher-server/tcp/9090/ws/p2p/$(jq -r '.id' /peer-ids/relay-id.json)"
|
|
||||||
|
|
||||||
# Write the relay node's multiaddr to /app/packages/peer/.env for running tests
|
|
||||||
echo "RELAY=\"$CERC_RELAY_MULTIADDR\"" > ./.env
|
|
||||||
@@ -4,58 +4,32 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_L2_GETH_RPC="${CERC_L2_GETH_RPC:-${DEFAULT_CERC_L2_GETH_RPC}}"
|
echo "Using L2 RPC endpoint ${L2_GETH_RPC}"
|
||||||
CERC_L1_ACCOUNTS_CSV_URL="${CERC_L1_ACCOUNTS_CSV_URL:-${DEFAULT_CERC_L1_ACCOUNTS_CSV_URL}}"
|
|
||||||
|
|
||||||
CERC_RELAY_PEERS="${CERC_RELAY_PEERS:-${DEFAULT_CERC_RELAY_PEERS}}"
|
|
||||||
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
|
||||||
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}}"
|
|
||||||
|
|
||||||
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
|
# Use contract address from environment variable or set from config.json in mounted volume
|
||||||
if [ -n "$CERC_DEPLOYED_CONTRACT" ]; then
|
if [ -n "$DEPLOYED_CONTRACT" ]; then
|
||||||
CONTRACT_ADDRESS="${CERC_DEPLOYED_CONTRACT}"
|
CONTRACT_ADDRESS="${DEPLOYED_CONTRACT}"
|
||||||
else
|
else
|
||||||
# Assign deployed contract address from server config (created by mobymask container after deploying contract)
|
# Assign deployed contract address from server config (created by mobymask container after deploying contract)
|
||||||
CONTRACT_ADDRESS=$(jq -r '.address' /server/config.json | tr -d '"')
|
CONTRACT_ADDRESS=$(jq -r '.address' /server/config.json | tr -d '"')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$CERC_L1_ACCOUNTS_CSV_URL" ] && \
|
if [ -f /geth-accounts/accounts.csv ]; then
|
||||||
l1_accounts_response=$(curl -L --write-out '%{http_code}' --silent --output /dev/null "$CERC_L1_ACCOUNTS_CSV_URL") && \
|
echo "Using L1 private key from the mounted volume"
|
||||||
[ "$l1_accounts_response" -eq 200 ];
|
# Read the private key of L1 account for sending txs from peer
|
||||||
then
|
PRIVATE_KEY_PEER=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
|
||||||
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 for sending txs from peer
|
|
||||||
CERC_PRIVATE_KEY_PEER=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
|
|
||||||
else
|
else
|
||||||
echo "Couldn't fetch L1 account credentials, using CERC_PRIVATE_KEY_PEER from env"
|
echo "Using PRIVATE_KEY_PEER from env"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Read in the config template TOML file and modify it
|
# Read in the config template TOML file and modify it
|
||||||
WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml)
|
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_ENABLE_PEER_L2_TXS/${ENABLE_PEER_L2_TXS}/g; \
|
||||||
s|REPLACE_WITH_CERC_DENY_MULTIADDRS|${CERC_DENY_MULTIADDRS}|g; \
|
s/REPLACE_WITH_PRIVATE_KEY_PEER/${PRIVATE_KEY_PEER}/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_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_CONTRACT_ADDRESS/${CONTRACT_ADDRESS}/g; \
|
s/REPLACE_WITH_CONTRACT_ADDRESS/${CONTRACT_ADDRESS}/g; \
|
||||||
s|REPLACE_WITH_CERC_L2_GETH_RPC_ENDPOINT|${CERC_L2_GETH_RPC}| ")
|
s|REPLACE_WITH_L2_GETH_RPC_ENDPOINT|${L2_GETH_RPC}| ")
|
||||||
|
|
||||||
# Write the modified content to a new file
|
# Write the modified content to a new file
|
||||||
echo "$WATCHER_CONFIG" > environments/local.toml
|
echo "$WATCHER_CONFIG" > environments/local.toml
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"relayNodes": [],
|
"relayNodes": [
|
||||||
|
"/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
|
||||||
|
],
|
||||||
"peer": {
|
"peer": {
|
||||||
"denyMultiaddrs": [],
|
|
||||||
"enableDebugInfo": true
|
"enableDebugInfo": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,19 +4,11 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|||||||
set -x
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CERC_RELAY_NODES="${CERC_RELAY_NODES:-${DEFAULT_CERC_RELAY_NODES}}"
|
# Set relay nodes in config from RELAY_NODES environment variable
|
||||||
CERC_DENY_MULTIADDRS="${CERC_DENY_MULTIADDRS:-${DEFAULT_CERC_DENY_MULTIADDRS}}"
|
jq --argjson relayNodes "$RELAY_NODES" \
|
||||||
|
'.relayNodes = $relayNodes' \
|
||||||
|
./src/test-app-config.json > ./src/config.json
|
||||||
|
|
||||||
# If not set (or []), check the mounted volume for relay peer id
|
yarn build
|
||||||
if [ -z "$CERC_RELAY_NODES" ] || [ "$CERC_RELAY_NODES" = "[]" ]; then
|
|
||||||
echo "CERC_RELAY_NODES not provided, taking from the mounted volume"
|
|
||||||
CERC_RELAY_NODES="[\"/ip4/127.0.0.1/tcp/9090/ws/p2p/$(jq -r '.id' /peers/relay-id.json)\"]"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Using CERC_RELAY_NODES $CERC_RELAY_NODES"
|
serve -s build
|
||||||
|
|
||||||
# Use yq to create config.yml with environment variables
|
|
||||||
yq -n ".relayNodes = strenv(CERC_RELAY_NODES)" > /config/config.yml
|
|
||||||
yq ".denyMultiaddrs = strenv(CERC_DENY_MULTIADDRS)" -i /config/config.yml
|
|
||||||
|
|
||||||
/scripts/start-serving-app.sh
|
|
||||||
|
|||||||
@@ -26,22 +26,19 @@
|
|||||||
[server.p2p.relay]
|
[server.p2p.relay]
|
||||||
host = "0.0.0.0"
|
host = "0.0.0.0"
|
||||||
port = 9090
|
port = 9090
|
||||||
relayPeers = REPLACE_WITH_CERC_RELAY_PEERS
|
relayPeers = []
|
||||||
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
peerIdFile = './relay-id.json'
|
||||||
peerIdFile = './peers/relay-id.json'
|
|
||||||
announce = 'REPLACE_WITH_CERC_RELAY_ANNOUNCE_DOMAIN'
|
|
||||||
enableDebugInfo = true
|
enableDebugInfo = true
|
||||||
|
|
||||||
[server.p2p.peer]
|
[server.p2p.peer]
|
||||||
relayMultiaddr = 'REPLACE_WITH_CERC_RELAY_MULTIADDR'
|
relayMultiaddr = '/dns4/mobymask-watcher-server/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t'
|
||||||
pubSubTopic = 'mobymask'
|
pubSubTopic = 'mobymask'
|
||||||
denyMultiaddrs = REPLACE_WITH_CERC_DENY_MULTIADDRS
|
peerIdFile = './peer-id.json'
|
||||||
peerIdFile = './peers/peer-id.json'
|
|
||||||
enableDebugInfo = true
|
enableDebugInfo = true
|
||||||
enableL2Txs = REPLACE_WITH_CERC_ENABLE_PEER_L2_TXS
|
enableL2Txs = REPLACE_WITH_ENABLE_PEER_L2_TXS
|
||||||
|
|
||||||
[server.p2p.peer.l2TxsConfig]
|
[server.p2p.peer.l2TxsConfig]
|
||||||
privateKey = 'REPLACE_WITH_CERC_PRIVATE_KEY_PEER'
|
privateKey = 'REPLACE_WITH_PRIVATE_KEY_PEER'
|
||||||
contractAddress = 'REPLACE_WITH_CONTRACT_ADDRESS'
|
contractAddress = 'REPLACE_WITH_CONTRACT_ADDRESS'
|
||||||
|
|
||||||
[metrics]
|
[metrics]
|
||||||
@@ -63,7 +60,7 @@
|
|||||||
[upstream]
|
[upstream]
|
||||||
[upstream.ethServer]
|
[upstream.ethServer]
|
||||||
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
|
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
|
||||||
rpcProviderEndpoint = "REPLACE_WITH_CERC_L2_GETH_RPC_ENDPOINT"
|
rpcProviderEndpoint = "REPLACE_WITH_L2_GETH_RPC_ENDPOINT"
|
||||||
blockDelayInMilliSecs = 60000
|
blockDelayInMilliSecs = 60000
|
||||||
|
|
||||||
[upstream.cache]
|
[upstream.cache]
|
||||||
|
|||||||
@@ -23,8 +23,8 @@
|
|||||||
|
|
||||||
[upstream]
|
[upstream]
|
||||||
[upstream.ethServer]
|
[upstream.ethServer]
|
||||||
gqlApiEndpoint = "http://ipld-eth-server:8082/graphql"
|
gqlApiEndpoint = "http://ipld-eth-server.example.com:8083/graphql"
|
||||||
rpcProviderEndpoint = "http://ipld-eth-server:8081"
|
rpcProviderEndpoint = "http://ipld-eth-server.example.com:8082"
|
||||||
|
|
||||||
[upstream.cache]
|
[upstream.cache]
|
||||||
name = "requests"
|
name = "requests"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user