Platform Proofs#

Platform proofs are an important part of Dash Platform’s trust model. A proof is a self-contained cryptographic object that lets anyone verify a piece of platform state is authentic and was agreed upon by the validator network – without trusting whoever supplied the data.

The most common way to obtain a proof is to request one over DAPI: set the optional "prove": true parameter on a Platform gRPC endpoint and the response carries a Proof message instead of the plain result. A proof does not depend on how it was retrieved, though – it can be verified independently by any party that holds it.

For the concepts behind proofs – the two-layer GroveDB + consensus trust model, the verification flow, what can be proven, and asset lock proofs – see Proofs.

Proof structure#

A Proof is a single unified GroveDB proof plus the consensus signature that authenticates it. It has six fields:

Field

Type

Description

grovedbProof

Bytes (base64)

The GroveDB proof for the requested data. An opaque blob that a verifier decodes to recover the data and the state root hash.

quorumHash

Bytes (base64)

Hash of the validator quorum that signed the state.

signature

Bytes (base64)

BLS threshold signature over the signed block, proving the quorum agreed on this state.

round

Integer

Consensus round the block was finalized in.

blockIdHash

Bytes (base64)

Hash of the block ID the proof is anchored to.

quorumType

Integer

Type of the quorum that produced the signature.

{
  "proof": {
    "grovedbProof": "APsA/wGQtKE8gXoPHBaBJWO/39M63DsnEkx4Lah9...",
    "quorumHash": "AAAAN0ggLzkGuHl7bJM48baKuEs/b3rhSMSF5kIw14g=",
    "signature": "oc8EMH7WkoZhv06iPvP4HjTlleaRLOfDRvWg30hjXL3z83DpNigk1/8mZwC1jrEDFymkkftcoE+DcPhZu/R8wlP2yxWcWo+605lLqU/FIb29nOt0q6hUbuX+eZL39mdb",
    "round": 0,
    "blockIdHash": "Eq24v2aaWwDXN41oCmduKOYnDRsvoAJwDk8BEHZRDaU=",
    "quorumType": 6
  }
}

Verifying proofs#

Clients do not parse proofs manually. Verification is performed by the rs-drive-proof-verifier crate, which checks the quorum’s BLS threshold signature (the Tenderdash consensus half) and decodes the unified grovedbProof to recover the requested data and the state root hash. This logic is exposed to JavaScript and browser clients through the wasm-drive-verify package, so the SDKs verify proofs automatically whenever one is requested.

See the Proofs explanation for the step-by-step verification flow.

Proof internals#

The grovedbProof value is an opaque binary blob. Its byte-level format – the stack-based proof operators, node types, absence proofs, the V0/V1 proof formats, and the verification algorithm – is documented in the GroveDB Proof System documentation. Clients that use an SDK do not need to work at this level.