FREEBOARD
v1.0.0Live on npm

Prove you have room to maneuver.

A lender can confirm your loan is nowhere near liquidation without ever seeing the loan. Your figures stay on your computer. Only the answer reaches the chain.

npx freeboard-cli
freeboard --check --read
Terminal output of a solvency check. The position line shows collateral, debt and threshold masked as bullets, because they are private. The verifier's public threshold is 15000 basis points. The attester signs, the proof is built and submitted in 18.4 seconds, and the check is accepted with verdict SAFE at block 3744. A framed panel then shows the entire public ledger state: verdict SAFE, attestation timestamp 1788363618, two checks performed, and a note that no collateral, debt or threshold is present.

Requires Node 22 and a local Midnight test network.
Quick startSource

Your numbers never leave your computer.

You enter your loan figures on your own machine. An oracle signs them, so they cannot be invented. The proof checks that signature first, works out whether the loan is safe, and publishes one word. Anyone can read that word. Nobody can work backwards from it to your numbers.

Never leaves your machine

These go into the proof and stop there. Nothing ever publishes them.

collateralUint<64>
what you put up
debtUint<64>
what you owe against it
liquidationThresholdBpsUint<16>
the level your lender sells at
jubjubSchnorrVerifycircuit
checks the oracle signed this, before anything else
collateral × threshold ≥ minHF × debtcircuit
the sum that decides safe or not

What the chain holds

Everything the chain stores. This is the whole list, not a summary.

lastVerdictVerdict
safe, or at risk. One word
lastAttestationAtUint<64>
when the oracle looked
checkCountCounter
how many checks have run
attesterPkJubjubPoint
which oracle is trusted, set once
One thing crosses. The moment the oracle looked (asOf) is published on purpose, so a lender can tell a fresh answer from a stale one. It sits inside what the oracle signed, so it cannot be back-dated, and it says nothing about the size of your loan.

Three commands, and one of them is the point.

freeboard --check

Prove your loan is safe

An oracle signs your figures so they cannot be invented. The proof checks that signature, works out whether the loan is safe, and writes one word to the chain. Your figures never leave the machine.
freeboard --read

See what a lender sees

The whole public record: the answer, when the oracle last looked, and how many checks have run. No amounts and no thresholds, because the contract has nowhere to put them.
freeboard --check --tamper

Watch it refuse a forgery

Change your figures after the oracle has signed them. The signature is checked first, so the forgery is thrown out before any sums are done and nothing reaches the chain. It fails in 0.4 seconds, against the 45 a real proof takes.

What it is not, yet.

The oracle is a stand-in

Its signing key sits on the same machine as everything else, so the check proves the mechanism works, not that any particular loan is real. Putting an independent oracle in its place needs no change to the contract, which is exactly why the check was built in from the start.

One machine only, so far

The output above is a real run against a test chain on one machine. That chain keeps nothing between restarts, so it is already gone and the address below is what it was. A public test network is next.