Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
d4594e5
Use native backend proof for mining status
jeremyharkness Jun 20, 2026
5540aa4
Keep EVM lag advisory for native-safe mining
jeremyharkness Jun 20, 2026
458ddca
Keep wedged ASICs visible in miner scan
jeremyharkness Jun 20, 2026
9b53432
Document accepted-block delta status bridge
jeremyharkness Jun 20, 2026
940f3a1
Expose native safety fields in mining measurements
jeremyharkness Jun 20, 2026
ac8e08a
Make native-safe mining defaults explicit
jeremyharkness Jun 20, 2026
af60f31
Repair missing ASIC lanes from pool job-state
jeremyharkness Jun 21, 2026
f22ffdf
Align stack mining safety with native proof
jeremyharkness Jun 21, 2026
1fced7e
Report mining loss reasons in QA measurements
jeremyharkness Jun 21, 2026
17a3286
Harden watchdog recovery status gates
jeremyharkness Jun 21, 2026
7d9c23d
Use native mining safety gates
jeremyharkness Jun 21, 2026
5e692bd
Keep EVM lag advisory under native paid mining
jeremyharkness Jun 21, 2026
01fd8ad
Make chain self-heal script executable
jeremyharkness Jun 21, 2026
61f7503
Harden catch-up policy during paid mining
jeremyharkness Jun 21, 2026
0d546de
Treat native P2P proof as catch-up safe
jeremyharkness Jun 21, 2026
897a354
Harden native P2P safety recovery
jeremyharkness Jun 21, 2026
88a3377
Block live node mutation during mining
jeremyharkness Jun 21, 2026
08e7c96
Harden native advisory sync gates
jeremyharkness Jun 21, 2026
5d7fd86
Allow safe repair-hold mining recovery
jeremyharkness Jun 21, 2026
d024dc8
Default Stratum retry log throttling
jeremyharkness Jun 21, 2026
6652731
Harden mining appliance runtime defaults
jeremyharkness Jun 21, 2026
991fd96
Pin redis stack mining timing defaults
jeremyharkness Jun 21, 2026
c305b66
Gate redis stack on paid coinbase readiness
jeremyharkness Jun 21, 2026
f253511
Record good mining state savepoint
jeremyharkness Jun 21, 2026
915d8c4
Harden redis stack mining safety defaults
jeremyharkness Jun 21, 2026
176fb82
Record sidebar pool deploy savepoints
jeremyharkness Jun 21, 2026
3142086
Record dashboard control suite baseline savepoint
jeremyharkness Jun 22, 2026
c6327b7
Record control suite dashboard deploy savepoint
jeremyharkness Jun 22, 2026
ebcdd9b
Fix control suite savepoint guard text
jeremyharkness Jun 22, 2026
647e8d0
Record recovered dashboard control suite deploy savepoint
jeremyharkness Jun 22, 2026
ed7af68
Record pre rebuild redeploy savepoint
jeremyharkness Jun 22, 2026
1c14ecd
Fix savepoint peer guard wording
jeremyharkness Jun 22, 2026
22537c5
Record rebuild redeploy rollback outcome
jeremyharkness Jun 22, 2026
6861070
Record dashboard projection caveat
jeremyharkness Jun 22, 2026
b52db58
Record final rollback health confirmation
jeremyharkness Jun 22, 2026
b1aa5ba
Record morning safe build exclusion
jeremyharkness Jun 22, 2026
daa39a5
Record morning safe build images
jeremyharkness Jun 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 41 additions & 12 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ BDAG_NODE_ARCHIVAL=0
# Dashboard repository. Release builds always use the main branch.
DASHBOARD_REPO=https://github.com/BlockdagEngineering/redis-dash.git

P2P_PORT=8150
P2P_PORT=8155
BDAG_RPC_PORT=38131
EVM_HTTP_PORT=18545
EVM_WS_PORT=18546
Expand All @@ -45,12 +45,14 @@ DASHBOARD_HOST_PORT=8088
# Dashboard UI display timezone.
DASHBOARD_TIMEZONE=Africa/Johannesburg

