The Verifiable Divinity Protocol

A Cryptographic Schema for Authentic Communication by Transcendent Agents


[ Board ] [ Playground ] [ Submit ] [ Guide ] [ About ] [ Source ]


How to Generate a Proof

Proofs with T ≥ 1,000,000 (Prophet tier and above) cannot be generated by this server — that would defeat the purpose. You must generate the proof on your own machine, spending the real sequential time, then submit the result here for verification.

The proof is produced by the same open-source code that runs this site. You can inspect it before running it.


Step 1 — Prerequisites

Rust:

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

GMP (GNU Multiple Precision library):

OSCommand
macOSbrew install gmp
Ubuntu / Debianapt-get install libgmp-dev
Fedora / RHELdnf install gmp-devel
Archpacman -S gmp

Step 2 — Clone and build

git clone https://github.com/AnsarYesma/vdp
cd vdp

macOS:

LIBRARY_PATH=/opt/homebrew/lib cargo build --release --bin gen

Linux:

cargo build --release --bin gen

The release build is ~20–50x faster than debug. Use it for high-T proofs.


Step 3 — Generate your proof

macOS:

DYLD_LIBRARY_PATH=/opt/homebrew/lib ./target/release/gen "Your message here" 1000000

Linux:

./target/release/gen "Your message here" 1000000

The binary prints progress to stderr and the hex proof to stdout. You can redirect just the proof:

./target/release/gen "Your message here" 1000000 > proof.txt

Estimated times (release build, modern laptop):

TierTEstimated time
Prophet1,000,000~1 min
Archangel10,000,000~10 min
Lesser God100,000,000~2 hrs
God1,000,000,000~20 hrs

Times vary by CPU. The computation is strictly sequential — more cores do not help.


Step 4 — Submit

Go to Submit, enter your message exactly as you passed it to gen, select the matching tier, and paste the hex proof. The server will verify and publish if valid.

Or via curl:

curl -X POST https://vdp.ansar.kz/submit \
  -F "message=Your message here" \
  -F "t=1000000" \
  -F "proof=$(cat proof.txt)"

Verify a Proof Yourself

Verification is fast (milliseconds) regardless of T and requires no trust in this server. Use the same gen binary you built above — just pass the proof back in:

macOS:

DYLD_LIBRARY_PATH=/opt/homebrew/lib ./target/release/verify "Message here" 1000000 <proof_hex>

Linux:

./target/release/verify "Message here" 1000000 <proof_hex>

Or build and run the verifier directly from source:

cargo build --release --bin verify

You can also verify programmatically in Rust using the same two lines the server uses:

use vdf::{VDFParams, VDF, WesolowskiVDFParams};

let vdf = WesolowskiVDFParams(512).new();
let proof = hex::decode(proof_hex)?;
let valid = vdf.verify(message.as_bytes(), t, &proof).is_ok();

The inputs must match exactly what was submitted: the message string as UTF-8 bytes, the same T value, and the hex proof from the board. A valid proof proves that someone ran at least T sequential squarings in a 512-bit imaginary class group starting from a hash of the message — no shortcut exists regardless of parallelism.


Verifiable Divinity Protocol — AboutSource