-
Notifications
You must be signed in to change notification settings - Fork 76
Expand file tree
/
Copy path.env.example
More file actions
168 lines (153 loc) · 10.6 KB
/
Copy path.env.example
File metadata and controls
168 lines (153 loc) · 10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# cp .env.example .env — docker compose won't start without .env; the neurons and `alw` read it too.
# Identity & network + Solana = all roles · Bitcoin = BTC-pair miners · then role-specific sections.
# Quote a value only if it contains spaces or '#'.
# ─── Identity & network (all roles) ────────────────────────
NETUID=7 # 7 mainnet | 19 testnet
WALLET_NAME=default # your btcli names (`btcli w list`)
HOTKEY_NAME=default
WALLET_PATH=~/.bittensor/wallets
SUBTENSOR_NETWORK=finney # finney | test | local | ws://host:9944 (validators: local lite node)
PORT=8091
LOG_LEVEL=info
# Rotating log file data/allways/bittensor.log (survives container rebuilds): size per file, files kept.
LOG_FILE_MAX_MB=10
LOG_FILE_BACKUPS=4
# OPTIONAL loopback-bind axon behind a reverse proxy; unset = public
# AXON_PUBLISH=127.0.0.1:9000
# ─── Contract ──────────────────────────────────────────────
# OPTIONAL dev override; must match the deployed program (mismatch = accounts read absent)
# ALLWAYS_PROGRAM_ID=
# ─── Chain: Solana (all roles; SOL + solusdc legs) ──────────
# keyed/paid recommended; unset = http://127.0.0.1:8899
SOLANA_RPC_URL=
# OPTIONAL keyed-provider key, composed onto the URL (api-key param)
# SOLANA_RPC_API_KEY=
# OPTIONAL miner/admin signer; unset = `alw config` value, then ~/.solana/id.json
# SOLANA_KEYPAIR_PATH=
# OPTIONAL USDC mint override (localnet/e2e fakes) — unset = Circle's mint for the cluster the RPC
# serves (mainnet-beta or devnet, by genesis hash); solusdc is unavailable on any other cluster
# SOLUSDC_TOKEN_MINT=
# ─── Chain: Bitcoin (BTC pairs) ────────────────────────────
BTC_NETWORK=mainnet # mainnet | testnet | testnet4
# OPTIONAL ordered esplora endpoints; unset = public (blockstream, mempool.space). Entry forms:
# URL anonymous
# URL|API_KEY static key via BTC_ESPLORA_API_KEY_HEADER ("Authorization" adds Bearer)
# URL|oauth:CLIENT_ID:CLIENT_SECRET Blockstream Explorer API (5-min tokens, auto-refreshed)
# BTC_ESPLORA_API_KEY_HEADER=Authorization
# BTC_ESPLORA_URLS=https://enterprise.blockstream.info/api|oauth:CLIENT_ID:CLIENT_SECRET,https://mempool.space/api
# WIF — required for miners; optional local signing for `alw swap`
BTC_PRIVATE_KEY=
# ─── Network: Ethereum (ETH + ethusdc + uni + qnt + paxg pairs) ─────
# Vars are per NETWORK, shared by every asset on it — the tokens add no network vars of their own.
ETH_NETWORK=mainnet # mainnet | sepolia
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (publicnode, drpc)
# ETH_RPC_URLS=https://mainnet.infura.io/v3/your_key,https://ethereum-rpc.publicnode.com
# 32-byte hex key — required for miners (fund ETH for the ETH legs, and the token + ETH-for-gas
# for each token leg); optional local signing for `alw swap`
ETH_PRIVATE_KEY=
# OPTIONAL token contract overrides (dev/e2e fakes) — per ASSET, unset = the canonical deployment
# ETHUSDC_TOKEN_CONTRACT=
# UNI_TOKEN_CONTRACT=
# QNT_TOKEN_CONTRACT=
# PAX Gold rides the same ETH_* config. REQUIRED on testnet — Paxos publishes no Sepolia PAXG.
# PAXG_TOKEN_CONTRACT=
# ─── Network: Arbitrum (arbusdc pairs) ─────────────────────
# Vars are per NETWORK, shared by every asset on it (ARB_ here, not ARBUSDC_).
ARB_NETWORK=mainnet # mainnet | sepolia (Arbitrum Sepolia)
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (publicnode, drpc)
# ARB_RPC_URLS=https://api-arbitrum-mainnet-archive.n.dwellir.com/your_key,https://arbitrum-one-rpc.publicnode.com
# 32-byte hex key — required for miners (fund USDC for legs + ETH-on-Arbitrum for gas);
# optional local signing for `alw swap`
ARB_PRIVATE_KEY=
# OPTIONAL token contract override (dev/e2e fakes) — per ASSET, unset = Circle's canonical deployment
# ARBUSDC_TOKEN_CONTRACT=
# ─── Chain: Hyperliquid (HYPE pairs) ───────────────────────
HYPE_NETWORK=mainnet # mainnet | testnet
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (rpc.hyperliquid.xyz, drpc) — those are capped at 100 req/min per IP
# HYPE_RPC_URLS=https://api-hyperliquid-mainnet-evm.n.dwellir.com/your_key,https://rpc.hyperliquid.xyz/evm
# 32-byte hex key — required for miners; optional local signing for `alw swap`
HYPE_PRIVATE_KEY=
# ─── Network: BNB Smart Chain (BNB + aster pairs) ──────────
# Vars are per NETWORK, shared by every asset on it — aster adds no network vars of its own.
BNB_NETWORK=mainnet # mainnet | testnet (Chapel)
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (publicnode, the official bnbchain data seed)
# BNB_RPC_URLS=https://bsc-mainnet.infura.io/v3/your_key,https://bsc-rpc.publicnode.com
# 32-byte hex key — required for miners (fund BNB for the BNB legs, ASTER + BNB-for-gas for
# the aster legs); optional local signing for `alw swap`
BNB_PRIVATE_KEY=
# OPTIONAL token contract override (dev/e2e fakes) — per ASSET, unset = the issuer's canonical deployment
# ASTER_TOKEN_CONTRACT=
# ─── Chain: Avalanche C-Chain (AVAX pairs) ─────────────────
AVAX_NETWORK=mainnet # mainnet | fuji
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (Ava Labs' gateway, publicnode, drpc); the gateway leads as the only archive rung
# AVAX_RPC_URLS=https://avalanche-mainnet.infura.io/v3/your_key,https://api.avax.network/ext/bc/C/rpc
# 32-byte hex key — required for miners; optional local signing for `alw swap`
AVAX_PRIVATE_KEY=
# ─── Network: Base (baseusdc pairs) ────────────────────────
# Vars are per NETWORK, shared by every asset on it (BASE_ here, not BASEUSDC_).
BASE_NETWORK=mainnet # mainnet | sepolia (Base Sepolia)
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (mainnet.base.org, drpc) — the public gateways rate-limit under load, so
# prefer a keyed primary. NOT publicnode: its free Base endpoint 403s every receipt read.
# BASE_RPC_URLS=https://base-mainnet.g.alchemy.com/v2/your_key,https://base.drpc.org
# 32-byte hex key — required for miners (fund USDC for legs + ETH-on-Base for gas);
# optional local signing for `alw swap`
BASE_PRIVATE_KEY=
# OPTIONAL token contract override (dev/e2e fakes) — per ASSET, unset = Circle's canonical deployment
# BASEUSDC_TOKEN_CONTRACT=
# ─── Network: Polygon PoS (pol, polusdc pairs) ─────────────
# Vars are per NETWORK, shared by every asset on it (POL_ here, not POLUSDC_).
POL_NETWORK=mainnet # mainnet | amoy
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (drpc, publicnode); drpc leads as the only rung serving archive state reads
# POL_RPC_URLS=https://polygon-mainnet.infura.io/v3/your_key,https://polygon-bor-rpc.publicnode.com
# 32-byte hex key — required for miners (fund POL for the POL legs, USDC + POL-for-gas for
# the polusdc legs); optional local signing for `alw swap`
POL_PRIVATE_KEY=
# OPTIONAL token contract override (dev/e2e fakes) — per ASSET, unset = Circle's canonical deployment
# POLUSDC_TOKEN_CONTRACT=
# ─── Chain: Cronos (CRO pairs) ─────────────────────────────
CRO_NETWORK=mainnet # mainnet | testnet
# OPTIONAL ordered JSON-RPC endpoints (keyed providers embed the key in the URL);
# unset = public (the official Cronos gateway, publicnode); the gateway leads as the only
# mainnet rung serving the historical state the slash gate reads
# CRO_RPC_URLS=https://cronos-mainnet.g.alchemy.com/v2/your_key,https://evm.cronos.org
# 32-byte hex key — required for miners; optional local signing for `alw swap`
CRO_PRIVATE_KEY=
# ─── Miner-only ────────────────────────────────────────────
# headless miners: unlocks the coldkey at startup for TAO sends; unset = prompt at launch
MINER_BITTENSOR_COLDKEY_PASSWORD=
# ─── Validator-only ────────────────────────────────────────
# watch (observe-only) | vote (no weights) | full (votes + weights, default)
# VALIDATOR_MODE=full
# ─── Validator: TAO bond vault + relay (TAO-backed pairs) ──
# The ink! bond vault on subtensor. ADDRESS is required to relay TAO bonds (or `alw config set
# vault-address`); METADATA and SURI are optional overrides.
# ALLWAYS_VAULT_ADDRESS= # deployed vault contract ss58
# ALLWAYS_VAULT_METADATA= # path to the vault ink! metadata JSON; unset = built-in
# ALLWAYS_VAULT_SURI= # vault-call signer; unset = the wallet HOTKEY (vault keys by hotkey)
# Relay cadence — all OPTIONAL (defaults shown); the relay loop runs inside the validator forward pass.
# ALLWAYS_RELAY_HEARTBEAT_SECS=43200 # 12h — bump the global attestation heartbeat (dead-man fuse liveness)
# ALLWAYS_RELAY_FEE_CADENCE_SECS=172800 # 2d — fee true-up batch boundary
# ALLWAYS_RELAY_RECONCILE_SECS=900 # 15m — slow vault↔attestation reconcile loop
# ALLWAYS_RELAY_QUIESCENCE_GRACE_SECS=60 # grace before an exit counts quiesced (gates vote_unlock)
# ALLWAYS_RELAY_VOTE_RETRY_SECS=1800 # vote-round retry throttle (= round TTL)
# ALLWAYS_RELAY_MAX_WRITES=8 # max relay writes per forward-pass tick
# ─── Validator: Weights & Biases ───────────────────────────
# unset = offline (./wandb/); --neuron.wandb_off disables
WANDB_API_KEY=
WANDB_ENTITY=entrius-gittensor
WANDB_PROJECT=allways-validators
WANDB_VALIDATOR_NAME=vali
# ── Offering seam (opt-in; leave unset unless this validator fronts a product offering) ──
# Localhost HTTP the offering's own backend calls to reserve/confirm on behalf of its users.
# Off unless ALLWAYS_SEAM_SECRET is set. Containerized validators also set ALLWAYS_SEAM_HOST=0.0.0.0
# and share a docker network with the offering — publish no port; the secret gates every route.
# ALLWAYS_SEAM_SECRET=
# ALLWAYS_SEAM_PORT=8710
# ALLWAYS_SEAM_HOST=127.0.0.1