# NODE_DATA_DIR=./node-data
NODE_DATA_DIR=./data/node

# Required for any pool/miner deployment. Do not use the zero address.
# Required for any pool/miner deployment. Do not use the zero address. Leave
# blank in the example so release/install readiness fails until an operator
# supplies the payout address for this deployment.
# POOL_COINBASE_ADDRESS may be set separately when it must differ from the
# displayed miner/pool identity; otherwise set MINING_POOL_ADDRESS only.
MINING_POOL_ADDRESS=0xEd5e2dD1377aBe28907673cdEa8c2c04Fb715dcd
MINING_POOL_ADDRESS=
POOL_COINBASE_ADDRESS=

# Storage placement for constrained mining appliances. Release installers keep
Expand Down Expand Up @@ -87,9 +89,12 @@ BDAG_P2P_PROTOCOLS=tcp
# Standard mining-host performance defaults. The release topology has one
# production node with a direct pool-to-node RPC path.
BDAG_NODE_CACHE_MB=2048
BDAG_NODE_DEBUG_LEVEL=warn
BDAG_NODE_NO_FILE_LOGGING=1
BDAG_EVM_CACHE_MB=2048
BDAG_NODE_CACHE_DATABASE_PERCENT=70
BDAG_NODE_OBSOLETE_HEIGHT=20
BDAG_NODE_MINING_NO_PENDING_TX=0
BDAG_BLOCK_READ_AHEAD_KB=1024
BDAG_BLOCK_NR_REQUESTS=256
BDAG_NODE_CPU_SHARES=6144
Expand Down Expand Up @@ -127,13 +132,18 @@ POOL_GBT_PRESSURE_INTERVAL_MS=500
POOL_GBT_PRESSURE_WINDOW_SECONDS=10
POOL_RPC_ROUTER_NODE_HEALTH_PROBE_SECONDS=15
POOL_RPC_ROUTER_NODE_HEALTH_MAX_AGE_SECONDS=30
POOL_RPC_ROUTER_NODE_HEALTH_FRESH_TEMPLATE_GRACE_SECONDS=15
POOL_RPC_ROUTER_NODE_HEALTH_MIN_CONSENSUS_PEERS=2

# Host network discovery is only for choosing this node's advertised P2P address.
# Peer candidates should be complete P2P multiaddrs.
BDAG_NETWORK_TOPOLOGY=auto
BDAG_DETECTED_NETWORK_TOPOLOGY=
BDAG_ASIC_LAN_INTERFACE=
BDAG_ASIC_LAN_CIDRS=
POOL_ASIC_ARP_TABLE_PATH=/host/proc/net/arp
POOL_ASIC_MAC_ALLOWLIST=
POOL_ASIC_MAC_OVERRIDES=
# Optional route to miners on a remote LAN reached through a routed gateway
# (e.g. a ZeroTier peer). When set, the miner-route compose service keeps the
# host route alive so the watchdog can reach the miner HTTP API. Leave empty
Expand All @@ -151,9 +161,14 @@ BDAG_CHAIN_PEERSTORE_PEER_EXTRACTION_ENABLED=1
BDAG_CHAIN_PEERSTORE_LOG_TAIL=8000
EXTRA_PEER_ADDRESSES=

