/ testnet / config / devnet-3node.toml
devnet-3node.toml
  1  # ADNet Devnet Configuration - 3-Node Local Network
  2  # ==================================================
  3  # Lightweight local development configuration for a 3-node network.
  4  # Useful for testing consensus, network partitions, and multi-validator scenarios.
  5  # Designed to run on developer laptops (4 cores, 16GB RAM).
  6  #
  7  # Quick Start:
  8  #   ./scripts/start-devnet.sh --nodes 3
  9  #
 10  # This configuration is a template. Each node needs its own port assignments.
 11  # The start script generates node-specific configs from this template.
 12  #
 13  # Features:
 14  #   - Fast block times (Alpha: 2s, Delta: 500ms)
 15  #   - In-memory storage (fast, no disk cleanup needed)
 16  #   - Pre-funded test accounts
 17  #   - 3 validators for realistic consensus testing
 18  #   - All ports on localhost with offsets per node
 19  
 20  # Chain operation mode
 21  chain_mode = "dual"
 22  
 23  # =============================================================================
 24  # Node Configuration Template
 25  # =============================================================================
 26  # Port assignments per node:
 27  #   Node 0: P2P=30303, Alpha RPC=3030, Delta RPC=3031, WS=3032, API=8080, Metrics=9100
 28  #   Node 1: P2P=30313, Alpha RPC=3040, Delta RPC=3041, WS=3042, API=8081, Metrics=9101
 29  #   Node 2: P2P=30323, Alpha RPC=3050, Delta RPC=3051, WS=3052, API=8082, Metrics=9102
 30  
 31  [node]
 32  # Node identifier (replaced per node: devnet-node-0, devnet-node-1, devnet-node-2)
 33  node_id = "devnet-node-${NODE_INDEX}"
 34  # Keypair path (per node)
 35  keypair_path = "/tmp/adnet-devnet-3node/node-${NODE_INDEX}/keys/node.json"
 36  # Data directory (per node)
 37  data_dir = "/tmp/adnet-devnet-3node/node-${NODE_INDEX}/data"
 38  # All nodes are validators
 39  node_type = "validator"
 40  # Development mode enabled
 41  dev_mode = true
 42  # Skip signature verification for faster testing
 43  skip_verification = true
 44  
 45  [network]
 46  # P2P listen address (port varies per node)
 47  listen_addr = "127.0.0.1:${P2P_PORT}"
 48  # Bootstrap peers (all nodes discover each other)
 49  bootstrap_peers = [
 50      "/ip4/127.0.0.1/tcp/30303/p2p/devnet-node-0",
 51      "/ip4/127.0.0.1/tcp/30313/p2p/devnet-node-1",
 52      "/ip4/127.0.0.1/tcp/30323/p2p/devnet-node-2",
 53  ]
 54  # Minimal peers
 55  max_peers = 10
 56  # Enable mDNS for local peer discovery
 57  mdns_enabled = true
 58  # No external IP needed
 59  external_ip = ""
 60  
 61  # =============================================================================
 62  # ALPHA Chain Configuration (2s blocks for fast iteration)
 63  # =============================================================================
 64  
 65  [alpha]
 66  # Fast block time for development (2 seconds)
 67  block_time_ms = 2000
 68  # RPC server port (varies per node)
 69  rpc_port = "${ALPHA_RPC_PORT}"
 70  # Enable RPC server
 71  rpc_enabled = true
 72  # Smaller batches for dev
 73  max_txs_per_block = 100
 74  
 75  [alpha.consensus]
 76  # BFT settings for 3 validators
 77  gc_depth = 10
 78  batch_size = 100
 79  max_batch_delay_ms = 50
 80  # Minimum 2 validators for consensus (allows 1 failure)
 81  min_validators = 2
 82  # BFT requires 2f+1 for 3 nodes
 83  max_validators = 3
 84  
 85  [alpha.storage]
 86  # In-memory storage for fast dev cycles
 87  backend = "memory"
 88  # Cache size (small for dev)
 89  cache_size_mb = 128
 90  
 91  [alpha.genesis]
 92  # Devnet network identifier
 93  network_id = "alpha-devnet-3node"
 94  name = "ALPHA Devnet (3-node)"
 95  # Genesis timestamp
 96  timestamp = "2026-01-15T00:00:00Z"
 97  
 98  # Initial validators (3 nodes)
 99  [[alpha.genesis.validators]]
