-
Notifications
You must be signed in to change notification settings - Fork 160
Expand file tree
/
Copy pathquip.network.qpu.example.toml
More file actions
114 lines (104 loc) · 5.5 KB
/
Copy pathquip.network.qpu.example.toml
File metadata and controls
114 lines (104 loc) · 5.5 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
# quip-miner qpu — v0.2 example config
#
# quip-miner qpu --config ./quip.network.qpu.example.toml
#
# Quantum-annealer / gate-model providers. Credentials come from
# environment variables (e.g. DWAVE_API_KEY) — never store them in
# this file. Passing `--qpu-type` or `--daily-budget` on the command
# line when any vendor section below is set raises `config-conflict`;
# pick one source for the inventory.
[miner]
validators = [
"ws://quip-validator:9944",
]
signer_key = "~/.quip-miner/signing.json"
# On the public testnet the miner defaults to the canonical faucet when
# faucet_url is unset; set it only to override (e.g. a local dev faucet).
# faucet_url = "https://faucet.testnet.quip.network"
# Optional telemetry REST API. Off by default (rest_port=-1).
# rest_port = 8086
# rest_host = "127.0.0.1"
# ── Proof submission ──────────────────────────────────────────────────
# Tuning for the submit_proof extrinsic. The chain awards the round to the
# lowest-energy proof *within a block*, so the race is about landing in the
# right block, not broadcasting first.
[submission]
# Transaction tip in plancks (the chain's base unit). A non-zero tip raises
# the extrinsic's transaction-pool priority so a busy block includes our
# proof ahead of un-tipped traffic. Default 0 = no tip (unchanged wire
# bytes). Set a small tip only if you observe proofs missing inclusion.
tip_plancks = 0
# Resilient submit retry (used by the anticipatory fire loop). max_retries
# is the number of *additional* attempts after the first; retry_backoff_ms
# is the per-attempt linear backoff. Transient drops, InsufficientEnergy
# (fired a hair early), and ProofLimitReached (block full) are retried; a
# round advancing (InvalidNonce) or a bad candidate stops the loop.
max_retries = 3
retry_backoff_ms = 250
# ── D-Wave annealer ───────────────────────────────────────────────────
# QPU access-time budget (per UTC day) is the main knob — it sets the rate
# at which the budget reservoir accrues (daily_budget / 86400 per second).
# The miner banks unused budget into the reservoir and pauses until it has
# `min_block_budget` of QPU runway accrued, then bursts until the pool
# drains to 0 (accumulate-then-burst, to amortize D-Wave queue warmup).
# `solver` (the active solver, e.g. Advantage2_system1) and `region` (the
# D-Wave region NAME, e.g. na-west-1 — NOT a SAPI URL) are passed to the
# D-Wave SDK to select the sampler; `solver` is also surfaced to dashboards.
# EMA + min-blocks tune the pacing estimator inside QPUTimeManager.
# Unrecognized [dwave] keys (e.g. a typo) are logged at WARNING, not silently
# ignored.
[dwave]
daily_budget = "30m"
# min_block_budget: QPU runway (access seconds) that must accrue before a
# burst starts. Mining then continues until the pool drains to 0. Two
# constraints, each fires a startup warning if violated:
# - must be <= budget_cap, else the pool caps below the threshold and a
# burst can NEVER start (the pool plateaus forever);
# - should be < daily_budget, else the reservoir fills only across multiple
# days before the first burst.
# Default "90s".
min_block_budget = "90s"
# budget_cap: max banked pool size. Bounds a post-downtime catch-up burst.
# MUST be >= min_block_budget (see above). Defaults to
# max(daily_budget, min_block_budget) when unset, which always satisfies that.
# budget_cap = "30m"
# qpu_initial_budget: reservoir balance seeded on process start, so a fresh
# miner mines without waiting hours-to-days to accrue the buffer. Keywords:
# "min" (one buffer — the default, bursts once on boot then re-accrues),
# "daily" (a full day's budget), "cap" (fill the pool cap), or an explicit
# duration like "10m". This is a per-process grant, not persisted accounting:
# frequent restarts re-grant it, so prefer "min" unless overspend is fine.
# qpu_initial_budget = "min"
# solver = "Advantage2_system1"
# region = "na-west-1" # D-Wave region NAME, not a URL
# qpu_min_blocks_for_estimation = 5
# qpu_ema_alpha = 0.3
# Per-submission cost knobs. Defaults (112 reads, 80us anneal) are the
# throughput-tuned values from the 2026-05 QPU time-to-solution study
# (qpu_tts_test/): the QPU-TTS optimum, ~5x faster than the older
# 512x120 quality-tuned setting. p_success plateaus above ~96-128
# reads, so higher values mostly add QPU access time. Operators tuning
# for solution *quality* rather than throughput can raise these; see
# the canary's --mode sweep output (tools/qpu_throughput_canary.py)
# for the normalized time-to-solution at each grid point.
# num_reads = 112
# annealing_time_us = 80.0
# ── Gate-model providers ──────────────────────────────────────────────
# Uncomment one. `token` is conventionally an environment-variable
# reference; do not paste secrets into this file. `daily_budget` caps
# wall-clock access per UTC day same as the D-Wave section.
# [ibm]
# token = "..."
# daily_budget = "5m"
# [braket]
# token = "..."
# daily_budget = "5m"
# [pasqal]
# token = "..."
# daily_budget = "5m"
# [ionq]
# token = "..."
# daily_budget = "5m"
# [origin]
# token = "..."
# daily_budget = "5m"