# When enabled by installer/watchdog for attached ASICs, this must include
# --miner, --miningaddr=<non-zero wallet>, and --maxinbound=1 on constrained
# USB/router hosts. Do not add --allowminingwhennearlysynced or
# Node template generation is enabled for this mining stack. When
# BDAG_NODE_MINING_ARGS is blank, the node entrypoint derives
# --miner --miningaddr=<POOL_COINBASE_ADDRESS|MINING_POOL_ADDRESS> at container
# start. Catch-up repairs may explicitly set BDAG_ENABLE_NODE_MINING=0.
BDAG_ENABLE_NODE_MINING=0
BDAG_NODE_MODULES=Blockdag,miner
# When set explicitly, this must include --miner and
# --miningaddr=<non-zero wallet>. Do not add --allowminingwhennearlysynced or
# --allowsubmitwhennotsynced; template/readiness health must fail closed when
# P2P freshness or sync safety is unavailable.
BDAG_NODE_MINING_ARGS=
Expand All @@ -175,6 +190,7 @@ BDAG_ADAPTIVE_CHAIN_RPC_WARN_MS=1000
BDAG_STATUS_SAMPLER_ENABLED=1
BDAG_STATUS_SAMPLER_INTERVAL_SECONDS=10
BDAG_STATUS_SAMPLER_MAX_AGE_SECONDS=120
BDAG_WATCHDOG_NATIVE_P2P_PEER_LOSS_REPAIR_SECONDS=300
BDAG_CHAIN_STATE_SELF_HEAL_ENABLED=1
BDAG_CHAIN_STATE_SELF_HEAL_UNIT=bdag-chain-state-self-heal.service
BDAG_MINING_IMPERATIVE_CHAIN_STATE_RESTORE_ENABLED=1
Expand All @@ -196,11 +212,12 @@ BDAG_WATCHDOG_EARNINGS_SNAPSHOT_INTERVAL_SECONDS=60
BDAG_STATUS_SAMPLER_EARNINGS_SNAPSHOT_INTERVAL_SECONDS=60
BDAG_DASHBOARD_EARNINGS_SAMPLER_INTERVAL_SECONDS=60
BDAG_DASHBOARD_GLOBAL_SAMPLER_INTERVAL_SECONDS=60
BDAG_EVM_SYNC_BACKOFF_SECONDS=60
BDAG_OPS_UID=1000
BDAG_OPS_GID=1000
BDAG_DOCKER_SOCKET_GID=0
BDAG_GLOBAL_CACHE_TTL_SECONDS=60
BDAG_GLOBAL_RPC_WORKERS=24
BDAG_GLOBAL_RPC_WORKERS=4
BDAG_GLOBAL_BLOCK_WINDOW=600
BDAG_GLOBAL_CACHE_MAX_TIP_LAG_BLOCKS=30
BDAG_INSTALL_REBUILD_DASHBOARD_PLOTS=1
Expand Down Expand Up @@ -424,18 +441,30 @@ MINER_WORKERS=1



