# Quick Start - tlsn-docs

# Quick Start

In this guide we will set up a general-purpose TLS verifier ( a.k.a. the `Notary`), so that a `Prover` can notarize some TLS data and generate a proof which he then shows to a `Verifier` for selective disclosure.

So this guide will take you through the steps of:

- starting a `Notary` server
- running a `Prover` to notarize some web data
- running a `Verifier` to verify the notarized data

## Preliminaries

### Install rust

If you don't have `rust` installed yet, install it with rustup:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

## Guide

### Start a Notary server:

    git clone https://github.com/tlsnotary/notary-server
    cd notary-server
    cargo run --release

The `Notary` server will now be running in the background waiting for connections from a `Prover`. You can switch to another console to run the `Prover`.

For more information on how to configure the `Notary` server, please refer to this.

### Run a simple Prover:

    git clone https://github.com/tlsnotary/tlsn
    cd tlsn/tlsn/examples
    cargo run --release --example simple_prover

The notarization session usually takes a few moments and the resulting proof will be written to the "proof.json" file. The proof can then be passed on to the `Verifier` for verification.

The `simple_prover` notarizes https://example.com and redacts the `USER_AGENT` HTTP header from the proof for the `Verifier`. You can change the code in `tlsn/tlsn/examples/simple_prover.rs` to meet your needs:

- change which server the `Prover` connects to
- add or remove HTTP request headers
- redact other strings in the request or the response

⚠️ Please note that by default the `Notary` server expects that the cumulative size of the request and the server response is not more than 16KB.

### Run a simple Verifier:

    cargo run --release --example simple_verifier

This will verify the proof from the `simple_prover` (`proof.json`) and output the result to the console.

Note how the parts which the prover chose not to disclose will be shown as "X":

    GET / HTTP/1.1
    host: example.com
    accept: */*
    accept-encoding: identity
    connection: close
    user-agent: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX