quip-solver README

The project's README from github.com/QuipNetwork/quip-solver. As one markdown file: README.md.

quip-protocol

Experimental software. Use at your own risk. No production warranties.

The v0.3 mining stack for the quip-protocol-rs Substrate chain. A coordinator follows the chain head and stages Ising problems for the miner subprocesses; when a solution clears the difficulty gate, the coordinator submits a QuantumPow.submit_proof extrinsic. The miners run simulated annealing and Gibbs sampling on CPU, CUDA, and Metal, and quantum annealing on D-Wave hardware.

This is a Rust workspace. The coordinator and the chain integration are Rust. The solver contract — the wire protocol, the consensus primitives, and the shared solver harness — lives in quip-solver-core and is consumed from crates.io. The miner binaries ship from their own repositories.

Repository layout

The miner binaries live in quip.network/quip-miner-{cpu,cuda,metal,dwave}. The quip-proto, quip-protocol, and quip-solver-core dependencies come from crates.io at v0.0.0; their source of truth is quip.network/quip-solver-core.

CUDA card support

The CUDA miner supports NVIDIA GPUs with compute capability 7.0 through 12.1 (Volta through consumer Blackwell). The floor is set by the kernels (they use __nanosleep, an sm_70+ instruction); the ceiling by NVRTC 12.9, which the quip-miner-cuda image ships. The host needs an NVIDIA driver from a CUDA 12.9-supported branch (r535 or newer) and the NVIDIA container runtime (--gpus all). Kernels are JIT-compiled per card for its detected capability; capabilities outside the range are clamped, and capabilities the toolkit lacks (for example 8.8) fall back to the next lower architecture via the driver's forward-compatible PTX JIT.

Documentation

The solver contract — the wire protocol, the Sampler trait, handshake, credits, cancel, and exit codes — is specified in the quip-solver-core repository (SPEC.md).

Build and run

The workspace builds from the repository root (toolchain pinned in rust-toolchain.toml):

cargo build --workspace

Run the coordinator against a config that lists the miners and the validators:

quip-coordinator --config ./docker/config.toml

See AGENTS.md for the full command set and COORDINATOR.md for the run model.

Testing

The workspace tests run offline by default:

cargo test --workspace

Live devnet integration tests

crates/quip-coordinator/tests/devnet_submit.rs drives the real chain client against a running node. The tests are #[ignore]d and gated on the QUIP_DEVNET environment variable, so the default cargo test run stays offline. Three milestones:

Start a local devnet from the chain repo (quip-protocol-rs) with make local-3-node or docker compose up. Both publish node RPC on ws://127.0.0.1:9944. Then run:

QUIP_DEVNET=ws://127.0.0.1:9944 \
  cargo test -p quip-coordinator --test devnet_submit -- --ignored --nocapture

One constraint: use a loopback URL (ws://127.0.0.1:…) or wss://. subxt rejects plain ws:// to a non-loopback host as insecure. To reach a remote node, tunnel its RPC port to localhost first.

M3 self-seeds — it proposes its own order against the canonical plain-ising-v1 spec the runtime seeds at genesis, so it runs on a fresh devnet with an empty mempool.

What changed from v0.2

In v0.2 this repository was a single Python mining stack that attached to the chain. v0.3 splits it apart:

License

AGPL-3.0-or-later. See LICENSE.

quip-solver (QuipNetwork/quip-solver)

quantum-computing
Searching Database…

What is this?This is the mining stack for the quip-protocol blockchain: a coordinator that watches the chain, stages Ising optimization problems as proof-of-work puzzles, and miner binaries that solve them via simulated annealing, Gibbs sampling, or real quantum annealing on D-Wave hardware.
Is this one unified binary or several pieces?It is a Rust workspace with a coordinator binary (quip-coordinator) plus separate miner binaries shipped from their own repositories (CPU, CUDA, Metal, D-Wave); the solver wire protocol itself lives in the separate quip-solver-core crate.
How do I build and run the coordinator?Build the Cargo workspace from the repository root using the pinned toolchain, then run the coordinator against a config file listing the miners and validators it should connect to.
What do I need to mine on a GPU?You need the pinned Rust toolchain to build the coordinator, and for CUDA mining an NVIDIA driver from a CUDA 12.9-supported branch (r535 or newer) plus the NVIDIA container runtime; the actual miner binaries for CPU/CUDA/Metal/D-Wave are separate downloads from quip.network, not part of this repo.
Is this safe to run on real money or a production chain?No — the README explicitly flags it as experimental software with no production warranties, and CUDA support is limited to compute capability 7.0 through 12.1 (Volta through consumer Blackwell).
What changed between v0.2 and v0.3 of this stack?v0.2 was a single Python mining stack; v0.3 splits it into a Rust coordinator and chain integration, with each miner now a standalone binary in its own repository. The solver contract (proto, consensus primitives, harness) moved into the separate quip-solver-core crate, and this repo no longer contains any Python.
What is an Ising problem in this context?The coordinator turns the chain's proof-of-work puzzles into Ising spin-glass optimization problems; miners try to solve them with simulated annealing, Gibbs sampling, or quantum annealing, then submit an accepted solution as a QuantumPow.submitproof extrinsic.
Can I test this without a live blockchain node?Yes — the default cargo test run is fully offline. The live devnet integration tests that drive a real chain client are marked #[ignore] and only run when the QUIPDEVNET environment variable is set.
Why does D-Wave hardware matter here?The protocol supports quantum annealing on real D-Wave hardware as one of the solver backends, alongside CPU/CUDA/Metal simulated annealing, making this one of the few mining stacks that can accept proofs found by actual quantum hardware.
Size
82.4 MB
Stars
11.6K
Updated
CommitOct 15
Age
9mo
Commits · 90 Days