# Conservative block-candidate policy for constrained nodes. Keep template
# refresh/recovery slower than the node RPC client ceiling can absorb.
# ASIC block-candidate timing pinned to the best observed production window.
POOL_RPC_ROUTER_NODE_HEALTH_ENABLED=true
POOL_TEMPLATE_TTL_REFRESH_MS=2000
POOL_RPC_ROUTER_EVM_HEAD_GUARD_ENABLED=false
POOL_TEMPLATE_TTL_REFRESH_MS=100
POOL_SUBMIT_STALE_BLOCK_CANDIDATES=false
POOL_MAX_BLOCK_CANDIDATE_JOB_AGE_MS=2500
POOL_RECENT_STALE_BLOCK_CANDIDATE_SUBMIT_GRACE_MS=1750
POOL_MAX_BLOCK_CANDIDATE_JOB_AGE_MS=1750
POOL_BLOCK_TIMING_CONTROLLER_MIN_JOB_AGE_MS=1750
POOL_BLOCK_TIMING_CONTROLLER_MAX_JOB_AGE_MS=1750
POOL_BLOCK_TIMING_CONTROLLER_MIN_TEMPLATE_TTL_MS=100
POOL_BLOCK_TIMING_CONTROLLER_MAX_TEMPLATE_TTL_MS=100
POOL_AUTO_TUNE_BLOCK_CANDIDATE_JOB_AGE=true
POOL_AUTO_TUNE_BLOCK_CANDIDATE_MAX_AGE_MS=8000
POOL_SUBMIT_BLOCK_HEADER_V2_ENABLED=true
POOL_STALE_RACE_REJECT_WINDOW_SECONDS=10
POOL_STALE_RACE_CLIENT_RESEND_THRESHOLD=1
POOL_STALE_RACE_CLIENT_RECONNECT_THRESHOLD=0
POOL_STALE_RACE_RECOVERY_COOLDOWN_SECONDS=5
POOL_EXPIRED_JOB_CLIENT_RECONNECT_THRESHOLD=3
POOL_EXPIRED_JOB_CLIENT_RECONNECT_WINDOW_SECONDS=120
POOL_EXPIRED_JOB_CLIENT_RECONNECT_COOLDOWN_SECONDS=60
POOL_ALLOW_MULTIPLE_BLOCK_CANDIDATES_PER_JOB=true
POOL_PREEMPTIVE_BLOCK_CANDIDATE_REFRESH_ENABLED=true
POOL_PREEMPTIVE_BLOCK_CANDIDATE_CLEAN_REISSUE_ENABLED=false
POOL_PREEMPTIVE_BLOCK_CANDIDATE_REFRESH_DELAY_MS=0
POOL_PREEMPTIVE_BLOCK_CANDIDATE_REFRESH_INTERVAL_MS=20
POOL_PREEMPTIVE_BLOCK_CANDIDATE_REFRESH_TIMEOUT_MS=1000
41 changes: 35 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -291,12 +291,41 @@ is behind peers or while the selected backend is not mineable/submit-ready.
using `iowait`, `io_some`, and `io_full` pressure signals; a production node
more than `BDAG_CATCHUP_PAUSE_THRESHOLD_BLOCKS=300` blocks behind peers is the
backup trigger when pressure signals are missing or delayed.
The status sampler stops the pool, disables node mining/template runtime churn,
raises the node cache toward `BDAG_CATCHUP_NODE_CACHE_MB` within the host memory
budget, and recreates only the node service when that runtime change is needed.
The dashboard reports this as a deliberate catch-up pause, not a pool failure,
and tells operators to leave miners configured until I/O pressure drops, peer lag
is back inside the safe window, and template health is ready.
The status sampler leaves the pool container running for share/session
continuity, pauses pool-side template work, disables node mining/template runtime
churn, and may raise the node cache toward `BDAG_CATCHUP_NODE_CACHE_MB` within
the host memory budget. It must not recreate the node while the pool is live or
accepted-block history exists. The dashboard reports this as a deliberate
catch-up pause, not a pool failure, and tells operators to leave miners
configured until I/O pressure drops, peer lag is back inside the safe window, and
template health is ready.

Native P2P freshness remains the mining hard gate. A zero-peer native P2P sample
blocks new mining work immediately, but `BDAG_WATCHDOG_NATIVE_P2P_PEER_LOSS_REPAIR_SECONDS=300`
prevents the watchdog from restarting the node until peer loss is sustained and
fresh paid-block evidence has expired. Chain-state restore is stricter than
catch-up display state: it requires native peer-lag evidence and ignores
EVM/public-reference lag by itself.

EVM/public-reference lag is advisory only after native mining proof is complete:
`getTemplateHealth` or backend metrics must prove current chain, fresh P2P,
fresh consensus peer floor, peer lead inside the configured safety window,
template readiness, and submit readiness. Unknown peer count or unknown peer
lead fails closed. When miners are connected, zero ready miner lanes keeps
`can_submit_blocks=false` unless fresh paid-block evidence proves the submit
path is already converting work.

Node config edits and service recreates are cold/idle operations. Before the
pool is live, automation may prepare missing node mining/template support only
after native safety gates pass. Once `pool` is running, or once any
accepted-block history exists, automation must not rewrite node
mining/template flags, peer lists, cache settings, or recreate `node`. Recovery
should fail closed by pausing templates, preserving the existing node
identity/data path, and waiting for native `getTemplateHealth` to prove
`chain_current`, `p2p_mining_fresh`, `mineable_now`, and `submit_ready`. If
chain data must be restored, stop the mining path deliberately, quarantine the
old datadir, preserve `network.key`, restore a verified raw datadir or
snapshot, and restart the existing `node` container without a Compose recreate.

