Onchain shariah-powered money markets
Up to 11% stablecoin yield and 5x leverage on majors, the halal way.
One purchase, financed by a sale.
A vault of depositors’ USDC buys a real coin and sells it to the trader at cost plus a fixed markup. The trader pays part now and the rest by a due date. The coin stays pledged until then.
- The vault buys the coin on the spot market with depositors' USDC.
- It sells the coin to the trader at cost plus a markup, fixed once for the whole term.
- The trader pays a down payment now. The coin stays pledged until the balance is paid.
- The trader closes or pays off whenever they like and pays only for the days used. After the due date, anyone can settle.
Steps 1 to 3 happen in a single transaction.
Three contracts Muslims have used for centuries.
The markup traders pay is the depositors’ yield, all of it. A bucket with 80% of its USDC financed at 11% a year earns about 7.9% a year for depositors before any shortfalls. That is arithmetic on proposed values, not a forecast.
Five rules the code keeps.
Each one is a Foundry test or invariant in the repository, not a sentence in a document.
The vault owns the coin before it sells it.
open lends the full cost and swaps before it records the sale or takes the down payment.test_open_recordsTheDesignExample
The balance never increases. No penalty, no roll-over.
No function adds to financed or markup, or subtracts from repaid.invariant_aBalanceNeverIncreases
The trader never owes more than the pledged coin.
settle never pulls from the trader. A short sale closes the debt.invariant_settlementNeverChargesTheTrader
Only the trader can sell before the due date.
settle reverts until the due date has passed, and there is no other sale path.test_noOneCanSellBeforeDueExceptTheTrader
Closing, paying off and withdrawing can never be paused.
Only open and requestDeposit check the pause flag. The guardian can pause but not unpause.test_deposit_pausedByGuardian_withdrawalsStillWork
Who pays when a coin sells for less than the balance.
A term ticket is never sold before its due date, so there is no liquidation price. A crash inside the term is absorbed in this order, and a loss moves down only when the layer above is used up.
The order of loss
- The trader's down payment
- The bucket's loss reserve
- The backstop fund's USDC
- The depositors of that bucket, in proportion
Staked SCR joins as a layer above depositors once the token launches.
What the backtests say
| Ticket | Average loss a year | Worst year |
|---|---|---|
| Term, BTC 3x, 14 days | 1.0% | 5.1% (2020) |
| Term, ETH 2x, 14 days | 0.0% | 0.0% |
Binance one-minute prices, January 2020 to August 2026, tickets left unmanaged. Losses are a share of the amount financed, against markup of about 11% a year. On-chain markets are thinner than Binance, so treat these as a floor. The past does not bound the future.
Where it stands.
Term mode is built end to end: the vault, the desk, the price reader and the backstop fund in Solidity, a keeper and read API, and the app behind this button. Nothing is deployed, audited or certified.
- Term mode first. BTC and ETH, 7 and 14 day tickets, low leverage.
- Whitelisted traders and depositors. Deposits capped at 1 million USDC, raised in steps.
- Points from day one. No token yet.
- Longer terms and evergreen tickets. As rulings arrive and the reserve grows.
- SCR. After 6 to 12 months of real fees.