Skip to main content

Delegated Proving

POST 

/prove

Submits a delegated proving request. The prover decrypts ciphertext inside a Trusted Execution Environment, generates the proof(s), and returns the resulting transaction.

ciphertext is a libsodium cryptobox sealed box (key from GET /pubkey, single use) over the following JSON, shown here unencrypted for reference:

{
"broadcast": false,
"payload": {
"type": "authorization",
"authorization": { "...": "a snarkVM Authorization for the execution" },
"fee": { "...": "an optional snarkVM Authorization for the fee; generated automatically if omitted" }
}
}

payload.type selects the workflow:

  • authorization — the caller already assembled a full snarkVM Authorization (and optionally a fee Authorization); the server proves it directly.
  • requests — the caller supplies signed Requests (a root call plus its nested sub-calls, in DFS pre-order — a single call is just a one-element list) and an optional single fee Request; the server assembles them into an Authorization before proving.

Set broadcast: true to have the prover submit the resulting transaction to the network on the caller's behalf; the outcome is reported in the response's broadcast_result.

Supersedes the deprecated POST /prove/encrypted (and its POST /prove/authorization alias) and POST /prove/request, which accept the same { key_id, ciphertext } envelope but require the legacy byte-encoded request format instead of JSON.

Request​

Responses​

Proving request completed