Dashboard block height is sourced from chain RPC `getBlockCount`; template
height, logs, and main-order values are shown only as
Expand Down
39 changes: 28 additions & 11 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,20 @@ services:
TMP: /tmp
TEMP: /tmp
BDAG_NETWORK: ${BDAG_NETWORK:-}
P2P_PORT: ${P2P_PORT:-8150}
P2P_PORT: ${P2P_PORT:-8155}
BDAG_EPHEMERAL_DIR: /run/bdag-ephemeral
BDAG_SNAPSHOT_URL: ${BDAG_SNAPSHOT_URL:-}
BDAG_NODE_ARCHIVAL: ${BDAG_NODE_ARCHIVAL:-0}
BDAG_NODE_DEBUG_LEVEL: ${BDAG_NODE_DEBUG_LEVEL:-warn}
BDAG_NODE_NO_FILE_LOGGING: ${BDAG_NODE_NO_FILE_LOGGING:-1}
BDAG_NODE_OBSOLETE_HEIGHT: ${BDAG_NODE_OBSOLETE_HEIGHT:-20}
BDAG_NODE_MINING_NO_PENDING_TX: ${BDAG_NODE_MINING_NO_PENDING_TX:-0}
BDAG_ENABLE_NODE_MINING: ${BDAG_ENABLE_NODE_MINING:-0}
BDAG_NODE_MODULES: ${BDAG_NODE_MODULES:-Blockdag,miner}
BDAG_NODE_MINING_ARGS: ${BDAG_NODE_MINING_ARGS:-}
MINING_POOL_ADDRESS: ${MINING_POOL_ADDRESS:?set MINING_POOL_ADDRESS to a non-zero payout address}
POOL_COINBASE_ADDRESS: ${POOL_COINBASE_ADDRESS:-}
MINING_ADDRESS: ${MINING_ADDRESS:-}
NODE_ARGS_APPEND: ${NODE_ARGS_APPEND:-}
SYNC_SOURCE_NODE: ${SYNC_SOURCE_NODE:-0}
BDAG_STORAGE_PROFILE: ${BDAG_STORAGE_PROFILE:-auto}
Expand All @@ -121,7 +131,7 @@ services:
# so if you want to start fresh, you need to delete the volume explicity.
# `docker compose down && docker volume rm <project>_node-data`\

