Through the adit
Pick a representation, read what it costs you in custody hops and freeze authority, choose a chamber, and commit. Every figure that matters is on the screen that commits.
Advancing
LoadingLode
A lode is what several seams run into: the thing the level was driven towards in the first place. These are the ways in, and the ways to carry a LODZ reading somewhere that is not this site.
Pick a representation, read what it costs you in custody hops and freeze authority, choose a chamber, and commit. Every figure that matters is on the screen that commits.
Read the whole seam list first: what pays, who pays it, over what window, and which venues were left off because they could not show recent successful transactions.
Start from what it costs rather than what it pays. Five exposure layers graded apart, each with the reading behind the grade and the incident that makes it real.
A figure is only worth carrying if it carries its context with it. Both surfaces below refuse to render a rate without the window it was measured over and the exposure behind it.
A small readout for your own page. It prints the durable and emitted split of a position, the exposure grade of the representation behind it, and the window the rate was measured over. It reads the same catalogue this site reads, so the figure on your page and the figure here cannot fall out of step.
The script is not being served yet, so there is no markup to copy here. Publishing one now would put a broken tag on pages nobody here can reach to fix. It goes out with the script.
A surface that shows one of our rates without its exposure grade is not one of ours.
The same operations this site exposes, without a browser. The commands below are the binary’s own surface, taken from its help output rather than from a plan.
Install
npm i -g lodz-cli$ LODZ_API_URL=api.lodz.money lodz assay --btc 1.5recorded run · exit 0LODZ assay 1.5 BTC stope balanced source defillama (live) at 2026-08-15 11:29:42Z Yield attribution 806 bps 8.06% ┌────────────────────────────────────────────────────────┐ │████████████████████████████████████████████████████████│ └────────────────────────────────────────────────────────┘ █ Sustainable 806 bps 8.06% 0.12092775 BTC trading fees and borrow interest, paid by an outside user ▒ Emissions 0 bps 0.00% 0.00000000 BTC none on Solana BTC pools as of 2026-08-15 ▓ Counterparty 0 bps 0.00% 0.00000000 BTC no allocation to trader-loss funded venues The emissions row is zero because it was measured as zero: all 94 BTC-related pools across 647 days show no reward APY. The collector is working -- the same snapshot finds 15 pools with a reward APY elsewhere on Solana. ──────────────────────────────────────────────────────────── After impermanent loss IL: unknown no estimate available for 2 seam(s); not assumed to be zero After emissions end 806 bps 8.06% no incentive programme to end After performance fee (1000 bps) 726 bps 7.26% 0.10883497 BTC net Redemption 2.6 days typical, 6.6 days worst case Risk medium, max 1 wrap hop(s), 9500 bps freezable USD figures use an operator-configured reference of $100000, not a live quote.
Rates move. The client stamps the source and the moment it read them into its own output, so this block can be checked against the live figures rather than trusted.
lodz seams --type sustainableList every working face, filtered by who pays the return. The three kinds are never summed into one headline figure.
lodz assay --btc 1.5 --stope balancedBreak a projected return into durable, emitted and counterparty parts for a given amount and chamber.
lodz queue --owner <pubkey>Read the redemption line: depth, position and the delay log.
lodz deposit --btc 1.5 --asset <mint>Build and describe a deposit request. Assets are given by mint, never by symbol.
lodz redeem --amount 0.5 --stope balancedBuild and describe a redemption request.
Source: LodzMoney/lodz
The client is a thin layer over the SDK, so a wallet or a custody stack can call the same operations directly. Every response carries the provenance of the figures inside it: the window, the source, and whether divergence loss was available.
Install
npm i lodz-sdkReading the catalogue
import { LodzClient } from "lodz-sdk";
const lodz = new LodzClient();
const catalogue = await lodz.seams();
for (const seam of catalogue.seams) {
// Every rate carries the window it was measured over.
console.log(seam.venue, seam.rateWindow, seam.apy, seam.paidBy);
}Source: LodzMoney/lodz-sdk
There is no call that returns a rate stripped of its window, and no flag that suppresses the exposure grade. Leaving those out is the failure this whole surface exists to prevent, so the interface does not offer it.
Readings taken 2026-08-15T07:00Z against Solana mainnet