WeidS Lab — research on verifiable computing.

Wrappers

Verifiable computing
as a library

A #include away from proving what your code did — without trusting the executor.

instrument
Traced<int> sum = 0;
let mut sum: Traced<i32> = Traced::new(0);
sum = Traced(0)
Traced<float> avg = 0.0f;
let mut avg: Traced<f64> = Traced::new(0.0);
avg = Traced(0.0)
Traced<int> count = 1;
let mut count: Traced<i32> = Traced::new(1);
count = Traced(1)
Traced<double> total = 0.0;
let mut total: Traced<f64> = Traced::new(0.0);
total = Traced(0.0)
Traced<int> sum = 0;
let mut sum: Traced<i32> = Traced::new(0);
sum = Traced(0)
Traced<float> avg = 0.0f;
let mut avg: Traced<f64> = Traced::new(0.0);
avg = Traced(0.0)
Traced<int> count = 1;
let mut count: Traced<i32> = Traced::new(1);
count = Traced(1)
Traced<double> total = 0.0;
let mut total: Traced<f64> = Traced::new(0.0);
total = Traced(0.0)
prove
ast sum-check
verify
result 14,241 native · unchanged
proof 0x7f1c…b903 6.2 KB · 8 ms anyone verifies

Not a ZKVM

No virtual machine, no rewriting, no new language. Your program runs at native speed. The proof is built after.

Library model

A #include and a type annotation. Wrappers instruments at the source level — the rest of your code is untouched.

Sum-check based

Built on the power of randomness in low-degree polynomials. Post-quantum sound, no trusted setup, verification in milliseconds.