ProofNet

Causality Substrate · Trust & Reputation Math

ProofNet is the foundational layer — an append-only, non-inferential structure that records how artifacts came to be. Trust grows with proved output and proved endorsements, and decreases with disputes.

1. ProofNet Trust Function Core

$$T_u(t) = \beta_1 P_u(t) + \beta_2 \sum_{v \to u} \pi(v \to u, t) \cdot \tau(v, t) - \beta_3 \Omega_u(t)$$
$P_u(t)$ — node's own proof score (see SignalRank Math)
$\pi(v \to u, t)$ — proof weight of inbound endorsements from $v$
$\tau(v, t)$ — squashed trust of the endorsing node $v$
$\Omega_u(t)$ — dispute/suppression penalty
$\beta_1, \beta_2, \beta_3$ — protocol weights

2. Trust Squashing (Normalization)

Raw trust is squashed through a sigmoid to prevent unbounded accumulation.

$$\tau(u, t) = \sigma\!\left(\frac{T_u(t) - \mu_T}{\sigma_T}\right), \quad \sigma(x) = \frac{1}{1 + e^{-x}}$$
$\mu_T$ — population mean trust · $\sigma_T$ — population trust standard deviation

3. Edge Proof-Weight

The proof weight of an interaction event $e$ is the sum of quality-weighted artifacts attached to it.

$$\pi(e, t) = \sum_{a \in A(e, t)} q(a) \cdot w(a)$$

4. Dispute / Suppression Term

$$\Omega_u(t) = \sum_j \omega_j \cdot \mathbb{1}[\text{claim } j \text{ unresolved}]$$

Dispute Resolution Outcome Core

When a dispute resolves, its weight transitions based on outcome:

$$\omega_j(t) = \begin{cases} 0 & \text{if dismissed (no merit)} \\ \omega_j \cdot e^{-\mu(t - t_{\text{resolved}})} & \text{if resolved against node (decaying penalty)} \\ -\omega_j \cdot \kappa & \text{if resolved in node's favor (trust bonus)} \end{cases}$$
$\mu$ — penalty decay rate post-resolution
$\kappa \in (0, 0.5)$ — partial trust recovery coefficient (surviving a dispute strengthens trust, but less than the original penalty)

Claim Staleness V2

Unresolved claims decay over time. If unresolved beyond threshold $T_\text{stale}$, the claim is auto-discounted.

$$\omega_j(t) = \omega_j \cdot e^{-\nu \cdot \max(0, t - t_j - T_\text{stale})}$$

5. Claim Validation (ProofLock)

A claim $c$ by node $u$ is validated when sufficient quality-weighted proof and minimum witness count are met.

$$\sum_{a \in A(c)} q(a) \cdot w(a) \geq \Theta_c \quad \text{AND} \quad |\{\text{witness}(a)\}| \geq k$$

Witness Weighting V2

Witnesses have varying trust. Weighted witness count replaces raw count.

$$W_c = \sum_{i \in \text{witnesses}(c)} \tau(i, t) \cdot w_i \geq \Theta_w$$

6. Cross-Node Proof Chain Validation Core

When one node's proof references another node's proof, the chain must be recursively validated.

$$\text{Valid}(a, d) = \begin{cases} \text{true} & \text{if } a \text{ is self-contained and } \text{sig}(a) \text{ is valid} \\ \text{Valid}(a_\text{ref}, d-1) & \text{if } a \text{ references } a_\text{ref} \text{ and } d > 0 \\ \text{false} & \text{if } d = 0 \text{ (depth limit exceeded)} \end{cases}$$
$d$ — depth limit (prevents infinite loops from circular references)
$a_\text{ref}$ — the referenced proof, fetched from the ledger
Default depth limit: $d = 10$

7. Node Dormancy & Revival Core

Inactive nodes decay. Revival requires crossing an activation threshold.

Decay (Dormancy)

$$\vec{s}_u(t) = \vec{s}_u(t_0) \cdot e^{-\lambda(t - t_0)}$$

Revival

A dormant node reactivates when new proof output exceeds the activation threshold, scaled by time dormant.

$$\vec{s}_u(t_r) = \vec{s}_u(t_d) \cdot e^{-\lambda(t_r - t_d)} + \theta_\text{act} \cdot f\!\left(P_u(t_r), T_u(t_r), \frac{1}{t_r - t_d}\right)$$
$t_d$ — time node went dormant · $t_r$ — time of revival attempt
$\theta_\text{act}$ — activation coefficient
$f(\cdot)$ — revival function: $f(P, T, \Delta^{-1}) = \min(P, P_\text{cap}) \cdot \sigma(T) \cdot \Delta^{-1}$
Revival is bounded — a node cannot return at a higher signal than it left. $P_\text{cap}$ ensures gradual re-entry.

8. Practical Defaults

$\beta_1 = 0.4, \beta_2 = 0.5, \beta_3 = 0.3$ · $\lambda = 0.001$ per hour · $k = 2$ witnesses (standard), $k = 5$ (governance) · $\theta_\text{act} = 0.5$ · $P_\text{cap} = 0.8 \cdot P_u(t_d)$ · Depth limit $d = 10$