Reference
Limits and status
What you have to trust, what the public chain shows, what is not built, and what is finished, stated plainly.
What you have to trust
- Intel TDX, and OutLayer’s attested workers and keystore. The books are private only if the enclave is, and the random bytes that blind the fingerprint and salt the commitments come from the worker. Each run has a TDX attestation you can fetch by transaction hash.
- The one enclave build the contract pins. The contract calls one build, named by its sha256, and no other. A deal names its build in the public arguments of the transaction that starts it, and
stateon the contract returns it asversion_key. Build it yourself withnear/build.shand compare (the build is not yet bit-for-bit reproducible across machines). - Whoever holds the contract account’s key. In this demo the contract account still has its full-access key, which setup uses to deploy. Its holder could replace the contract, or start a new deal pinned to another enclave build. The same person owns the OutLayer project. In production that key is deleted or handed to a DAO.
- The demo server. It holds a testnet key for every party, so one browser can play the whole deal. Each action is still signed by the one account entitled to it, and each screen opens only its own party’s envelope. In production each party, and each operator, holds its own. The one exception is
/you: there the visitor’s browser holds the signing key and the view key, and the server plays only the other side. - Privy, if you sign in with it. Privy’s embedded wallet keeps your account’s key and signs when you approve. The browser-key option keeps the key in the browser’s own storage instead.
What the public chain shows
Who is in the syndicate, deposits and withdrawals with their amounts, who did what and when, one total per interest request, and envelope sizes. It does not show positions, per-lender payments, trade sizes and prices, the DQ list, or why a trade failed. Who sees what has the whole list, including what a careful reader could infer.
Not built
- Prepayments, inside-information documents and a hundred-lender scale test exist in the Canton build and were left out of this one.
- A production deal would have the agent admit an account before it can call; that is not built. An account outside the deal can slow the deal down.
- Envelopes are not padded to one length.
- Withdrawal amounts are public. Next on NEAR: withdrawals through NEAR’s confidential intents, so that even those amounts are hidden.
Status
| The deal's rules and the enclave's protocol: 28 tests | Done |
| The rules contract, deployed on NEAR testnet: 26 tests | Done |
| The web app in NEAR mode, played in a real browser against testnet | Done |
| The leak test, passing on both recorded runs | Done |
| A trade with DQ screening | Done |
| The agent as two of three operators, on a Sputnik DAO | Done |
| A short payment, and the period that pays the rest | Done |
| Late answers: an answer that misses NEAR's two-minute wait changes nothing | Done |
| Proofs: one fact, and nothing else | Done |
| Withdrawals through NEAR's confidential intents | Next |
On testnet
| Rules contract | ledger.paridesk.testnet |
| Test USDC (NEP-141, 6 decimals, no value) | usdc.paridesk.testnet |
| Enclave program | OutLayer project paridesk.testnet/pari-core on outlayer.testnet |
| The parties | agent, northwind (borrower), alder, birch, cedar (lenders), delta, rival (buyers), auditor, each .paridesk.testnet |
There are two recorded runs, both played by npm run e2e on the final builds, on 11 and 12 November 2026. northwind-14 was played with one agent key, and northwind-13 with a DAO as the agent; its transactions are under The agent, two of three. A new deal replaces the live one on the contract; a run’s transactions stay on the chain, so the leak test and the proof check go on passing on both runs.
| Step of deal northwind-14 | Transaction |
|---|---|
| The deal is loaded, every opening position sealed | DXbQjGs4… |
| The agent types 900,000,000.00: refused | o36Pf9jk… |
| The agent requests 1,971,666.66 | 3AVZW7vF… |
| The borrower pays, in one transfer | MZM57dBE… |
| One settlement pays three lenders | Dndv3Zvq… |
| Alder withdraws 500,000.00 of its payment | DBeuzbsp… |
| The borrower sets its DQ list, sealed | FD3fH8P4… |
| Alder's offer to Rival, sealed | AvRnAici… |
| Rival's trade is not settled | D85FiUHa… |
| Delta's trade settles, cash against loan | CM8FBYGP… |
| Birch sends Alder's sealed offer as its own: refused | C2rKHgyb… |
| The borrower pays half of the second period's interest | FkfBEtXV… |
| One settlement pays four lenders half each | DzXpdJXg… |
| The third period's settlement pays every unpaid half | 3CG5ocEE… |
All 36 transactions of that run are in near/runs/northwind-14.json.
Where this build came from
Everything under near/, the app’s NEAR data layer and screens and the /you page were built during NEAR HACKATHON. Pari was first designed for Canton at HackCanton Season 3. That build is tagged pre-hackathon (the build as of 7 October 2026), and the full diff from it is pre-hackathon...main. The NEAR version reuses its idea, its demo deal, its test names and numbers, and the web app’s visual layer.
The code was written with Claude Code (Anthropic) as a coding agent, directed and reviewed by the builder. The web app’s visual layer is derived from sidereal-hedera (Apache-2.0).