usufruct.io · sdk.usufruct.io · playground.usufruct.io · Discord
Renting an asset locks it for everyone. usufruct keeps the asset in the hands of whoever values it most — the right of use is always contestable, never locked. The market never closes.
A rental protocol for Sui. Integrate once; the protocol handles price discovery, auctions, handovers, and credit curves.
Most rental markets close when someone checks in. usufruct doesn't.
- Always a price. In every state there is a price at which the right of use can be acquired: the rest price at idle, a descending price during the Dutch auction, an escalated price while occupied.
- Always liquid. A challenger can bid at any time. The current holder keeps access for the handover window before displacement executes. The window is configured by the governor; the guarantee is enforced by the protocol.
- Self-correcting. Competition drives price up. Absence of demand drives it down through a Dutch auction. Both are governed by configurable curves.
- No keeper required. State transitions execute lazily on the next transaction that touches the escrow. No off-chain coordinator, no cron job, no external dependency on liveness.
- Zero external dependencies. Any Sui object with
key + storeintegrates directly — no adapter code, no permission required, no contract rewrite. The package imports only the Sui standard library.
Before reading specs or code, build intuition interactively. The usufruct playground lets you configure policies, run rental scenarios, and observe how price, credit, and handover mechanics interact — without deploying anything. It is the fastest path from zero to understanding how the eight policy axes compose into different markets.
llms.txt is a self-contained guide for LLM agents. Load it and the agent will build real PTBs against the testnet deployment — wallet, funding, integrate, rent, collect, handover — without reading any Move source.
With Claude Code:
claude # from the repo root@llms.txt Set up a wallet, integrate the dummy asset, and rent it for one tenure.
Show the escrow ID once the asset is occupied.
Be curious. Let the agent walk you through the built-in scenarios, then push further. Ask it to swap ensembles, change the credit shape, reshape the auction curve, crank up the price escalation until a challenger is forced out, or spin up a fleet of escrows under a single cap. Ask what a holder can actually do with the asset once they hold the cap — what PTBs are legal inside a borrow, what other protocols compose. Ask it to pay rent in a different coin, or integrate your own asset instead of the dummy. The guide is the map; the agent drives; the protocol surprises.
Sui Move 2024 opened the door to functional programming in Move. Enums with exhaustive match — algebraic data types, the same foundation as Haskell, OCaml, and Rust — made it possible to express sum types: WaitingState | RentingState instead of boolean flags and nullable fields. The compiler rejects any function that does not handle every case.
usufruct applies this throughout. Illegal states have no type representation — financial state only exists when the asset is rented, structurally absent from every waiting variant. State transitions consume the old state and produce the new one; no partial update, no intermediate inconsistency. The compiler is the auditor. See CODE_PRINCIPLES.md.
Live on Sui testnet · SDK coming · Apache 2.0
