Archived
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1b1464205 | ||
|
|
fbe901a0fb | ||
|
|
a9558aa874 | ||
|
|
960a24c96b | ||
|
|
c1e3f5674d | ||
|
|
55e7d22e57 | ||
|
|
3634a35479 |
@@ -64,8 +64,6 @@ services:
|
||||
environment:
|
||||
RUN_BOOTNODE: "true"
|
||||
image: cerc/fixturenet-eth-lighthouse:local
|
||||
volumes:
|
||||
- fixturenet_eth_bootnode_lighthouse_data:/opt/testnet/build/cl
|
||||
|
||||
fixturenet-eth-lighthouse-1:
|
||||
hostname: fixturenet-eth-lighthouse-1
|
||||
@@ -120,6 +118,5 @@ volumes:
|
||||
fixturenet_eth_bootnode_geth_data:
|
||||
fixturenet_eth_geth_1_data:
|
||||
fixturenet_eth_geth_2_data:
|
||||
fixturenet_eth_bootnode_lighthouse_data:
|
||||
fixturenet_eth_lighthouse_1_data:
|
||||
fixturenet_eth_lighthouse_2_data:
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
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
|
||||
@@ -0,0 +1,304 @@
|
||||
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:
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
[
|
||||
{
|
||||
"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": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,65 @@
|
||||
#!/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
|
||||
@@ -0,0 +1,272 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
[
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,31 @@
|
||||
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();
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
#!/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
|
||||
@@ -0,0 +1,14 @@
|
||||
[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"
|
||||
@@ -0,0 +1,5 @@
|
||||
# Defaults
|
||||
|
||||
# ipld-eth-server endpoints
|
||||
DEFAULT_CERC_IPLD_ETH_RPC=
|
||||
DEFAULT_CERC_IPLD_ETH_GQL=
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM sigp/lcli:v3.2.1 AS lcli
|
||||
FROM sigp/lcli:v4.1.0 AS lcli
|
||||
FROM skylenet/ethereum-genesis-generator@sha256:210353ce7c898686bc5092f16c61220a76d357f51eff9c451e9ad1b9ad03d4d3 AS ethgen
|
||||
FROM cerc/fixturenet-eth-geth:local AS fnetgeth
|
||||
|
||||
|
||||
@@ -21,22 +21,14 @@ if [ ! -f "$DATADIR/bootnode/enr.dat" ]; then
|
||||
--udp-port $BOOTNODE_PORT \
|
||||
--tcp-port $BOOTNODE_PORT \
|
||||
--genesis-fork-version $GENESIS_FORK_VERSION \
|
||||
--output-dir $DATADIR/bootnode-temp
|
||||
--output-dir $DATADIR/bootnode
|
||||
|
||||
# Output ENR to a temp dir and mv as "lcli generate-bootnode-enr" will not overwrite an empty dir (mounted volume)
|
||||
mkdir -p $DATADIR/bootnode
|
||||
mv $DATADIR/bootnode-temp/* $DATADIR/bootnode
|
||||
rm -r $DATADIR/bootnode-temp
|
||||
bootnode_enr=`cat $DATADIR/bootnode/enr.dat`
|
||||
echo "- $bootnode_enr" > $TESTNET_DIR/boot_enr.yaml
|
||||
|
||||
echo "Generated bootnode enr"
|
||||
else
|
||||
echo "Found existing bootnode enr"
|
||||
echo "Generated bootnode enr and written to $TESTNET_DIR/boot_enr.yaml"
|
||||
fi
|
||||
|
||||
bootnode_enr=`cat $DATADIR/bootnode/enr.dat`
|
||||
echo "- $bootnode_enr" > $TESTNET_DIR/boot_enr.yaml
|
||||
echo "Written bootnode enr to $TESTNET_DIR/boot_enr.yaml"
|
||||
|
||||
exec lighthouse boot_node \
|
||||
--testnet-dir $TESTNET_DIR \
|
||||
--port $BOOTNODE_PORT \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM sigp/lighthouse:v4.0.1-modern
|
||||
FROM sigp/lighthouse:v4.1.0-modern
|
||||
|
||||
RUN apt-get update; apt-get install bash netcat curl less jq -y;
|
||||
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build cerc/pocket
|
||||
docker build -t cerc/pocket:local ${CERC_REPO_BASE_DIR}/pocket-core-deployments/docker
|
||||
@@ -0,0 +1,13 @@
|
||||
FROM node:18.16.0-alpine3.16
|
||||
|
||||
RUN apk --update --no-cache add git python3 alpine-sdk
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN echo "Building azimuth-watcher-ts" && \
|
||||
yarn && yarn build
|
||||
|
||||
RUN echo "Install toml-js to update watcher config files" && \
|
||||
yarn add --dev --ignore-workspace-root-check toml-js
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build cerc/watcher-azimuth
|
||||
|
||||
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
||||
|
||||
# See: https://stackoverflow.com/a/246128/1701505
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
docker build -t cerc/watcher-azimuth:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/azimuth-watcher-ts
|
||||
@@ -36,3 +36,5 @@ cerc/optimism-l2geth
|
||||
cerc/optimism-op-batcher
|
||||
cerc/optimism-op-node
|
||||
cerc/optimism-op-proposer
|
||||
cerc/pocket
|
||||
cerc/watcher-azimuth
|
||||
|
||||
@@ -24,3 +24,5 @@ tx-spammer
|
||||
kubo
|
||||
foundry
|
||||
fixturenet-optimism
|
||||
fixturenet-pocket
|
||||
watcher-azimuth
|
||||
|
||||
@@ -27,3 +27,6 @@ lirewine/sdk
|
||||
telackey/act_runner
|
||||
ethereum-optimism/op-geth
|
||||
ethereum-optimism/optimism
|
||||
pokt-network/pocket-core
|
||||
pokt-network/pocket-core-deployments
|
||||
cerc-io/azimuth-watcher-ts
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
# Azimuth Watcher
|
||||
|
||||
Instructions to setup and deploy Azimuth Watcher stack
|
||||
|
||||
## Setup
|
||||
|
||||
Prerequisite: ipld-eth-server RPC and GQL endpoints
|
||||
|
||||
Clone required repositories:
|
||||
|
||||
```bash
|
||||
laconic-so --stack azimuth setup-repositories
|
||||
```
|
||||
|
||||
NOTE: If the repository already exists and checked out to a different version, `setup-repositories` command will throw an error.
|
||||
For getting around this, the `azimuth-watcher-ts` repository can be removed and then run the command.
|
||||
|
||||
Checkout to the required versions and branches in repos
|
||||
|
||||
```bash
|
||||
# azimuth-watcher-ts
|
||||
cd ~/cerc/azimuth-watcher-ts
|
||||
git checkout v0.1.0
|
||||
```
|
||||
|
||||
Build the container images:
|
||||
|
||||
```bash
|
||||
laconic-so --stack azimuth build-containers
|
||||
```
|
||||
|
||||
This should create the required docker images in the local image registry.
|
||||
|
||||
### Configuration
|
||||
|
||||
* Create and update an env file to be used in the next step:
|
||||
|
||||
```bash
|
||||
# External ipld-eth-server endpoints
|
||||
CERC_IPLD_ETH_RPC=
|
||||
CERC_IPLD_ETH_GQL=
|
||||
```
|
||||
|
||||
* NOTE: If ipld-eth-server is running on the host machine, use `host.docker.internal` as the hostname to access host ports
|
||||
|
||||
### Deploy the stack
|
||||
|
||||
* Deploy the containers:
|
||||
|
||||
```bash
|
||||
laconic-so --stack azimuth deploy-system --env-file <PATH_TO_ENV_FILE> up
|
||||
```
|
||||
|
||||
* List and check the health status of all the containers using `docker ps` and wait for them to be `healthy`
|
||||
|
||||
## Clean up
|
||||
|
||||
Stop all the services running in background run:
|
||||
|
||||
```bash
|
||||
laconic-so --stack azimuth deploy-system down
|
||||
```
|
||||
|
||||
Clear volumes created by this stack:
|
||||
|
||||
```bash
|
||||
# List all relevant volumes
|
||||
docker volume ls -q --filter "name=.*watcher_db_data"
|
||||
|
||||
# Remove all the listed volumes
|
||||
docker volume rm $(docker volume ls -q --filter "name=.*watcher_db_data")
|
||||
```
|
||||
@@ -0,0 +1,8 @@
|
||||
version: "1.0"
|
||||
name: azimuth
|
||||
repos:
|
||||
- cerc-io/azimuth-watcher-ts
|
||||
containers:
|
||||
- cerc/watcher-azimuth
|
||||
pods:
|
||||
- watcher-azimuth
|
||||
@@ -117,8 +117,8 @@ Clear volumes created by this stack:
|
||||
|
||||
```bash
|
||||
# List all relevant volumes
|
||||
$ docker volume ls -q --filter "name=.*fixturenet_eth_bootnode_geth_data|.*fixturenet_eth_bootnode_lighthouse_data|.*fixturenet_eth_geth_1_data|.*fixturenet_eth_geth_2_data|.*fixturenet_eth_lighthouse_1_data|.*fixturenet_eth_lighthouse_2_data"
|
||||
$ docker volume ls -q --filter "name=.*fixturenet_eth_bootnode_geth_data|.*fixturenet_eth_geth_1_data|.*fixturenet_eth_geth_2_data|.*fixturenet_eth_lighthouse_1_data|.*fixturenet_eth_lighthouse_2_data"
|
||||
|
||||
# Remove all the listed volumes
|
||||
$ docker volume rm $(docker volume ls -q --filter "name=.*fixturenet_eth_bootnode_geth_data|.*fixturenet_eth_bootnode_lighthouse_data|.*fixturenet_eth_geth_1_data|.*fixturenet_eth_geth_2_data|.*fixturenet_eth_lighthouse_1_data|.*fixturenet_eth_lighthouse_2_data")
|
||||
$ docker volume rm $(docker volume ls -q --filter "name=.*fixturenet_eth_bootnode_geth_data|.*fixturenet_eth_geth_1_data|.*fixturenet_eth_geth_2_data|.*fixturenet_eth_lighthouse_1_data|.*fixturenet_eth_lighthouse_2_data")
|
||||
```
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
# Pocket Fixturenet
|
||||
|
||||
Instructions for deploying a local single-node Pocket chain alongside a geth + lighthouse blockchain "fixturenet" for development and testing purposes using laconic-stack-orchestrator.
|
||||
|
||||
## 1. Build Laconic Stack Orchestrator
|
||||
Build this fork of Laconic Stack Orchestrator which includes the fixturenet-pocket stack:
|
||||
```
|
||||
$ scripts/build_shiv_package.sh
|
||||
$ cd package
|
||||
$ mv laconic-so-{version} /usr/local/bin/laconic-so # Or move laconic-so to ~/bin or your favorite on-path directory
|
||||
```
|
||||
|
||||
## 2. Clone required repositories
|
||||
```
|
||||
$ laconic-so --stack fixturenet-pocket setup-repositories
|
||||
```
|
||||
## 3. Build the stack's containers
|
||||
```
|
||||
$ laconic-so --stack fixturenet-pocket build-containers
|
||||
```
|
||||
## 4. Deploy the stack
|
||||
```
|
||||
$ laconic-so --stack fixturenet-pocket deploy up
|
||||
```
|
||||
It may take up to 10 minutes for the Eth Fixturenet to fully come online and start producing blocks.
|
||||
## 5. Check status
|
||||
**Eth Fixturenet:**
|
||||
```
|
||||
$ laconic-so --stack fixturenet-pocket deploy exec fixturenet-eth-bootnode-lighthouse /scripts/status-internal.sh
|
||||
Waiting for geth to generate DAG.... done
|
||||
Waiting for beacon phase0.... done
|
||||
Waiting for beacon altair.... done
|
||||
Waiting for beacon bellatrix pre-merge.... done
|
||||
Waiting for beacon bellatrix merge.... done
|
||||
```
|
||||
**Pocket node:**
|
||||
```
|
||||
$ laconic-so --stack fixturenet-pocket deploy exec pocket "pocket query height"
|
||||
2023/04/20 08:07:46 Initializing Pocket Datadir
|
||||
2023/04/20 08:07:46 datadir = /home/app/.pocket
|
||||
http://localhost:8081/v1/query/height
|
||||
{
|
||||
"height": 4
|
||||
}
|
||||
```
|
||||
or
|
||||
```
|
||||
$ laconic-so --stack fixturenet-pocket deploy logs pocket
|
||||
```
|
||||
## 6. Send a relay request to Pocket node
|
||||
The Pocket node serves relay requests at `http://localhost:8081/v1/client/sim`
|
||||
**Example request:**
|
||||
```
|
||||
$ curl -X POST --data '{"relay_network_id":"0021","payload":{"data":"{\"jsonrpc\": \"2.0\",\"id\": 1,\"method\": \"eth_blockNumber\",\"params\": []}","method":"POST","path":"","headers":{}}}' http://localhost:8081/v1/client/sim
|
||||
```
|
||||
**Response:**
|
||||
```
|
||||
"{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x6fe\"}\n"
|
||||
```
|
||||
@@ -0,0 +1,16 @@
|
||||
version: "1.0"
|
||||
name: fixturenet-pocket
|
||||
description: "A single node pocket chain that can serve relays from the geth-1 node in eth-fixturenet"
|
||||
repos:
|
||||
- cerc-io/go-ethereum
|
||||
- pokt-network/pocket-core
|
||||
- pokt-network/pocket-core-deployments # contains the dockerfile
|
||||
containers:
|
||||
- cerc/go-ethereum
|
||||
- cerc/lighthouse
|
||||
- cerc/fixturenet-eth-geth
|
||||
- cerc/fixturenet-eth-lighthouse
|
||||
- cerc/pocket
|
||||
pods:
|
||||
- fixturenet-pocket
|
||||
- fixturenet-eth
|
||||
+10
-3
@@ -26,7 +26,7 @@ In addition to the pre-requisites listed in the [README](/README.md), the follow
|
||||
|
||||
1. Clone this repository:
|
||||
```
|
||||
$ git clone (https://github.com/cerc-io/stack-orchestrator.git
|
||||
$ git clone https://github.com/cerc-io/stack-orchestrator.git
|
||||
```
|
||||
|
||||
2. Enter the project directory:
|
||||
@@ -87,20 +87,27 @@ Use shiv to build a single file Python executable zip archive of laconic-so:
|
||||
```
|
||||
$ cp stack-orchetrator/laconic-so ~/bin
|
||||
$ laconic-so
|
||||
Usage: python -m laconic-so [OPTIONS] COMMAND [ARGS]...
|
||||
Usage: laconic-so [OPTIONS] COMMAND [ARGS]...
|
||||
|
||||
Laconic Stack Orchestrator
|
||||
|
||||
Options:
|
||||
--stack TEXT specify a stack to build/deploy
|
||||
--quiet
|
||||
--verbose
|
||||
--dry-run
|
||||
-h, --help Show this message and exit.
|
||||
--local-stack
|
||||
--debug
|
||||
--continue-on-error
|
||||
-h, --help Show this message and exit.
|
||||
|
||||
Commands:
|
||||
build-containers build the set of containers required for a complete...
|
||||
build-npms build the set of npm packages required for a...
|
||||
deploy deploy a stack
|
||||
deploy-system deploy a stack
|
||||
setup-repositories git clone the set of repositories required to build...
|
||||
version print tool version
|
||||
```
|
||||
|
||||
For cutting releases, use the [shiv build script](/scripts/build_shiv_package.sh).
|
||||
|
||||
Reference in New Issue
Block a user