100  name = "devnet-validator-0"
101  address = "alpha1validator0devnet00000000000000000000"
102  stake = 1_000_000_000_000_000
103  commission_percent = 0
104  
105  [[alpha.genesis.validators]]
106  name = "devnet-validator-1"
107  address = "alpha1validator1devnet00000000000000000000"
108  stake = 1_000_000_000_000_000
109  commission_percent = 0
110  
111  [[alpha.genesis.validators]]
112  name = "devnet-validator-2"
113  address = "alpha1validator2devnet00000000000000000000"
114  stake = 1_000_000_000_000_000
115  commission_percent = 0
116  
117  # Pre-funded test accounts (1M credits each)
118  [[alpha.genesis.accounts]]
119  name = "alice"
120  address = "alpha1alice0000000000000000000000000000000000"
121  balance = 1_000_000_000_000_000
122  private_key = "devnet-alice-key-do-not-use-in-production"
123  
124  [[alpha.genesis.accounts]]
125  name = "bob"
126  address = "alpha1bob00000000000000000000000000000000000"
127  balance = 1_000_000_000_000_000
128  private_key = "devnet-bob-key-do-not-use-in-production"
129  
130  [[alpha.genesis.accounts]]
131  name = "charlie"
132  address = "alpha1charlie000000000000000000000000000000"
133  balance = 1_000_000_000_000_000
134  private_key = "devnet-charlie-key-do-not-use-in-production"
135  
136  [[alpha.genesis.accounts]]
137  name = "faucet"
138  address = "alpha1faucet0000000000000000000000000000000"
139  balance = 100_000_000_000_000_000
140  
141  # =============================================================================
142  # DELTA Chain Configuration (500ms blocks for DEX testing)
143  # =============================================================================
144  
145  [delta]
146  # Very fast block time for DEX testing (500ms)
147  block_time_ms = 500
148  # RPC server port (varies per node)
149  rpc_port = "${DELTA_RPC_PORT}"
150  # Enable RPC server
151  rpc_enabled = true
152  # Smaller batches for dev
153  max_txs_per_block = 1000
154  # Enable DEX
155  dex_enabled = true
156  # WebSocket port (varies per node)
157  websocket_port = "${WS_PORT}"
158  
159  [delta.consensus]
160  # BFT settings for 3 validators
161  gc_depth = 10
162  batch_size = 500
163  max_batch_delay_ms = 25
164  # Minimum 2 validators for consensus
165  min_validators = 2
166  max_validators = 3
167  
168  [delta.storage]
169  # In-memory storage for fast dev cycles
170  backend = "memory"
171  # Cache size (small for dev)
172  cache_size_mb = 256
173  
174  [delta.genesis]
175  # Devnet network identifier
176  network_id = "delta-devnet-3node"
177  name = "DELTA Devnet (3-node)"
178  # Genesis timestamp (matches ALPHA)
179  timestamp = "2026-01-15T00:00:00Z"
180  
181  # Initial validators (matches ALPHA)
182  [[delta.genesis.validators]]
183  name = "devnet-validator-0"
184  address = "delta1validator0devnet00000000000000000000"
185  stake = 1_000_000_000_000_000
186  commission_percent = 0
187  
188  [[delta.genesis.validators]]
189  name = "devnet-validator-1"
190  address = "delta1validator1devnet00000000000000000000"
191  stake = 1_000_000_000_000_000
192  commission_percent = 0
193  
194  [[delta.genesis.validators]]
195  name = "devnet-validator-2"
196  address = "delta1validator2devnet00000000000000000000"
197  stake = 1_000_000_000_000_000
198  commission_percent = 0
199  
200  # Pre-funded test accounts with sAX and synthetic assets
201  [[delta.genesis.accounts]]
202  name = "alice"
203  address = "delta1alice0000000000000000000000000000000000"
204  sax_balance = 1_000_000_000_000_000
205  btc_balance = 10_000_000_000
206  eth_balance = 100_000_000_000_000_000
207  
208  [[delta.genesis.accounts]]
209  name = "bob"
210  address = "delta1bob00000000000000000000000000000000000"
211  sax_balance = 1_000_000_000_000_000
212  btc_balance = 10_000_000_000
213  eth_balance = 100_000_000_000_000_000
214  
215  [[delta.genesis.accounts]]
216  name = "charlie"
217  address = "delta1charlie000000000000000000000000000000"
218  sax_balance = 1_000_000_000_000_000
219  btc_balance = 10_000_000_000
220  eth_balance = 100_000_000_000_000_000
221  
222  # Initial DEX markets for testing
223  [[delta.genesis.markets]]
224  base = "BTC"
225  quote = "sAX"
226  min_order_size = 1000
227  price_precision = 8
228  quantity_precision = 8
229  maker_fee_bps = 0
230  taker_fee_bps = 0
231  enabled = true
232  
233  [[delta.genesis.markets]]
234  base = "ETH"
235  quote = "sAX"
236  min_order_size = 10000
237  price_precision = 8
238  quantity_precision = 8
239  maker_fee_bps = 0
240  taker_fee_bps = 0
241  enabled = true
242  
243  [delta.dex]
244  max_orders_per_block = 1000
245  default_order_expiry = 0
246  max_open_orders_per_account = 10000
247  circuit_breaker_enabled = false
248  
249  # =============================================================================
250  # IPC Configuration
251  # =============================================================================
252  
253  [ipc]
254  enabled = true
255  socket_path = "/tmp/adnet-devnet-3node/node-${NODE_INDEX}/ipc.sock"
256  queue_size = 1000
257  timeout_ms = 5000
258  
259  # =============================================================================
260  # API Configuration
261  # =============================================================================
262  
263  [api]
264  enabled = true
265  port = "${API_PORT}"
266  cors_origins = ["*"]
267  rate_limit = 0
268  swagger_enabled = true
269  
270  # =============================================================================
271  # Metrics Configuration
272  # =============================================================================
273  
274  [metrics]
275  enabled = true
276  port = "${METRICS_PORT}"
277  path = "/metrics"
278  labels = { network = "devnet", mode = "3-node", node = "${NODE_INDEX}" }
279  
280  # =============================================================================
281  # Logging Configuration
282  # =============================================================================
283  
284  [logging]
285  level = "debug"
286  format = "text"
287  file = ""
288  
289  # =============================================================================
290  # Telemetry (disabled for devnet)
291  # =============================================================================
292  
293  [telemetry]
294  enabled = false
295  
296  # =============================================================================
297  # Validator Configuration
298  # =============================================================================
299  
300  [validator]
301  withdrawal_address = "alpha1devnet-validator-${NODE_INDEX}00000000000"
302  commission_percent = 0
303  auto_key_rotation = false