Proof of Trust ← Home
Interactive demo

Drag the bars. Watch trust flow in bits of information.

Three voters — Alice, Bob, and Carol — each sign a probability distribution over two candidate blocks at height 1, plus a "none" slot. Move their sliders to see the market, fork-choice, and KL–scored trust update in real time. All math matches the v0.2 reference implementation.

Proof of Trust live scoring visualisation A flow diagram: three voters on the left each have a probability-distribution bar for blocks A, B, and the "none" slot. Arrows flow to a central trust-weighted market box that shows W(A) and W(B) as vertical bars and marks the winner. From the market, arrows flow down to per-voter trust-update bars. VOTERS · q_v OVER { A, B, none } TRUST-WEIGHTED MARKET FINALIZATION · Δt_v = α · [ log q_v(y) − log p_m(y) ] A Alice trust 10000 mT q(A)=0.900 q(B)=0.050 q(none)=0.050 B Bob trust 5000 mT q(A)=0.500 q(B)=0.500 q(none)=0.000 C Carol trust 5000 mT q(A)=0.100 q(B)=0.850 q(none)=0.050 Market & fork-choice W(B) = Σ t_v · q_v(B) A B 12 000 7 250 WINNER p_m(A)=0.6000 p_m(B)=0.3625 p_m(none)=0.0375 I_h = log n − H(p_m) = 0.400 bits REALIZED WINNER y: Trust update (KL-bit margin × α) new balance shown after finalization of this height 0 Alice Δ = +405 mT · new = 10 405 mT Bob Δ = −182 mT · new = 4 818 mT Carol Δ = −1 792 mT · new = 3 208 mT JENSEN TAX Σ Δt_v = -1 569 mT cost of disagreement
realized winner y: choose which block actually ends up canonical after K confirmations
A
Alice
trust 10 000 mT
q(none) = 0.050
B
Bob
trust 5 000 mT
q(none) = 0.000
C
Carol
trust 5 000 mT
q(none) = 0.050
How to read this

Voter panels— each one's distribution is a three-color bar over A (dark blue), B (magenta), and the "none" slot (grey). Move the top two sliders; "none" absorbs whatever probability is left.

Market— the dark panel renders \(W(B)=\sum_v t_v\cdot q_v(B)\) as two vertical bars. The amber crown marks the winner under greedy fork-choice; the numbers below are the normalized market probabilities and the height's information content.

Finalization— once you pick a realised \(y\), every voter's bar grows to \(\alpha\cdot(\log q_v(y) - \log p_m(y))\). Positive bars (green) mean the voter beat the market in KL bits; negative bars (red) mean they fell short.

Jensen tax— \(\sum \Delta t_v\) on the right-hand card. When everyone agrees it's ≈ 0; when they disagree a lot, trust quietly deflates as "the cost of disagreement".

The math, as run
for v in { alice, bob, carol }:
    q_v = slider values, in ppm, summing to 1_000_000

W(B) = Σ_v  t_v · q_v(B)
winner = argmax W(B)            // ties broken by lex-smallest id

p_m(B)    = W(B) / Σ_v t_v
p_m(none) = Σ_v t_v · q_v(none) / Σ_v t_v

Δt_v = round( α · ( log(max(q_v(y), 1e-9))
                  − log(max(p_m(y), 1e-9)) ) )

t_v := max(0, t_v + Δt_v)

The numbers at the top-level "Whitepaper example" preset match the ones asserted by crates/pot-git/tests/e2e.rs to the millitrust.