Compare commits
48 Commits
eth_proxy
...
blast-ethe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55f16856cf | ||
|
|
06c87462a6 | ||
|
|
894e464af8 | ||
|
|
bac89dcd18 | ||
|
|
5c68b48267 | ||
|
|
12625e82b0 | ||
|
|
d5049475cd | ||
|
|
e1edc72d4e | ||
|
|
8e5368e211 | ||
|
|
8063a81d4d | ||
|
|
564d265a91 | ||
|
|
fce36dc430 | ||
|
|
91dcdc706b | ||
|
|
e9195f2c1a | ||
|
|
ee1707bf0f | ||
|
|
c9ae74831e | ||
|
|
b81e637fcf | ||
|
|
4d4b9060c6 | ||
|
|
03ce92bfc1 | ||
|
|
b2de047014 | ||
|
|
2b6e1020aa | ||
|
|
208fcfbf53 | ||
|
|
4f282a205a | ||
|
|
8f5a05c6a9 | ||
|
|
015670c2ce | ||
|
|
ff8791e6fc | ||
|
|
e4056bc0c3 | ||
|
|
c7656c6fd8 | ||
|
|
a6bc330a97 | ||
|
|
e8267ff402 | ||
|
|
078b88cd16 | ||
|
|
1b228c0c35 | ||
|
|
6db5e213eb | ||
|
|
6011dac0ce | ||
|
|
edb8d2bfc5 | ||
|
|
e33d3a5d85 | ||
|
|
c894badf77 | ||
|
|
971e5ee6f9 | ||
|
|
6211f15994 | ||
|
|
eba55b0098 | ||
|
|
97f3bb4644 | ||
|
|
ac25454915 | ||
|
|
a59dbb66dc | ||
|
|
80cc6ce977 | ||
|
|
5e3263dec3 | ||
|
|
aab7c74474 | ||
|
|
115916a9f9 | ||
|
|
9cf3c5b71e |
12
README.md
12
README.md
@@ -1,8 +1,20 @@
|
||||
|
||||
### Docs
|
||||
|
||||
.envs:
|
||||
|
||||
xdai:
|
||||
```
|
||||
XDAI_RPC_URL=http://xdai-archive:8545
|
||||
PUBLIC_IP=
|
||||
TARGET_PEERS=80
|
||||
```
|
||||
|
||||
TODO:
|
||||
|
||||
```
|
||||
auto-generate .jwtsecret for beacon-execution connection
|
||||
Fix wireguard chains network for pocket-frontends
|
||||
```
|
||||
|
||||
[Pocket Validator](README_POKT.md) </br>
|
||||
|
||||
10
dshackle.yml
10
dshackle.yml
@@ -7,6 +7,7 @@ services:
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./dshackle/config:/etc/dshackle # This should hold all your yaml files
|
||||
- ./dshackle/logs:/logs
|
||||
expose:
|
||||
- 8080 # /eth
|
||||
- 8081 # /metrics
|
||||
@@ -16,6 +17,7 @@ services:
|
||||
- chains
|
||||
ports:
|
||||
- "127.0.0.1:8082:8082" # healthcheck
|
||||
- "127.0.0.1:8545:8080"
|
||||
environment:
|
||||
- ALCHEMY_KEY=${ALCHEMY_KEY}
|
||||
- ANYBLOCK_KEY=${ANYBLOCK_KEY}
|
||||
@@ -34,13 +36,13 @@ services:
|
||||
- "prometheus-scrape.job_name=dshackle"
|
||||
- "prometheus-scrape.metrics_path=/metrics"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.dshackle-stripprefix.stripprefix.prefixes=/dshackle"
|
||||
# - "traefik.http.middlewares.shackle-replacepath.replacepath.path=/eth"
|
||||
- "traefik.http.middlewares.dshackle-stripprefix.stripprefix.prefixes=/eth-archive"
|
||||
- "traefik.http.middlewares.shackle-replacepath.replacepath.path=/eth"
|
||||
- "traefik.http.services.dshackle.loadbalancer.server.port=8080"
|
||||
- "traefik.http.routers.dshackle.entrypoints=websecure"
|
||||
- "traefik.http.routers.dshackle.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.dshackle.rule=Host(`$DOMAIN`) && PathPrefix(`/dshackle`)"
|
||||
# - "traefik.http.routers.dshackle.middlewares=dshackle-stripprefix, dshackle-replacepath, ipwhitelist"
|
||||
- "traefik.http.routers.dshackle.rule=Host(`$DOMAIN`) && PathPrefix(`/eth-archive`)"
|
||||
- "traefik.http.routers.dshackle.middlewares=dshackle-stripprefix, dshackle-replacepath, ipwhitelist"
|
||||
- "traefik.http.routers.dshackle.middlewares=dshackle-stripprefix, ipwhitelist"
|
||||
|
||||
redis:
|
||||
|
||||
27
dshackle/config/de-1-erigon.yaml
Normal file
27
dshackle/config/de-1-erigon.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
upstreams:
|
||||
- id: de-1-erigon
|
||||
chain: ethereum
|
||||
labels:
|
||||
provider: stakesquid-de-1-erigon
|
||||
priority: 100
|
||||
methods:
|
||||
enabled:
|
||||
# Manually Enabled
|
||||
- name: trace_block
|
||||
- name: trace_call
|
||||
- name: trace_callMany
|
||||
- name: trace_filter
|
||||
- name: trace_get
|
||||
- name: trace_transaction
|
||||
disabled:
|
||||
- name: eth_chainId
|
||||
- name: eth_chainID
|
||||
- name: eth_chainid
|
||||
connection:
|
||||
ethereum:
|
||||
rpc:
|
||||
url: "https://rpc-de-1.stakesquid.eu/erigon"
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: "wss://rpc-de-1.stakesquid.eu/erigon"
|
||||
44
dshackle/config/de-4-mainnet.yaml
Normal file
44
dshackle/config/de-4-mainnet.yaml
Normal file
@@ -0,0 +1,44 @@
|
||||
upstreams:
|
||||
- id: de-4-mainnet
|
||||
chain: ethereum
|
||||
labels:
|
||||
provider: stakesquid-de-4-mainnet
|
||||
priority: 120
|
||||
methods:
|
||||
enabled:
|
||||
# Manually Enabled
|
||||
- name: eth_chainid
|
||||
- name: eth_chainId
|
||||
- name: eth_chainID
|
||||
disabled:
|
||||
- name: eth_blockNumber
|
||||
- name: eth_call
|
||||
- name: eth_estimateGas
|
||||
- name: eth_feeHistory
|
||||
- name: eth_gasPrice
|
||||
- name: eth_getBalance
|
||||
- name: eth_getBlockByHash
|
||||
- name: eth_getBlockByNumber
|
||||
- name: eth_getBlockTransactionCountByHash
|
||||
- name: eth_getBlockTransactionCountByNumber
|
||||
- name: eth_getCode
|
||||
- name: eth_getLogs
|
||||
- name: eth_getStorageAt
|
||||
- name: eth_getTransactionByBlockHashAndIndex
|
||||
- name: eth_getTransactionByBlockNumberAndIndex
|
||||
- name: eth_getTransactionByHash
|
||||
- name: eth_getTransactionCount
|
||||
- name: eth_getTransactionReceipt
|
||||
- name: eth_getUncleByBlockHashAndIndex
|
||||
- name: eth_getUncleByBlockNumberAndIndex
|
||||
- name: eth_getUncleCountByBlockHash
|
||||
- name: eth_getUncleCountByBlockNumber
|
||||
- name: eth_sendRawTransaction
|
||||
connection:
|
||||
ethereum:
|
||||
rpc:
|
||||
url: "https://rpc-de-4.stakesquid.eu/mainnet"
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: "wss://rpc-de-4.stakesquid.eu/mainnet"
|
||||
@@ -37,6 +37,11 @@ proxy:
|
||||
- id: eth
|
||||
blockchain: ethereum
|
||||
|
||||
accessLog:
|
||||
enabled: true
|
||||
include-messages: true
|
||||
filename: /logs/access_log.jsonl
|
||||
|
||||
cluster:
|
||||
defaults:
|
||||
- chains:
|
||||
@@ -49,16 +54,19 @@ cluster:
|
||||
#- "geth.yaml"
|
||||
#- "nethermind.yaml"
|
||||
#- "erigon.yaml"
|
||||
- "de-1-erigon.yaml"
|
||||
- "fi-1-erigon.yaml"
|
||||
#- "de-4-mainnet.yaml"
|
||||
# Freemium Nodes
|
||||
- "alchemy.yaml"
|
||||
- "anyblock.yaml"
|
||||
- "chainstack.yaml"
|
||||
- "coinbase.yaml"
|
||||
#- "alchemy.yaml"
|
||||
#- "anyblock.yaml"
|
||||
#- "chainstack.yaml"
|
||||
#- "coinbase.yaml"
|
||||
- "infura.yaml"
|
||||
- "quicknode.yaml"
|
||||
- "rivet.yaml"
|
||||
#- "quicknode.yaml"
|
||||
#- "rivet.yaml"
|
||||
# Public Nodes
|
||||
- "cloudflare.yaml"
|
||||
- "avado.yaml"
|
||||
- "ankr.yaml"
|
||||
#- "cloudflare.yaml"
|
||||
#- "avado.yaml"
|
||||
#- "ankr.yaml"
|
||||
|
||||
|
||||
27
dshackle/config/fi-1-erigon.yaml
Normal file
27
dshackle/config/fi-1-erigon.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
upstreams:
|
||||
- id: fi-1-erigon
|
||||
chain: ethereum
|
||||
labels:
|
||||
provider: stakesquid-fi-1-erigon
|
||||
priority: 100
|
||||
methods:
|
||||
enabled:
|
||||
# Manually Enabled
|
||||
- name: trace_block
|
||||
- name: trace_call
|
||||
- name: trace_callMany
|
||||
- name: trace_filter
|
||||
- name: trace_get
|
||||
- name: trace_transaction
|
||||
disabled:
|
||||
- name: eth_chainId
|
||||
- name: eth_chainID
|
||||
- name: eth_chainid
|
||||
connection:
|
||||
ethereum:
|
||||
rpc:
|
||||
url: "https://rpc-fi-1.stakesquid.eu/erigon"
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: "wss://rpc-fi-1.stakesquid.eu/erigon"
|
||||
98
erigon-goerli.yml
Normal file
98
erigon-goerli.yml
Normal file
@@ -0,0 +1,98 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
erigon-trace:
|
||||
image: thorax/erigon:v2022.10.01
|
||||
expose:
|
||||
- "30303"
|
||||
- "30304"
|
||||
- "9090"
|
||||
volumes:
|
||||
- erigon-trace:/home/erigon/.local/share/erigon
|
||||
- .jwtsecret:/jwtsecret
|
||||
networks:
|
||||
- chains
|
||||
command: >
|
||||
erigon --chain goerli
|
||||
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060
|
||||
--private.api.addr=0.0.0.0:9090
|
||||
--pprof
|
||||
--pprof.addr=0.0.0.0
|
||||
--pprof.port=6061
|
||||
--authrpc.addr=0.0.0.0
|
||||
--authrpc.vhosts=*
|
||||
--authrpc.jwtsecret=/jwtsecret
|
||||
--snapshots=true
|
||||
--torrent.download.rate=1250mb
|
||||
--torrent.upload.rate=1250mb
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 1m
|
||||
labels:
|
||||
- "prometheus-scrape.enabled=true"
|
||||
- "prometheus-scrape.port=6060"
|
||||
- "prometheus-scrape.job_name=erigon"
|
||||
- "prometheus-scrape.metrics_path=/debug/metrics/prometheus"
|
||||
|
||||
rpcdaemon:
|
||||
image: thorax/erigon:v2022.10.01
|
||||
command: >
|
||||
rpcdaemon --datadir=/home/erigon/.local/share/erigon/goerli
|
||||
--private.api.addr=erigon-trace:9090
|
||||
--txpool.api.addr=erigon-trace:9090
|
||||
--http.addr=0.0.0.0
|
||||
--http.vhosts=*
|
||||
--http.corsdomain=*
|
||||
--http.api=eth,erigon,web3,net,debug,trace,txpool
|
||||
--ws
|
||||
pid: service:erigon-trace # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
|
||||
volumes:
|
||||
- erigon-trace:/home/erigon/.local/share/erigon
|
||||
networks:
|
||||
- chains
|
||||
expose:
|
||||
- "8545"
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- "erigon-trace"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.rpcdaemon-stripprefix.stripprefix.prefixes=/erigon-goerli"
|
||||
- "traefik.http.services.rpcdaemon.loadbalancer.server.port=8545"
|
||||
- "traefik.http.routers.rpcdaemon.entrypoints=websecure"
|
||||
- "traefik.http.routers.rpcdaemon.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.rpcdaemon.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon-goerli`)"
|
||||
- "traefik.http.routers.rpcdaemon.middlewares=rpcdaemon-stripprefix, ipwhitelist"
|
||||
|
||||
lighthouse:
|
||||
image: sigp/lighthouse:latest-modern
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "127.0.0.1:5052:5052"
|
||||
volumes:
|
||||
- .jwtsecret:/jwtsecret
|
||||
- lighthouse_data:/root/.lighthouse
|
||||
command: >
|
||||
lighthouse beacon_node
|
||||
--network prater
|
||||
--reconstruct-historic-states
|
||||
--execution-endpoint http://erigon-trace:8551
|
||||
--execution-jwt /jwtsecret
|
||||
--http
|
||||
--http-address=0.0.0.0
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 1m
|
||||
networks:
|
||||
- chains
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.lighthouse-stripprefix.stripprefix.prefixes=/lighthouse"
|
||||
- "traefik.http.services.lighthouse.loadbalancer.server.port=5052"
|
||||
- "traefik.http.routers.lighthouse.entrypoints=websecure"
|
||||
- "traefik.http.routers.lighthouse.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.lighthouse.rule=Host(`$DOMAIN`) && PathPrefix(`/lighthouse`)"
|
||||
- "traefik.http.routers.lighthouse.middlewares=lighthouse-stripprefix, ipwhitelist"
|
||||
|
||||
|
||||
volumes:
|
||||
erigon-trace:
|
||||
lighthouse_data:
|
||||
34
erigon-polygon.yml
Normal file
34
erigon-polygon.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
erigon-polygon:
|
||||
build:
|
||||
args:
|
||||
ERIGON_VERSION: v0.0.3
|
||||
context: ./polygon/erigon
|
||||
dockerfile: Dockerfile
|
||||
environment:
|
||||
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/erigon-archive-snapshot-2022-10-12.tar.gz
|
||||
- BOOTSTRAP=1
|
||||
volumes:
|
||||
- "polygon-archive_data:/datadir"
|
||||
ports:
|
||||
- "40303:40303"
|
||||
- "40303:40303/udp"
|
||||
depends_on:
|
||||
- heimdallr
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 1m
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.erigon-polygon-stripprefix.stripprefix.prefixes=/polygon-archive"
|
||||
- "traefik.http.services.erigon-polygon.loadbalancer.server.port=8545"
|
||||
- "traefik.http.routers.erigon-polygon.entrypoints=websecure"
|
||||
- "traefik.http.routers.erigon-polygon.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.erigon-polygon.rule=Host(`$DOMAIN`) && PathPrefix(`/polygon-archive`)"
|
||||
- "traefik.http.routers.erigon-polygon.middlewares=erigon-polygon-stripprefix, ipwhitelist"
|
||||
networks:
|
||||
- chains
|
||||
|
||||
volumes:
|
||||
polygon-archive_data:
|
||||
@@ -16,6 +16,8 @@ services:
|
||||
erigon --chain mainnet
|
||||
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060
|
||||
--private.api.addr=0.0.0.0:9090
|
||||
--torrent.upload.rate="1250mb"
|
||||
--torrent.download.rate="1250mb"
|
||||
--pprof
|
||||
--pprof.addr=0.0.0.0
|
||||
--pprof.port=6061
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
|
||||
traefik:
|
||||
image: traefik:latest
|
||||
container_name: traefik
|
||||
restart: always
|
||||
ports:
|
||||
- "443:443"
|
||||
- "127.0.0.1:8080:8080"
|
||||
expose:
|
||||
- "8082"
|
||||
command:
|
||||
- "--api=true"
|
||||
- "--api.insecure=true"
|
||||
- "--api.dashboard=true"
|
||||
- "--log.level=DEBUG"
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--entrypoints.websecure.address=:443"
|
||||
- "--entryPoints.metrics.address=:8082"
|
||||
- "--metrics.prometheus.entryPoint=metrics"
|
||||
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
|
||||
# TESTING
|
||||
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
|
||||
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
|
||||
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
||||
volumes:
|
||||
- "./traefik/letsencrypt:/letsencrypt"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
|
||||
### POKT
|
||||
pocket-de-1:
|
||||
build: pokt
|
||||
ports:
|
||||
- "127.0.0.1:8081:8081"
|
||||
- "26656:26656"
|
||||
expose:
|
||||
- 26656
|
||||
- 26660
|
||||
- 8081
|
||||
- 8083
|
||||
#command: pocket start --simulateRelay
|
||||
environment:
|
||||
- POCKET_CORE_KEY=$POKT_DE_1_POCKET_CORE_KEY
|
||||
- POCKET_CORE_PASSPHRASE=$POKT_DE_1_POCKET_CORE_PASSPHRASE
|
||||
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
|
||||
volumes:
|
||||
- pocket-de-1:/home/app/.pocket/data
|
||||
- pocket-de-1-addrbook:/home/app/.pocket/addrbook
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.pocket-fr-1.loadbalancer.server.port=8081"
|
||||
- "traefik.http.routers.pocket-fr-1.entrypoints=websecure"
|
||||
- "traefik.http.routers.pocket-fr-1.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.pocket-fr-1.rule=Host(`$POKT_DE_1_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
|
||||
- "prometheus-scrape.enabled=true"
|
||||
- "prometheus-scrape.port=8083"
|
||||
- "prometheus-scrape.job_name=pocket-de-1"
|
||||
|
||||
|
||||
haproxy:
|
||||
build: haproxy
|
||||
volumes:
|
||||
- ./haproxy:/usr/local/etc/haproxy
|
||||
expose:
|
||||
- "8404"
|
||||
- "80"
|
||||
ports:
|
||||
- "127.0.0.1:80:80"
|
||||
restart: always
|
||||
labels:
|
||||
- "prometheus-scrape.enabled=true"
|
||||
- "prometheus-scrape.port=8404"
|
||||
- "prometheus-scrape.job_name=haproxy"
|
||||
- "prometheus-scrape.metrics_path=/metrics"
|
||||
|
||||
### VOLUMES
|
||||
volumes:
|
||||
pocket-de-1:
|
||||
pocket-de-1-addrbook:
|
||||
|
||||
@@ -92,6 +92,34 @@ services:
|
||||
- "prometheus-scrape.port=8083"
|
||||
- "prometheus-scrape.job_name=pocket-lt-2"
|
||||
|
||||
# pocket-lt-3:
|
||||
# build: pokt
|
||||
# ports:
|
||||
# - "127.0.0.1:8082:8081"
|
||||
# - "26657:26656"
|
||||
# expose:
|
||||
# - 26656
|
||||
# - 26660
|
||||
# - 8081
|
||||
# - 8083
|
||||
# #command: pocket start --simulateRelay
|
||||
# environment:
|
||||
# - POCKET_CORE_KEY=$POKT_LT_3_POCKET_CORE_KEY
|
||||
# - POCKET_CORE_PASSPHRASE=$POKT_LT_3_POCKET_CORE_PASSPHRASE
|
||||
# - POCKET_SNAPSHOT=$POCKET_SNAPSHOT
|
||||
# volumes:
|
||||
# - pocket-lt-3:/home/app/.pocket/data
|
||||
# - pocket-lt-3-addrbook:/home/app/.pocket/addrbook
|
||||
# restart: unless-stopped
|
||||
# labels:
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.http.services.pocket-lt-3.loadbalancer.server.port=8081"
|
||||
# - "traefik.http.routers.pocket-lt-3.entrypoints=websecure"
|
||||
# - "traefik.http.routers.pocket-lt-3.tls.certresolver=myresolver"
|
||||
# - "traefik.http.routers.pocket-lt-3.rule=Host(`$POKT_LT_3_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
|
||||
# - "prometheus-scrape.enabled=true"
|
||||
# - "prometheus-scrape.port=8083"
|
||||
# - "prometheus-scrape.job_name=pocket-lt-3"
|
||||
|
||||
haproxy:
|
||||
build: haproxy
|
||||
@@ -115,3 +143,5 @@ volumes:
|
||||
pocket-lt-1-addrbook:
|
||||
pocket-lt-2:
|
||||
pocket-lt-2-addrbook:
|
||||
# pocket-lt-3:
|
||||
# pocket-lt-3-addrbook:
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM poktnetwork/pocket-core:RC-0.9.1.1
|
||||
FROM poktnetwork/pocket-core:RC-0.9.1.3
|
||||
|
||||
COPY --chown=1005:1001 config.json /home/app/.pocket/config/config.json
|
||||
COPY --chown=1005:1001 chains.json /home/app/.pocket/config/chains.json
|
||||
@@ -8,6 +8,6 @@ RUN mkdir /home/app/.pocket/data
|
||||
RUN chown -R 1005:1001 /home/app/.pocket/data
|
||||
|
||||
|
||||
ENV POCKET_MAIN_SEEDS=361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656,03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,1243026603e9073507a3157bc4de99da74a078fc@seed5.mainnet.pokt.network:24856,6282b55feaff460bb35820363f1eb26237cf5ac3@seed6.mainnet.pokt.network:25856,3640ee055889befbc912dd7d3ed27d6791139395@seed7.mainnet.pokt.network:26856,1951cded4489bf51af56f3dbdd6df55c1a952b1a@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656
|
||||
ENV POCKET_MAIN_SEEDS=03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,f2a4d0ec9d50ea61db18452d191687c899c3ca42@seed5.mainnet.pokt.network:24856,f2a9705924e8d0e11fed60484da2c3d22f7daba8@seed6.mainnet.pokt.network:25856,582177fd65dd03806eeaa2e21c9049e653672c7e@seed7.mainnet.pokt.network:26856,2ea0b13ab823986cfb44292add51ce8677b899ad@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656,361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656
|
||||
|
||||
CMD ["bash", "/home/app/.pocket/bootstrap.sh", "&&", "pocket", "start", "--seeds", "361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656,03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,1243026603e9073507a3157bc4de99da74a078fc@seed5.mainnet.pokt.network:24856,6282b55feaff460bb35820363f1eb26237cf5ac3@seed6.mainnet.pokt.network:25856,3640ee055889befbc912dd7d3ed27d6791139395@seed7.mainnet.pokt.network:26856,1951cded4489bf51af56f3dbdd6df55c1a952b1a@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656", "--mainnet"]
|
||||
CMD ["bash", "/home/app/.pocket/bootstrap.sh", "&&", "pocket", "start", "--seeds", "03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,f2a4d0ec9d50ea61db18452d191687c899c3ca42@seed5.mainnet.pokt.network:24856,f2a9705924e8d0e11fed60484da2c3d22f7daba8@seed6.mainnet.pokt.network:25856,582177fd65dd03806eeaa2e21c9049e653672c7e@seed7.mainnet.pokt.network:26856,2ea0b13ab823986cfb44292add51ce8677b899ad@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656,361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656", "--mainnet"]
|
||||
|
||||
31
polygon/erigon/Dockerfile
Normal file
31
polygon/erigon/Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
||||
# Build Bor in a stock Go builder container
|
||||
FROM golang:1.19-alpine as builder
|
||||
|
||||
# Install packages we need
|
||||
RUN apk add --no-cache make g++ gcc musl-dev linux-headers git
|
||||
|
||||
# Grab ERIGON_VERSION from Build Args
|
||||
ARG ERIGON_VERSION
|
||||
|
||||
# Clone the repo to that folder
|
||||
RUN git clone --recurse-submodules -j8 https://github.com/maticnetwork/erigon.git
|
||||
|
||||
# change into repo
|
||||
WORKDIR ./erigon
|
||||
|
||||
# checkout version
|
||||
RUN git checkout ${ERIGON_VERSION}
|
||||
|
||||
# Build Bor
|
||||
RUN make erigon
|
||||
|
||||
# Pull Bor into a second stage deploy alpine container
|
||||
FROM alpine:latest
|
||||
|
||||
RUN apk add --no-cache ca-certificates curl jq libstdc++ libgcc
|
||||
COPY --from=builder /go/erigon/build/bin/erigon /usr/local/bin/
|
||||
|
||||
# Set entrypoint
|
||||
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
RUN chmod u+x /usr/local/bin/entrypoint.sh
|
||||
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]
|
||||
37
polygon/erigon/scripts/entrypoint.sh
Normal file
37
polygon/erigon/scripts/entrypoint.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
|
||||
# exit script on any error
|
||||
set -e
|
||||
|
||||
# Set Bor Home Directory
|
||||
ERIGON_HOME=/datadir
|
||||
|
||||
|
||||
if [ "${BOOTSTRAP}" == 1 ] && [ -n "${SNAPSHOT_URL}" ] && [ ! -f "${ERIGON_HOME}/bootstrapped" ];
|
||||
then
|
||||
echo "downloading snapshot from ${SNAPSHOT_URL}"
|
||||
mkdir -p ${ERIGON_HOME}
|
||||
wget --tries=0 -O - "${SNAPSHOT_URL}" | tar -xz -C ${ERIGON_HOME} && touch ${ERIGON_HOME}/bootstrapped
|
||||
fi
|
||||
|
||||
READY=$(curl -s http://heimdalld:26657/status | jq '.result.sync_info.catching_up')
|
||||
while [[ "${READY}" != "false" ]];
|
||||
do
|
||||
echo "Waiting for heimdalld to catch up."
|
||||
sleep 30
|
||||
READY=$(curl -s heimdalld:26657/status | jq '.result.sync_info.catching_up')
|
||||
done
|
||||
|
||||
# add snap.keepblocks=true as mentioned on https://snapshot.polygon.technology/
|
||||
|
||||
exec erigon \
|
||||
--chain=bor-mainnet \
|
||||
--bor.heimdall=http://heimdallr:1317 \
|
||||
--datadir=${ERIGON_HOME} \
|
||||
--http --http.addr="0.0.0.0" --http.port="8545" --http.compression --http.vhosts="*" --http.corsdomain="*" --http.api="eth,debug,net,trace,web3,erigon,bor" \
|
||||
--ws --ws.compression \
|
||||
--snap.keepblocks=true \
|
||||
--snapshots="true" \
|
||||
--torrent.upload.rate="1250mb" --torrent.download.rate="1250mb" \
|
||||
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060 \
|
||||
--pprof --pprof.addr=0.0.0.0 --pprof.port=6061
|
||||
87
xdai-archive.yml
Normal file
87
xdai-archive.yml
Normal file
@@ -0,0 +1,87 @@
|
||||
version: '3.1'
|
||||
|
||||
# Client https://github.com/NethermindEth/nethermind
|
||||
# Nethermind container as in https://github.com/gnosischain/documentation/blob/a46e0964c7e4f75bed0ff02f7ae157c4417f60bd/docs/node/execution-layer-validator.md#setup-as-archive-node
|
||||
# Beaconchain container as in https://github.com/gnosischain/lighthouse-launch
|
||||
|
||||
services:
|
||||
xdai-archive:
|
||||
hostname: xdai-archive
|
||||
container_name: xdai-archive
|
||||
image: nethermindeth/nethermind:trace-db
|
||||
restart: always
|
||||
stop_grace_period: 1m
|
||||
command: '--JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0 --Metrics.Enabled true --TraceStore.Enabled true --TraceStore.BlocksToKeep 0 --TraceStore.TraceTypes Trace,Rewards'
|
||||
ports:
|
||||
- '30303:30303/tcp' # p2p
|
||||
- '30303:30303/udp' # p2p
|
||||
- '127.0.0.1:8545:8545'
|
||||
- '127.0.0.1:9091:9091'
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- nethermind_db:/nethermind/nethermind_db
|
||||
- nethermind_keystore:/nethermind/keystore
|
||||
- nethermind_logs:/nethermind/logs
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
environment:
|
||||
- NETHERMIND_CONFIG=xdai_archive
|
||||
- NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES=[Eth,AccountAbstraction,Subscribe,TxPool,Web3,Personal,Proof,Net,Parity,Health,Trace]
|
||||
- NETHERMIND_METRICSCONFIG_EXPOSEPORT=9091
|
||||
- NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS=150
|
||||
logging:
|
||||
options:
|
||||
max-size: "1000m"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.xdai-archive-stripprefix.stripprefix.prefixes=/xdai-archive"
|
||||
- "traefik.http.services.xdai-archive.loadbalancer.server.port=8545"
|
||||
- "traefik.http.routers.xdai-archive.entrypoints=websecure"
|
||||
- "traefik.http.routers.xdai-archive.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.xdai-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/xdai-archive`)"
|
||||
- "traefik.http.routers.xdai-archive.middlewares=xdai-archive-stripprefix, ipwhitelist"
|
||||
|
||||
xdai-beacon:
|
||||
image: sigp/lighthouse:v3.2.1
|
||||
hostname: lighthouse-xdai
|
||||
restart: always
|
||||
stop_grace_period: 1m
|
||||
command: |
|
||||
lighthouse beacon_node
|
||||
--network gnosis
|
||||
--checkpoint-sync-url https://rpc-gbc.gnosischain.com/
|
||||
--discovery-port 12000
|
||||
--port 13000
|
||||
--eth1-endpoints $XDAI_RPC_URL
|
||||
--datadir /home/.eth2/beaconchaindata
|
||||
--http-address 0.0.0.0
|
||||
--http
|
||||
--enr-address $PUBLIC_IP
|
||||
--enr-udp-port 12000
|
||||
--target-peers $TARGET_PEERS
|
||||
--metrics
|
||||
--metrics-address 0.0.0.0
|
||||
--metrics-allow-origin *
|
||||
--debug-level info
|
||||
ports:
|
||||
# HTTPPORT
|
||||
# - 5052
|
||||
# P2P
|
||||
- '12000:12000/udp'
|
||||
- '13000:13000'
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- lighthouse_xdai:/home/.eth2/beaconchaindata
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "100m"
|
||||
max-file: "1"
|
||||
|
||||
volumes:
|
||||
nethermind_db:
|
||||
nethermind_keystore:
|
||||
nethermind_logs:
|
||||
lighthouse_xdai:
|
||||
Reference in New Issue
Block a user