Maths is cooked so our quants became voice actors instead … new [un]wind episode live!
Check comments for 🇨🇳 Chinese, 🇰🇷 Korean and 🇯🇵 Japanese versions.
@LaserDigital_, a @Nomura group company, has chosen @KeyringNetwork as their DeFi partner.
This partnership underscores our tier-one institutional offerings of structuring, settlement technology and permissioned DeFi.
The initial markets will be live on @eulerfinance 👀
I spent about 6 months on creating an implementation of @ISDA's SIMM for DeFi.
I hope this represents a step forwards in providing an open-source guide to removing the risks around arbitrary leverage in DeFi.
As a lender, you can use an AI model to audit collateral LTV limits for safety.
This gives you minimum safety bounds, derived from cross-industry quants and experts to rely on.
For risk managers, structurers and lending protocols this gives you a benchmark on how to set parameters with a full methodology.
Now caveats, I'm really not happy with putting this out there today as I feel like it's not finished and I keep finding errors here and there. But it's at the point, where my errors seem to just be grammatical or bad phrasing, or some random slop that snuck in. Whilst, I remain unable to say this is a final version I think it's well past the 80/20 principle and needs to just get out there.
Contributors ...
1) As mentioned, this isn't finished (arg). There are a number of sloppy parts in the back components in particular.
2) We need to extend this to a new crypto risk class
- btc, eth, sol, avax etc.
- bridges (wBTC, BTC.b etc)
- wrappers / staking (wstETH, weETH, wETH etc.)
3) I'll be working on some edits over the next few weeks into FX, Equities, Comm etc as they're a LOT easier than tokenised funds.
Link in comments ...
Digitization made KYC faster, but also created more places demanding verification, more companies storing personal data, and more data breach vectors
ZKs allow you to verify information without revealing who you are, which is a real upgrade to how identity should work online
rwa [un]wind waitlist is now open for a limited time only
Access here: https://t.co/4FNmCk3DyQ
✅Register for early access and market incentives
✅Get an initial boost by signing up early
✅Powered by borrowers leveraging RWA positions
We did an atomic levered loop with @paretocredit , @centrifuge and @eulerfinance
✅ no external OTC liquidity
✅ async redemption
✅ async mint
✅ extendable to every DeFi protocol.
Here's how the wind/unwind works:
# WIND FLOW: opening a leveraged RWA position
💵 Stage 1: User funds the position
The borrower deposits USDC equity and selects target leverage. That USDC transfers to the wind manager, not directly into the final RWA position. A per-request escrow is deployed to isolate this position from every other request, one escrow per request, no commingling.
🌉 Stage 2: Virtual collateral bridges the settlement gap
The manager mints a pending settlement token (psToken) to the escrow. That token represents a confirmed dollar-denominated pending subscription and functions as virtual collateral during the settlement window. It bridges the gap between "capital has been committed" and "fund tokens have not arrived yet."
🏦 Stage 3: Temporary CDP opens on Euler
The escrow deposits the psToken into a dedicated Euler vault as collateral. The escrow borrows USDC against that virtual collateral and sends the borrowed USDC back to the manager. This creates the temporary CDP: virtual collateral + real debt.
📦 Stage 4: Total capital enters the fund subscription path, fee is collected
The manager now holds the borrower's original equity plus the newly borrowed USDC. The Keyring fee is excluded from the total sent to the fund. The total assets (minus fee) are sent through the Pareto adapter into the async subscription queue toward the RWA fund. The Keyring fee is then transferred to a separate fee collector. Multiple requests within the same epoch accumulate into a single batch.
📅 Stage 5: Issuer processes at NAV
The fund administrator does not see or care about the psToken. The issuer processes subscriptions at the next NAV strike and determines how many real fund shares the subscribed capital buys. Standard off-chain fund logic, bridged back on-chain through the tokenisation layer.
🧾 Stage 6: Queue settles, shares are allocated
Settlement runs opportunistically when users transact (new wind requests or finalisations) and can also be triggered directly via settleQueue. An off-chain operator ensures timely settlement when no user transactions occur. The adapter claims all tranche shares in one shot and streams them pro-rata across pending requests in FIFO order. At this point the request's share allocation is recorded, but the escrow still holds psToken as collateral.
🔁 Stage 7: Finalization swaps virtual collateral for real collateral
A separate finalizeWind call is made by the operator. The escrow atomically swaps: psToken withdrawn and burned, real RWA collateral deposited into the Euler position. If any step fails, the entire transaction reverts.
🎯 Stage 8: Borrower holds the final leveraged position
The completed CDP, now backed by real RWA collateral, transfers to the borrower's own Euler sub-account. What would normally require multiple looping transactions to build leverage happens in a single atomic action. The user holds the leveraged RWA position directly on the lending market.
Wind TLDR
- USDC equity to the manager
- psToken minted to escrow
- temporary CDP opened on Euler
- borrowed USDC sent back to manager
- total capital (minus fee) sent through Pareto into fund subscription
- fee transferred to collector
- issuer allocates fund tokens at NAV
- queue settles, shares allocated to request
- operator calls finalizeWind, psToken burns, real RWA collateral replaces it
- final leveraged position transfers to borrower
# UNWIND FLOW: closing a leveraged RWA position
🔒 Stage 1: User locks the existing position
The borrower starts with a leveraged RWA CDP on Euler: real collateral (deACRDX) and USDC debt. They submit an unwind request. The system checks position health is below liquidation LTV minus a safety buffer. Positions already close to liquidation cannot enter the unwind flow.
🏦 Stage 2: Position moves into the unwind escrow
A dedicated unwind escrow is deployed. Collateral shares transfer from the borrower's sub-account to the escrow first. Then the debt relationship is pulled into the escrow. The position is now isolated.
🪄 Stage 3: Virtual collateral replaces real collateral in one atomic step
The manager mints psTokens to the escrow. In a single atomic batch, the escrow deposits psToken as Euler collateral and withdraws the real RWA collateral back to the manager. Same bridging logic as wind, running in reverse. The psToken keeps the Euler position healthy while the real asset enters the redemption queue.
📤 Stage 4: Real collateral enters the redemption path
The manager sends the real RWA collateral through the Pareto adapter into the fund's redemption queue. The fund processes the redemption according to its normal notice period and dealing cycle.
🎟️ Stage 5: Receipt NFT is minted
After all escrow setup, debt pulling, collateral swapping, and adapter submission is complete, the system mints an ERC-721 Receipt NFT to the borrower. An NFT because every exit has unique parameters: size, fee, and path. It tracks the request through its lifecycle.
⏳ Stage 6: Operator settles when proceeds are available
Settlement liveness depends on an off-chain operator. When the fund settles and the adapter reports claimable assets, the operator calls settlement. The FIFO queue distributes proceeds in order: first request in gets settled first. Settlement correctness is enforced on-chain, but settlement liveness requires the operator call.
💸 Stage 7: Fees deducted, surplus distributed, debt repaid, virtual collateral removed
The NFT holder or operator calls fulfilment. Fees are computed and paid first: Keyring fee to the fee recipient, adapter fee to the adapter's recipient.
Any surplus after fees and debt is transferred to the borrower. The repay amount goes to the escrow. The escrow repays the Euler debt, withdraws psToken to the manager (which burns it), and transfers any remaining position to the caller's sub-account.
🚨 Stage 8: What happens if the escrow goes unhealthy during the wait
The settlement window can last days to weeks. If debt accrues faster than psToken collateral can sustain, the escrow breaches Euler's liquidation LTV.
A liquidation operator deploys a per-liquidation contract that executes Euler's native liquidation: seizes psToken collateral, settles debt, distributes surplus. The request is marked as liquidated and skipped during subsequent queue processing. Wind is configured to avoid this scenario. The unwind system includes a dedicated liquidation path for it.
Unwind TLDR
- health check passes
- collateral to escrow, debt pulled in
- psToken minted, real collateral swapped out atomically
- real collateral sent through Pareto for redemption
- Receipt NFT minted
- issuer redeems at next settlement window
- operator settles queue when proceeds arrive
- fees deducted first
- surplus transferred to borrower
- escrow repays Euler debt, psToken burns
- remaining position to caller's sub-account
Why this is an innovation for RWAs
The fund never sees the psToken. It settles subscriptions and redemptions the same way it always has. The psToken exists purely at the protocol layer. It keeps the Euler position collateralised while the real asset moves through the fund's settlement cycle. Virtual collateral that bridges DeFi's atomic execution with TradFi's async fund mechanics, then disappears.
Winding in uses psTokens that are pegged 1:1 to the debt asset (USDC in this case), whereas unwinding uses psTokens that are pegged 1:1 to the RWA asset (pACRDX in this case).
rwa [un]wind is coming.