Blind Compute connecting…

How it works, in more detail.

For readers who want the mechanisms, and an honest list of what is and is not guaranteed.

How it works

The server keeps everything that carries meaning: the data, the labels, the architecture, the weights, the non-linearities, the loss and the optimizer. The only thing that leaves is “multiply these two matrices.” That is enough, because almost all of training is matrix multiplication: the forward pass, and the derivatives too. Every product is scrambled and split so no single node learns its inputs, and every answer arrives with a proof.

ArchitectureThe server scrambles each matrix pair, splits it into shares, sends one share to each of several distinct browser nodes, receives each product with a proof, verifies the proofs, combines the products and unscrambles the result. Server (private) data · labels · weightsReLU · softmax · loss · optimizer 1 Round to whole numbers, cut into tilesexact arithmetic in a prime field 2 Hide: pad, shuffle, mixsecret random transform spreads every entryfresh random choices for every product 3 Share: Aᵢ = A + αᵢR + …, Bᵢ = B + αᵢS + …R, S uniformly random; 2T + 1 shareseach to a different, randomly chosen node 5 Verify every proof πᵢ (about 0.1 ms)combine the answers, then undo the hidingchance of accepting a wrong answer ≈ 2⁻¹¹⁷ weights and labels never leave this box Node 1holds a share: uniformly random numbers4 multiplies in WebAssembly, builds proof π₁ Node 2 … node 2T + 1same job on their own shareseach returns its product and 190 bytes of proof A node sends a wrong answerits proof fails and it is bannedits share goes to another node one share each answers and proofs
  1. Every matrix product becomes anonymous tasks

    For a layer with input X and weights W, the forward pass needs X times W. The backward pass needs the weight gradient, Xᵀ times the error, and the input gradient, the error times Wᵀ. These are the network’s derivatives, and each one is just another product. Large products are cut into 64-wide tiles, and several mini-batches run at once, so nodes stay busy while the server does its element-wise work. A node cannot tell a forward product from a derivative, or one layer from another.

  2. Whole numbers in a prime field, so answers are exact

    The server rounds each row of the first matrix and each column of the second to about 11–12 bits, keeps the scales to itself, and works with whole numbers modulo the prime 2³¹ − 1. Sums stay below half the prime, so the exact integer product is recovered after unblinding. Gradients use stochastic rounding, so rounding noise averages out instead of biasing training.

  3. A hiding layer scrambles the matrices

    Before anything is sent, the server pads both matrices up to a power-of-two size, so exact layer sizes are not revealed, then shuffles rows, columns and the shared inner index. It then mixes everything with random butterfly networks: log-depth layers of random 2×2 invertible blocks, the same structure as a fast Fourier transform. Mixing the rows of the first matrix and the columns of the second is undone after the product is combined, and the mixing on the shared inner index cancels inside the product. Nodes compute on a dense matrix with no order, no zeros and no magnitudes to read.

  4. Secret sharing hides the operands

    The server draws uniformly random matrices and sends node i the pair Aᵢ = A + αᵢR + αᵢ²R′ + …, Bᵢ = B + αᵢS + αᵢ²S′ + …, with as many random terms as the privacy level T. Node i multiplies its pair, and the products lie on a polynomial of degree 2T whose value at zero is the answer. Any 2T + 1 results pin the polynomial down, and interpolation at zero returns A·B in a single pass. Any T shares are statistically independent of the secret, whatever computing power their holders have. The price is that nodes do 2T + 1 times the arithmetic.

  5. A succinct non-interactive proof for every product

    Each node proves its answer with the sumcheck protocol for matrix multiplication. Rather than redoing the product, the verifier checks a random combination of the entries, and that check is reduced round by round to a single evaluation it can compute from the inputs. The random challenges come from hashing the transcript with SHA-256 (the Fiat–Shamir transform), so the proof is non-interactive, needs no trusted setup, and the node can’t pick its randomness after seeing the claim. The proof is about 190 bytes for these tiles. Checking it costs a small fraction of the multiplication itself. A wrong result is accepted with probability about 2⁻¹¹⁷. An independent second implementation of the protocol produces identical proofs, and every forgery attempt in the tests is rejected.

  6. WebAssembly does the heavy lifting

    The arithmetic runs as compact WebAssembly modules about 20 KB in size. They multiply small blocks of 31-bit numbers into 64-bit accumulators and reduce modulo the Mersenne prime only occasionally, so nothing overflows and nothing needs a division. There is a SIMD build and a scalar build; SIMD wins clearly on ARM chips and often ties on x86, so each node times both on start-up and keeps the faster. The proof, the hash and the extension-field arithmetic live in the same module. Buffers move between the network and worker threads without copying, and a node runs as many workers as you choose.

  7. A tamper-evident receipt for the whole run

    The run starts with a commitment to the dataset, the architecture and the initial weights. Every step then adds a record that links to the previous one by hash, holds the Merkle root of every verified node result used in that step, and fingerprints the full training state. All randomness in a step (which examples, how rounding falls) is derived from the previous record, so the server can’t cherry-pick it, and any stretch of training can be replayed exactly. A node keeps a secret token and can later prove that its result is a leaf of a given step.

  8. Fault tolerance and hardening

    A task that times out, or whose node disconnects, goes back to the queue for a node that doesn’t already hold a different share of the same product. Nodes that return an invalid proof are banned. Results with out-of-range values, wrong sizes or replayed proofs are rejected, because every task carries a fresh random tag. Training controls are protected by a private link, connections per address are capped, and the server never sends one node more than one share of a product. Training simply pauses while fewer nodes are connected than shares are needed.

What this does and doesn’t guarantee

Holds

Integrity. A node can get a wrong product accepted with probability about 2⁻¹¹⁷ (in the random-oracle model), and every failed attempt costs it a ban.

Privacy against a bounded coalition. At privacy level T, any T nodes pooling everything they received learn nothing about the data, and no amount of computing power changes that. The calculator above shows how likely a larger coalition is to land enough shares of one product.

No model knowledge. Nodes never receive labels, data, architecture, weights, activations or the loss, and a task carries no label saying which operation it is.

Exact reproducibility. The arithmetic is deterministic, so honest nodes give identical bits on any hardware.

Doesn’t hold

Collusion beyond the threshold. If more than T nodes receive shares of the same product and pool them, they can reconstruct the scrambled version of it. The server can’t tell that one person is running several tabs. Real deployments need identity, stake or a vetted pool of nodes.

Not zero-knowledge, and not data-free to verify. The proof is succinct, but the verifier reads the shares and results to check it. Letting a third party verify without seeing any matrices needs a polynomial commitment, whose prover cost is hundreds of times the multiplication. That would defeat the point here, so it isn’t included.

It proves products, not every step of training. The server does ReLU, softmax, the loss and the optimizer itself. The receipt makes those steps checkable by replay, but only for the stretches an auditor chooses to replay; checking all of them costs as much as training again.

Some metadata leaks. Task sizes are padded to powers of two, which blurs layer sizes but not completely, and timing still reveals the training schedule.