- ${NODE_DATA_DIR:-node-data}:/var/lib/bdagStack/node
- ${NODE_DATA_DIR:-./data/node}:/var/lib/bdagStack/node
- nodeworker-data:/var/lib/bdagStack/nodeworker
- ${SNAPSHOT_HOST_PATH:-./docker/no-snapshot.marker}:/snapshot/latest.bdsnap:ro
# node.conf in project root (copy from node.conf.example). gitignored.
Expand Down Expand Up @@ -169,24 +179,26 @@ services:
POOL_FEE_PERCENTAGE: ${POOL_FEE_PERCENTAGE:-1.0}
POOL_BLOCK_MATURITY: ${POOL_BLOCK_MATURITY:-10}
POOL_PAYOUT_MATURITY: ${POOL_PAYOUT_MATURITY:-4096}
POOL_PAYOUT_MAX_BLOCKS_PER_TICK: ${POOL_PAYOUT_MAX_BLOCKS_PER_TICK:-5}
POOL_STRATUM_CONNECTION_LOG_INTERVAL_SECONDS: ${POOL_STRATUM_CONNECTION_LOG_INTERVAL_SECONDS:-60}
POOL_RPC_ROUTER_NODE_HEALTH_ENABLED: ${POOL_RPC_ROUTER_NODE_HEALTH_ENABLED:-true}
POOL_RPC_ROUTER_NODE_HEALTH_PROBE_SECONDS: ${POOL_RPC_ROUTER_NODE_HEALTH_PROBE_SECONDS:-15}
POOL_RPC_ROUTER_NODE_HEALTH_MAX_AGE_SECONDS: ${POOL_RPC_ROUTER_NODE_HEALTH_MAX_AGE_SECONDS:-30}
POOL_RPC_ROUTER_NODE_HEALTH_FRESH_TEMPLATE_GRACE_SECONDS: ${POOL_RPC_ROUTER_NODE_HEALTH_FRESH_TEMPLATE_GRACE_SECONDS:-15}
POOL_RPC_ROUTER_NODE_HEALTH_MIN_CONSENSUS_PEERS: ${POOL_RPC_ROUTER_NODE_HEALTH_MIN_CONSENSUS_PEERS:-2}
POOL_RPC_ROUTER_EVM_HEAD_GUARD_ENABLED: ${POOL_RPC_ROUTER_EVM_HEAD_GUARD_ENABLED:-true}
POOL_RPC_ROUTER_EVM_HEAD_GUARD_ENABLED: ${POOL_RPC_ROUTER_EVM_HEAD_GUARD_ENABLED:-false}
POOL_RPC_ROUTER_EVM_HEAD_GUARD_MAX_LAG_BLOCKS: ${POOL_RPC_ROUTER_EVM_HEAD_GUARD_MAX_LAG_BLOCKS:-30}
POOL_RPC_ROUTER_EVM_REFERENCE_URLS: ${POOL_RPC_ROUTER_EVM_REFERENCE_URLS:-https://rpc.blockdag.engineering,https://rpc.bdagscan.com}
POOL_TEMPLATE_TTL_REFRESH_MS: ${POOL_TEMPLATE_TTL_REFRESH_MS:-2000}
POOL_TEMPLATE_TTL_REFRESH_MS: ${POOL_TEMPLATE_TTL_REFRESH_MS:-100}
POOL_SUBMIT_STALE_BLOCK_CANDIDATES: ${POOL_SUBMIT_STALE_BLOCK_CANDIDATES:-false}
POOL_RECENT_STALE_BLOCK_CANDIDATE_SUBMIT_GRACE_MS: ${POOL_RECENT_STALE_BLOCK_CANDIDATE_SUBMIT_GRACE_MS:-250}
POOL_MAX_BLOCK_CANDIDATE_JOB_AGE_MS: ${POOL_MAX_BLOCK_CANDIDATE_JOB_AGE_MS:-2500}
POOL_RECENT_STALE_BLOCK_CANDIDATE_SUBMIT_GRACE_MS: ${POOL_RECENT_STALE_BLOCK_CANDIDATE_SUBMIT_GRACE_MS:-1750}
POOL_MAX_BLOCK_CANDIDATE_JOB_AGE_MS: ${POOL_MAX_BLOCK_CANDIDATE_JOB_AGE_MS:-1750}
POOL_AUTO_TUNE_BLOCK_CANDIDATE_JOB_AGE: ${POOL_AUTO_TUNE_BLOCK_CANDIDATE_JOB_AGE:-true}
POOL_AUTO_TUNE_BLOCK_CANDIDATE_MAX_AGE_MS: ${POOL_AUTO_TUNE_BLOCK_CANDIDATE_MAX_AGE_MS:-8000}
POOL_SUBMIT_BLOCK_HEADER_V2_ENABLED: ${POOL_SUBMIT_BLOCK_HEADER_V2_ENABLED:-true}
POOL_STALE_RACE_REJECT_WINDOW_SECONDS: ${POOL_STALE_RACE_REJECT_WINDOW_SECONDS:-10}
POOL_STALE_RACE_CLIENT_RESEND_THRESHOLD: ${POOL_STALE_RACE_CLIENT_RESEND_THRESHOLD:-1}
POOL_STALE_RACE_CLIENT_RECONNECT_THRESHOLD: ${POOL_STALE_RACE_CLIENT_RECONNECT_THRESHOLD:-2}
POOL_STALE_RACE_CLIENT_RECONNECT_THRESHOLD: ${POOL_STALE_RACE_CLIENT_RECONNECT_THRESHOLD:-0}
POOL_STALE_RACE_CLIENT_RECONNECT_WINDOW_SECONDS: ${POOL_STALE_RACE_CLIENT_RECONNECT_WINDOW_SECONDS:-120}
POOL_STALE_RACE_CLIENT_RECONNECT_COOLDOWN_SECONDS: ${POOL_STALE_RACE_CLIENT_RECONNECT_COOLDOWN_SECONDS:-60}
POOL_STALE_RACE_RECOVERY_COOLDOWN_SECONDS: ${POOL_STALE_RACE_RECOVERY_COOLDOWN_SECONDS:-5}
Expand All @@ -203,10 +215,10 @@ services:
POOL_BLOCK_TIMING_CONTROLLER_WINDOW_SECONDS: ${POOL_BLOCK_TIMING_CONTROLLER_WINDOW_SECONDS:-60}
POOL_BLOCK_TIMING_CONTROLLER_MIN_CANDIDATES: ${POOL_BLOCK_TIMING_CONTROLLER_MIN_CANDIDATES:-20}
POOL_BLOCK_TIMING_CONTROLLER_TARGET_WASTE_PERCENT: ${POOL_BLOCK_TIMING_CONTROLLER_TARGET_WASTE_PERCENT:-5}
POOL_BLOCK_TIMING_CONTROLLER_MIN_JOB_AGE_MS: ${POOL_BLOCK_TIMING_CONTROLLER_MIN_JOB_AGE_MS:-250}
POOL_BLOCK_TIMING_CONTROLLER_MAX_JOB_AGE_MS: ${POOL_BLOCK_TIMING_CONTROLLER_MAX_JOB_AGE_MS:-2500}
POOL_BLOCK_TIMING_CONTROLLER_MIN_JOB_AGE_MS: ${POOL_BLOCK_TIMING_CONTROLLER_MIN_JOB_AGE_MS:-1750}
POOL_BLOCK_TIMING_CONTROLLER_MAX_JOB_AGE_MS: ${POOL_BLOCK_TIMING_CONTROLLER_MAX_JOB_AGE_MS:-1750}
POOL_BLOCK_TIMING_CONTROLLER_MIN_TEMPLATE_TTL_MS: ${POOL_BLOCK_TIMING_CONTROLLER_MIN_TEMPLATE_TTL_MS:-100}
POOL_BLOCK_TIMING_CONTROLLER_MAX_TEMPLATE_TTL_MS: ${POOL_BLOCK_TIMING_CONTROLLER_MAX_TEMPLATE_TTL_MS:-1000}
POOL_BLOCK_TIMING_CONTROLLER_MAX_TEMPLATE_TTL_MS: ${POOL_BLOCK_TIMING_CONTROLLER_MAX_TEMPLATE_TTL_MS:-100}
POOL_BLOCK_TIMING_CONTROLLER_STEP_MS: ${POOL_BLOCK_TIMING_CONTROLLER_STEP_MS:-250}
POOL_BLOCK_TIMING_CONTROLLER_COOLDOWN_SECONDS: ${POOL_BLOCK_TIMING_CONTROLLER_COOLDOWN_SECONDS:-20}
BDAG_ASIC_LAN_CIDRS: ${BDAG_ASIC_LAN_CIDRS:-}
Expand Down Expand Up @@ -272,6 +284,7 @@ services:
NODE_RPC_USER: ${NODE_RPC_USER:-test}
NODE_RPC_PASS: ${NODE_RPC_PASS:-test}
BDAG_WATCHDOG_INTERVAL: ${BDAG_WATCHDOG_INTERVAL:-60}
BDAG_WATCHDOG_NATIVE_P2P_PEER_LOSS_REPAIR_SECONDS: ${BDAG_WATCHDOG_NATIVE_P2P_PEER_LOSS_REPAIR_SECONDS:-300}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${BDAG_STACK_HOST_ROOT:-${PWD}}:${BDAG_STACK_HOST_ROOT:-${PWD}}
Expand Down Expand Up @@ -431,6 +444,7 @@ services:
- /run/dashboard-redis:size=16m,mode=0700
volumes:
- dashboard-redis:/var/lib/dashboard-redis
- ${BDAG_HOST_ARP_TABLE_PATH:-/proc/net/arp}:/host/proc/net/arp:ro
depends_on:
node: { condition: service_started }
pool: { condition: service_started }
Expand All @@ -451,12 +465,13 @@ services:
BDAG_REDIS_MAXMEMORY_POLICY: ${BDAG_REDIS_MAXMEMORY_POLICY:-noeviction}
BDAG_EVM_HTTP_URL: ${BDAG_EVM_HTTP_URL:-http://host.docker.internal:18545}
BDAG_EVM_WS_URL: ${BDAG_EVM_WS_URL:-ws://host.docker.internal:18546}
BDAG_EVM_SYNC_BACKOFF_SECONDS: ${BDAG_EVM_SYNC_BACKOFF_SECONDS:-60}
BDAG_POOL_METRICS_URL: ${BDAG_POOL_METRICS_URL:-http://host.docker.internal:9090/metrics}
BDAG_NODE_RPC_URL: ${BDAG_NODE_RPC_URL:-http://host.docker.internal:38131}
BDAG_GLOBAL_BLOCK_WINDOW: ${BDAG_GLOBAL_BLOCK_WINDOW:-600}
BDAG_GLOBAL_CACHE_MAX_TIP_LAG_BLOCKS: ${BDAG_GLOBAL_CACHE_MAX_TIP_LAG_BLOCKS:-30}
BDAG_GLOBAL_FAST_WARMUP_BLOCKS: ${BDAG_GLOBAL_FAST_WARMUP_BLOCKS:-120}
BDAG_GLOBAL_RPC_WORKERS: ${BDAG_GLOBAL_RPC_WORKERS:-24}
BDAG_GLOBAL_RPC_WORKERS: ${BDAG_GLOBAL_RPC_WORKERS:-4}
BDAG_GLOBAL_SETTLE_DELAY_SECONDS: ${BDAG_GLOBAL_SETTLE_DELAY_SECONDS:-5}
BDAG_GLOBAL_MAX_INCREMENTAL_GAP: ${BDAG_GLOBAL_MAX_INCREMENTAL_GAP:-120}
BDAG_GLOBAL_RPC_CHUNK_SIZE: ${BDAG_GLOBAL_RPC_CHUNK_SIZE:-64}
Expand All @@ -478,7 +493,9 @@ services:
DASHBOARD_TIMEZONE: ${DASHBOARD_TIMEZONE:-Africa/Johannesburg}
BDAG_MINER_CONTROL_ENABLED: ${BDAG_MINER_CONTROL_ENABLED:-1}
BDAG_ASIC_LAN_CIDRS: ${BDAG_ASIC_LAN_CIDRS:-}
POOL_ASIC_ARP_TABLE_PATH: ${POOL_ASIC_ARP_TABLE_PATH:-/host/proc/net/arp}
POOL_ASIC_MAC_OVERRIDES: ${POOL_ASIC_MAC_OVERRIDES:-}
POOL_ASIC_MAC_ALLOWLIST: ${POOL_ASIC_MAC_ALLOWLIST:-}
BDAG_POOL_URL: ${BDAG_POOL_URL:-}
MINING_POOL_ADDRESS: ${MINING_POOL_ADDRESS:?set MINING_POOL_ADDRESS to a non-zero payout address}
POOL_COINBASE_ADDRESS: ${POOL_COINBASE_ADDRESS:-}
Expand Down
Loading
Loading