# Witness Model

### Architecture

A witness is a service provider that issues cryptographic signatures over well-defined data objects. Witness statements may cover block identifiers, state roots, transaction inclusion claims, or application-specific data hashes.

Witnesses do not provide cryptographic proofs of correctness. Instead, they provide signed attestations that can be verified by the client using the witness’s public key. The client validates the signature, the witness identity, and the structure of the attested data.

Clients may query one or multiple witnesses for the same information. Trust assumptions can be reduced by requiring matching attestations from multiple independent witnesses or by enforcing threshold rules.

Witness identities are explicit and enumerable. Clients decide which witnesses are acceptable and how many attestations are required. Trust decisions are therefore explicit and configurable at the client level.

The Witness Protocol specifies the structure and verification of witness statements but does not define how witnesses obtain their information. Responsibility for correctness is bound to the witness identity and its signature.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://corpus-core.gitbook.io/whitepaper-colibri-stateless/technical-concept/witness-protocol/witness-model.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
