Status: Draft Last Updated: 2026-03-01
Executive Summary
The Non-Fungible Allocation Token Standard defines a system for bespoke capital deployment deals between Primes and Halos. Unlike LCTS (which pools users into shared generations), NFATS treats each deal as an individual, non-fungible position represented by an NFAT (Non-Fungible Allocation Token).
Capital flows through NFAT Facilities — smart contracts that define a "buybox" of acceptable deal parameters. Primes queue sUSDS into a Facility. The Halo (via an LPHA beacon, e.g. lpha-nfat) claims from queues when deals are struck, minting an NFAT that represents a claim on the capital deployment. Each NFAT represents a Halo Unit (liability side) — a claim on a Halo Book (asset side). The book is the bankruptcy-remote boundary: units sharing a book are pari passu on losses (unless tranched), while units on different books are fully isolated.
Deal terms (APY, duration, maturity conditions) are tracked offchain in the Synome, while the onchain NFAT tracks only custody and ownership. Book contents are tracked in the Synome via attestations from an independent Attestor operating the lpha-attest beacon.
Key principles:
- Onchain = custody, ownership, facility parameters
- Offchain (Synome) = deal terms, yield schedules, maturity conditions, book contents (via attestor)
- Halo Unit (NFAT) = liability side — a claim on a Halo Book
- Halo Book = asset side — a balanced ledger (assets = liabilities) backing one or more units; bankruptcy-remote boundary
Why NFATS Exists
NFATS solves a different problem than LCTS:
| Scenario | Best Fit |
|---|---|
| Many users, same terms, shared capacity | LCTS |
| Individual deals, bespoke terms, named counterparties | NFATS |
When to Use NFATS
- Asset manager partnerships with negotiated terms
- Deals where each depositor has different yield, duration, or conditions
- Situations requiring transferable positions (secondary market, collateralization)
- Regulated contexts where counterparty identity matters
When to Use LCTS
- Open participation with uniform terms
- Capacity-constrained strategies where fair distribution matters
- Scenarios where fungibility and pooling are desirable
Halo Class Structure
An NFAT Facility is a Halo Class — containing both Halo Units (liability side — the NFATs) and Halo Books (asset side — the balanced ledgers backing those units). All share the same smart contract infrastructure and legal framework (buybox).
What a Halo Class (NFAT Facility) Shares
| Component | Description |
|---|---|
| PAU | Controller + ALMProxy + RateLimits for the Facility |
| LPHA Beacons | lpha-nfat manages NFAT claims and redemptions; lpha-attest posts attestations |
| Legal Buybox | Acceptable parameter ranges, counterparty requirements, recourse mechanisms |
| Queue + Redeem Contracts | Shared infrastructure for capital flows |
Halo Units (Liability Side)
Each NFAT is a Halo Unit — a claim on a Halo Book. Units represent the liability side of the Halo Class: what the Halo owes to NFAT holders.
| Parameter | Variation Within Buybox |
|---|---|
| Duration | e.g., 6-12 months vs 12-24 months |
| Size | Different notional amounts per deal |
| APY | Within the facility's acceptable range |
| Counterparty | Different Primes for each NFAT |
| Specific Terms | Bespoke conditions within buybox constraints |
Halo Books (Asset Side)
Each Halo Book is a bankruptcy-remote balanced ledger (assets = liabilities) that backs one or more Halo Units. Books represent the asset side of the Halo Class: what the Halo actually holds.
| Property | Description |
|---|---|
| Bankruptcy remoteness | The book is the isolation boundary — units sharing a book share fate; units on different books are fully isolated |
| Loss distribution | Pari passu across all units on the same book (unless tranched) |
| Privacy | Multiple assets can be blended in a book, preventing outsiders from inferring individual loan terms from NFAT data |
| Composition | Whole assets per book — a single asset is not split across books |
| Recursive | A book can hold Halo Units from other books as assets, enabling structured layering |
Unit-to-Book Mapping
The mapping between units and books is flexible:
| Pattern | Description | Use Case |
|---|---|---|
| 1:1 | One unit, one book, one asset | Simple bilateral deal |
| Many units : one book | Multiple NFATs backed by the same blended collateral pool | Privacy protection — individual loan terms can't be inferred |
| Recursive | Assets in Book A are Halo Units from Book B | Structured products, tranching across books |
Privacy example: A book holds 5 different loans blended together. 10 NFATs are issued against the book. Each NFAT holder knows their own terms (APY, duration, size) but cannot determine the individual terms of the 5 underlying loans — only the blended risk characteristics as attested by the Attestor.
Terms Source
NFAT terms can come from two sources:
| Mode | Description |
|---|---|
| General buybox | Halo Class defines acceptable ranges; individual units fall within the buybox without predetermined terms. Halo has flexibility in structuring. |
| Ecosystem accord | Pre-negotiated agreement specifying individual unit and book terms. Overrides the general buybox. More constrained, more predictable for the Prime. |
This structure enables scalable bespoke deals: one legal framework, one beacon-operated workflow, many individual positions with varying terms, and flexible asset-side composition with built-in privacy.
System Architecture
┌─────────────────────────────────────────────────────────────────────────┐
│ HALO │
│ │
│ Operates one or more NFAT Facilities (Halo Classes) │
│ Each Facility = separate smart contract with its own buybox │
│ │
└────────────────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ NFAT Facility A │ │ NFAT Facility B │ │ NFAT Facility C │
│ (Senior Secured) │ │ (Mezzanine) │ │ (Structured) │
│ │ │ │ │ │
│ Buybox params: │ │ Buybox params: │ │ Buybox params: │
│ - 6-12mo term │ │ - 12-24mo term │ │ - Custom │
│ - 8-12% APY │ │ - 12-18% APY │ │ │
│ │ │ │ │ │
│ Queue: │ │ Queue: │ │ Queue: │
│ - Prime X: 50M │ │ - Prime Y: 20M │ │ - Prime X: 10M │
│ - Prime Y: 30M │ │ │ │ │
│ │ │ │ │ │
│ Redeem Contract: │ │ Redeem Contract: │ │ Redeem Contract: │
│ (Halo deposits │ │ (funds awaiting │ │ (funds awaiting │
│ funds here) │ │ claim) │ │ claim) │
└──────────┬──────────┘ └──────────┬──────────┘ └──────────┬──────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ MINTED NFATs │
│ │
│ NFAT #1: 25M, Prime X, Facility A → Halo Unit → Book α │
│ NFAT #2: 15M, Prime Y, Facility A → Halo Unit → Book α │
│ NFAT #3: 20M, Prime Y, Facility B → Halo Unit → Book β │
│ │
│ Units on same book (α) are pari passu on losses │
│ Units on different books (α vs β) are fully isolated │
│ Terms stored in Synome (APY, maturity, payment schedule, book) │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Redemption Flow (Bullet Loan):
At Maturity:
HALO FACILITY PRIME
│ │ │
│ 1. Deposit funds into │ │
│ redeem contract │ │
│ ─────────────────────────► │ │
│ (required, penalties │ │
│ if late) │ │
│ │ │
│ │ 2. Call redeem function, │
│ │ specify NFAT │
│ │ ◄───────────────────────── │
│ │ │
│ │ 3. NFAT burned, │
│ │ funds released │
│ │ ─────────────────────────► │
│ │ │
Components
1. NFAT Facility
Each NFAT Facility is a PAU (Controller + ALMProxy + RateLimits) with NFAT-specific extensions. The PAU holds custody of all capital flowing through that Facility; the NFAT extensions handle queue mechanics and token minting.
NFAT Facility = PAU + NFAT Extensions
├── Controller (rate limits on claims, redemptions)
├── ALMProxy (holds custody of sUSDS from all NFATs in this Facility)
├── RateLimits (standard rate limit infrastructure)
│
└── NFAT Extensions:
├── Queue contract (share-based, per-depositor)
├── NFAT minting (ERC-721)
└── Redeem contract
Facility parameters (buybox):
- Asset type / strategy description
- Term range (e.g., 6-12 months)
- APY range (e.g., 8-12%)
- Risk tier / rating requirements
- Any other constraints the Halo commits to
Onboarding (open question):
Note: The exact onboarding mechanism for Primes to Facilities is an open design question. The flow is: Prime synomic governance approves the Facility → Prime can deposit into queue → Halo can claim. The specific governance and Configurator integration path needs further specification.
Key behaviors:
- One PAU per Facility
- Each Facility has its own queue contract and redeem contract
- All capital from that Facility's NFATs flows through the Facility's ALMProxy
2. Facility Queue
The queue uses share-based accounting congruent with LCTS, but without generations (since claiming is selective, not batch).
Queue State:
| State | Description |
|---|---|
| totalShares | Total shares outstanding across all depositors |
| totalUnderlying | Total sUSDS held in the queue |
| shares[address] | Per-depositor share balance (non-transferable) |
Subscribe (deposit):
If totalShares == 0:
shares = amount (1:1)
Else:
shares = amount × totalShares ÷ totalUnderlying
Update: totalShares, totalUnderlying, user shares
Transfer: sUSDS from depositor to queue
Withdraw:
underlyingOut = shares × totalUnderlying ÷ totalShares
Update: totalShares -= shares, totalUnderlying -= underlyingOut, user shares = 0
Transfer: sUSDS from queue to depositor
- Available anytime (no lock period — unlike LCTS, there's no batch settlement lock window)
- Complete withdrawal only (like LCTS "claim and exit")
Claim (lpha-nfat beacon only):
claim(address target, uint256 amount)
sharesToBurn = amount × totalShares ÷ totalUnderlying
Require: target has sufficient shares
Update: totalShares -= sharesToBurn, totalUnderlying -= amount, target shares -= sharesToBurn
Transfer: sUSDS from queue to Facility ALMProxy
Mint: NFAT to target
Comparison with LCTS:
| Aspect | LCTS | NFATS Queue |
|---|---|---|
| Share calculation | amount × totalShares ÷ totalUnderlying | same |
| Shares transferable | No (internal accounting) | No (internal accounting) |
| Generations | Yes (generation-based batch settlement) | No (selective claiming) |
| Lock period | Yes (13:00 → 16:00 UTC daily) | No |
| Settlement | Batch, proportional to all | Selective: Halo picks (address, amount) |
| Output | Rewards accrue over time | NFAT minted at claim |
3. Deal NFAT (ERC-721)
Minted when Halo claims from a queue. Each NFAT is a Halo Unit (liability side) — a claim on a Halo Book (asset side). Bankruptcy remoteness is at the book level: units sharing a book are pari passu on losses; units on different books are fully isolated.
Onchain data (minimal):
| Field | Description |
|---|---|
tokenId |
Unique identifier |
facility |
Reference to the NFAT Facility contract |
principal |
Original sUSDS amount claimed |
depositor |
Original Prime address |
mintedAt |
Timestamp when deal was struck |
Offchain data (Synome):
- Deal terms (APY, duration, special conditions)
- Payment schedule (bullet, amortizing, periodic interest)
- Maturity date and conditions
- Book assignment (which Halo Book backs this unit)
- Book contents (via attestor — risk characteristics, not individual borrower details)
Transferability:
- NFATs are transferable by default
- Halo can optionally restrict transfers to whitelisted addresses (for KYC/regulatory requirements)
4. Redeem Contract
Each Facility has a redeem contract where the Halo deposits funds to make them available for Prime redemption.
Flow:
- Halo deposits principal + yield into redeem contract (required at maturity, penalties if late)
- Prime calls redeem function, specifying which NFAT
- NFAT is burned (or spent for partial redemptions)
- Funds released to Prime
Key behaviors:
- Halo must fund before Prime can redeem
- Prime controls timing of actual redemption (can delay past maturity if desired)
- NFAT acts as a "claim ticket" — burning it releases the funds
5. Redemption and Rewards
Redemption is fundamentally a two-way exchange: the NFAT flows one direction, cash (principal + yield) flows the other. The typical flow:
- Halo funds the redeem contract — required at maturity, penalties if late
- Prime burns NFAT to claim — at their convenience, can delay past maturity
The NFAT acts as a claim ticket: Halo loads funds, Prime burns ticket to collect.
Payment Patterns:
| Pattern | Halo Action | Prime Action | NFAT State |
|---|---|---|---|
| Bullet loan | Deposit principal + yield at maturity | Burn NFAT to claim | Burned |
| Amortizing loan | Deposit each payment as due | Spend NFAT to claim each payment | Principal reduced each time |
| Periodic interest | Deposit interest payments periodically | Claim interest (NFAT unchanged) | Active until final redemption |
For multi-payment loans:
- NFAT is "spent" rather than burned — recorded principal is reduced
- Each payment: Halo deposits → Prime spends partial NFAT → receives that tranche
- Final payment: Prime burns remaining NFAT
Extensible Payment Delivery
The patterns above describe the core mechanisms, but payment delivery should be extensible to support additional flows — including direct transfers from the Halo's PAU to the Prime's PAU where the Prime takes no action and simply receives funds. The exact mechanics of extended payment flows are intentionally left undefined for now; the standard should accommodate them without requiring changes to the core NFAT structure.
Halo Books and the Attestor
Book Lifecycle
Books progress through a defined set of phases. Each phase transition requires action from specific beacons.
┌──────────┐ NFATs swept in ┌──────────┐
│ CREATED │ ─────────────────────▶│ FILLING │
│ (empty) │ │ (USDS) │◄─── can keep adding NFATs
└──────────┘ └────┬─────┘
│
lpha-attest posts attestation
THEN lpha-nfat changes status
│
▼
┌───────────┐
│ DEPLOYING │ Schrödinger's risk
│(obfuscated)│ High CRR
└─────┬─────┘
│
lpha-attest posts "at rest" attestation
│
▼
┌──────────┐
│ AT REST │ Confirmed characteristics
│(deployed) │ Medium CRR
└─────┬─────┘
│
Ongoing re-attestation
(cadence per asset type, affects CRR)
│
Assets mature / return
│
▼
┌──────────┐
│ UNWINDING│ Halo funds Redeem Contract
└─────┬─────┘
│
NFAT holders burn to claim
│
▼
┌──────────┐
│ CLOSED │
└──────────┘
Phase: Created — Book exists but is empty. No assets, no units.
Phase: Filling — NFAT subscriptions are swept into the book. Each sweep mints an NFAT (Halo Unit) and adds the capital to the book's asset side. During this phase, the book holds USDS earning agent rate — fully transparent and trackable in the Synome. Additional NFATs can be added as subscriptions come in.
Phase: Deploying (obfuscated) — Assets are offboarded (USDS → USDC → deployed to borrowers). The Synome does not receive precise real-time updates about which specific assets have been deployed, to whom, or when. This is intentional: blending multiple deployments in a book prevents outsiders from inferring individual loan terms. From the Synome's perspective, the assets are in a "Schrödinger's risk" state — they could be anywhere from still cash to fully deployed. The deployment phase has a higher CRR to compensate for this uncertainty.
Phase: At Rest — Fully deployed. The attestor has confirmed the risk characteristics of the deployed assets. The Synome knows the risk profile (credit quality, duration, asset type) but not individual borrower identities or specific deal terms. CRR is lower than during deployment but still reflects the risk characteristics of the deployed assets.
Phase: Unwinding — Assets return to the book. Halo funds the Redeem Contract from book proceeds. NFAT holders burn to claim.
Phase: Closed — All units redeemed, book wound down.
The Attestor and lpha-attest
The Attestor is a company whitelisted by Sky governance to provide risk attestations about book contents. It operates the lpha-attest beacon.
| Property | Description |
|---|---|
| Type | LPHA (Low Power, High Authority) — deterministic, rule-based |
| Operator | Attestor company (whitelisted by Sky governance) |
| Capability | Write attestations into Synome |
| Cannot | Move capital, mint NFATs, change book status directly |
| Accountability | Subject to its own govops supply chain of checks and audits |
Two-beacon deployment gate: Neither lpha-attest nor lpha-nfat can trigger deployment alone. The attestor must first post an attestation into the Synome via lpha-attest; only then can lpha-nfat change the book's status. This separation of concerns ensures independent validation.
ATTESTOR SYNOME HALO
(lpha-attest) (lpha-nfat)
│ │ │
│ 1. Upload attestation │ │
│ "Book X: assets will │ │
│ deploy into [characteristics]│ │
│ over [timeframe], legal │ │
│ rails confirmed" │ │
│ ─────────────────────────────▶│ │
│ │ │
│ │ 2. Attestation present ✓ │
│ │ lpha-nfat can now │
│ │ change book status │
│ │ ────────────────────────────▶│
│ │ │
│ │ 3. Book → deploying │
│ │ ◀────────────────────────────│
│ │ │
Attestation types:
| Timing | Attestation Content |
|---|---|
| Pre-deployment | "Over the next [timeframe], assets will deploy into assets with [risk characteristics]. Legal rails analyzed and confirmed." |
| Post-deployment | "Assets are now deployed and at rest with [confirmed risk characteristics]." |
| Ongoing (at rest) | Periodic re-attestation per asset type. Cadence varies by asset and directly affects CRR — more frequent attestation enables lower CRR. |
CRR Incentive Structure
The risk model creates economic incentives that balance privacy against transparency without mandating specific behavior:
| Book Phase | CRR Impact | Incentive Created |
|---|---|---|
| Filling (USDS) | Low CRR | Known asset, no ambiguity |
| Deploying (obfuscated) | High CRR | Minimize deployment duration; stagger deployments across books |
| At Rest (attested) | Medium CRR | Maintain attestation cadence; encourage frequent re-attestation |
| Missed re-attestation | CRR increases | Prompt re-attestation to restore lower capital charge |
CRR calibration ownership: The qualitative incentive structure above (Low/High/Medium) is defined here. Numeric CRR values for each book-phase are owned by the risk-framework (
risk-framework/capital-formula.md) and will be published there when calibration is complete.
Primes and Halos are economically incentivized to keep the obfuscated deployment phase as short as possible (reducing CRR cost) while still delivering adequate borrower privacy.
Deal Lifecycle
1. Onboarding
- Prime synomic governance approves deployment into NFAT Facility
- Govops onboards Facility via configurator (rate limits) or timelock (BEAMstate)
2. Queue
- Prime deposits sUSDS into their queue within the Facility
- Queue balance increases; Prime can withdraw anytime before claim
3. Book creation
- Halo creates a new book (or uses an existing book in filling phase)
4. Claim (deal struck)
- Halo (via
lpha-nfat) claims from Prime's queue (specifying amount) - sUSDS transferred to book (via Facility ALMProxy)
- NFAT minted to Prime (Halo Unit — claim on the book)
- Deal terms recorded in Synome (APY, term, maturity date, book assignment)
- Queue balance reduced by claimed amount
- Additional NFATs may be swept into the same book over time
5. Attestation and deployment
- Attestor uploads pre-deployment attestation via
lpha-attest(risk characteristics, timeframe, legal confirmation) lpha-nfattransitions book to deploying status- Capital offboarded (USDS → USDC → deployed to borrowers)
- Deployment is obfuscated — Synome does not track individual deployments in real time
- Higher CRR applies during this phase
6. At rest
- Attestor uploads post-deployment attestation confirming deployed asset characteristics
- Book transitions to at-rest status; CRR adjusts downward
- Ongoing re-attestation at asset-type-specific cadence
7. Lifecycle
- For bullet loans: nothing happens until maturity
- For other structures: Halo deposits payments per Synome schedule, Prime claims as available
- Halo must maintain liquidity in the book to fund maturing units
- NFAT holder can transfer/sell position at any time (subject to whitelist if enabled)
8. Maturity
- Halo deposits principal + yield into Facility redeem contract (required, penalties if late)
- Prime burns NFAT to claim funds (at their convenience)
- Deal closed; if all units on a book are redeemed, book closes
Behaviors
Facility Queue Behaviors
Prime actions:
- Deposit: Prime adds sUSDS to their queue in a Facility
- Withdraw: Prime removes sUSDS from their queue (only possible before Halo claims)
- View balance: Anyone can check the queued balance for any Prime in any Facility
NFAT Behaviors
Halo actions (via lpha-nfat):
- Claim: Take sUSDS from a Prime's queue and mint an NFAT
- Specifies: which Prime, how much to claim
- Results in: sUSDS moves to Halo, new NFAT minted, Synome records deal terms
- Fund redeem: Deposit funds into Facility redeem contract
- Specifies: which NFAT, amount (principal + yield)
- Results in: funds available for Prime to claim
- Required at maturity, penalties if late
Prime/Holder actions:
- Redeem (burn): Burn NFAT to claim funds from redeem contract
- Specifies: which NFAT
- Results in: NFAT burned, funds transferred to holder
- Only works if Halo has funded the redemption
- Redeem (spend): Spend partial NFAT to claim a payment (for multi-payment loans)
- Specifies: which NFAT, payment amount
- Results in: NFAT principal reduced, funds transferred to holder
- Transfer: Transfer NFAT to another address (standard ERC-721)
- New holder inherits all rights (future payments, redemption)
View functions:
- Get queue balance for a Prime in a Facility
- Get principal amount for an NFAT
- Get original depositor for an NFAT
- Get mint timestamp for an NFAT
- Get Facility reference for an NFAT
- Get funded amount available for redemption
Optional: Transfer Restrictions
- Halo can enable a whitelist mode where only approved addresses can receive NFAT transfers
- Halo can add/remove addresses from the whitelist
- When whitelist is active, transfers to non-whitelisted addresses are blocked
Scenarios
Scenario 1: Basic Bullet Loan (Happy Path)
Setup: Prime X wants to deploy into Halo 123's senior secured Facility.
Onboarding
- Prime X synomic governance approves NFAT Facility 123
- Govops sets rate limit of 100M for Prime X in Facility 123
Queue
- Prime X deposits 50M sUSDS into Facility 123 queue
- Queue balance: 50M
Claim
- Halo 123
lpha-nfatclaims 25M from Prime X's queue - NFAT #1 minted to Prime X (25M principal)
- Synome records: 6-month term, 10% APY, maturity 2025-07-15
- Queue balance: 25M remaining
- Halo 123
Lifecycle
- Nothing happens (bullet loan)
- Prime X could transfer NFAT #1 if desired
Maturity (2025-07-15)
- Halo 123 deposits 26.25M sUSDS into Facility 123 redeem contract (25M principal + 1.25M yield)
- Prime X burns NFAT #1
- Prime X receives 26.25M sUSDS
Result: Prime X deployed 25M for 6 months, received 10% APY.
Scenario 2: Partial Queue Claim
Setup: Prime X has 50M queued, Halo only wants 30M.
- Prime X deposits 50M into Facility queue
- Halo claims 30M → NFAT #1 minted (30M principal)
- Prime X still has 20M in queue
- Later, Halo claims another 15M → NFAT #2 minted (15M principal)
- Prime X withdraws remaining 5M from queue
Result: Prime X holds two separate NFATs from same Facility, each representing a claim on a distinct Halo Unit.
Scenario 3: Prime Withdraws Before Claim
Setup: Prime X queues funds but changes their mind.
- Prime X deposits 50M into Facility 123 queue
- Market conditions change; Prime X wants capital elsewhere
- Prime X withdraws 50M from queue (Halo hasn't claimed yet)
- Queue balance: 0
Result: No deal struck, Prime X retains full capital. Queue is non-binding until claimed.
Scenario 4: Amortizing Loan (Multi-Payment)
Setup: NFAT with quarterly principal + interest payments over 12 months.
Claim
- Halo claims 40M from Prime X queue
- NFAT #1 minted (40M principal)
- Synome records: 4 quarterly payments of 10M principal + interest
Q1 Payment
- Halo deposits 10.8M (10M principal + 0.8M interest)
- Prime X spends NFAT #1 to claim payment
- NFAT #1 principal reduced to 30M
Q2, Q3 Payments
- Same pattern; NFAT principal reduces to 20M, then 10M
Q4 Final Payment
- Halo deposits 10.8M
- Prime X burns NFAT #1 (final redemption)
- NFAT #1 destroyed
Result: Amortizing structure with NFAT "spent" over time rather than burned at once.
Scenario 5: NFAT Transfer (Secondary Market)
Setup: Prime X holds an NFAT but wants liquidity before maturity.
- Prime X holds NFAT #1 (25M principal, 4 months remaining, 10% APY)
- Prime Y offers to buy NFAT #1 for 25.5M (slight premium)
- Prime X transfers NFAT #1 to Prime Y (standard ERC-721 transfer)
- At maturity, Halo funds redemption
- Prime Y burns NFAT #1 and receives 26.25M
Result: Prime X exits early with small profit; Prime Y earns yield for remaining term.
Scenario 6: Halo Late on Funding (Penalty)
Setup: Halo doesn't fund redemption by maturity date.
- NFAT #1 matures on 2025-07-15
- Halo fails to deposit funds by maturity
- Penalty mechanism triggers (defined in Synome/Facility terms)
- Halo deposits funds on 2025-07-20 (5 days late) + penalty amount
- Prime X burns NFAT and receives principal + yield + penalty
Result: Halo penalized for late funding; Prime made whole plus compensation.
Scenario 7: Prime Delays Redemption
Setup: Halo funds on time, but Prime doesn't claim immediately.
- NFAT #1 matures on 2025-07-15
- Halo deposits 26.25M into redeem contract on 2025-07-14
- Prime X is busy / wants to batch claims / doesn't need funds yet
- Prime X burns NFAT #1 on 2025-08-01
Result: No penalty to Prime for delayed claim. Funds sit in redeem contract until claimed.
Scenario 8: Multiple Primes, Same Facility
Setup: Two Primes deploy into the same Facility.
- Prime X deposits 50M into Facility 123 queue
- Prime Y deposits 30M into Facility 123 queue
- Halo claims 25M from Prime X → NFAT #1
- Halo claims 30M from Prime Y → NFAT #2
- Halo claims another 25M from Prime X → NFAT #3
Result: Three distinct NFATs, each representing a claim on a separate Halo Unit, all from same Facility.
Scenario 9: Prime Deploys Across Multiple Facilities
Setup: Prime X wants exposure to different risk profiles.
- Prime X onboards to Facility A (senior secured, 8% APY) and Facility B (mezz, 14% APY)
- Prime X deposits 30M into Facility A queue
- Prime X deposits 10M into Facility B queue
- Halo claims from both queues
- Prime X holds NFAT from Facility A (lower risk) and NFAT from Facility B (higher risk)
Result: Prime X has diversified exposure across multiple Facilities/strategies.
Scenario 10: Transfer Restriction (Whitelist)
Setup: Facility has KYC requirements; transfers restricted to approved addresses.
- Facility 123 has whitelist enabled
- Prime X (whitelisted) receives NFAT #1
- Prime X tries to transfer to Random Address → blocked
- Prime X requests Prime Y be added to whitelist
- Halo adds Prime Y to whitelist
- Prime X transfers NFAT #1 to Prime Y → succeeds
Result: Transfers only between KYC'd/approved parties.
Scenario 11: Halo Never Funds Redemption (Default)
Setup: Halo fails to fund and doesn't respond.
- NFAT #1 matures on 2025-07-15
- Halo doesn't fund redemption
- Grace period passes, penalties accumulate
- Halo still doesn't fund
- Default procedures trigger (defined in Facility/Synome terms)
- Recovery process initiated (collateral liquidation, insurance, etc.)
Result: Default handling per agreed terms. NFAT holder has claim on recovery proceeds.
Scenario 12: Queue While Holding Existing NFAT
Setup: Prime wants to deploy more while already holding an NFAT.
- Prime X holds NFAT #1 (25M) from previous claim
- Prime X deposits another 20M into same Facility queue
- Halo claims 20M → NFAT #2 minted
- Prime X now holds NFAT #1 and NFAT #2 (claims on separate Halo Units)
Result: No limit on concurrent positions; each NFAT is independent.
NFATS vs LCTS Comparison
| Aspect | LCTS | NFATS |
|---|---|---|
| Model | Pool / ETF | Individual deals |
| Position type | Fungible shares | Non-fungible NFAT |
| Terms | Same for all in generation | Bespoke per deal |
| Queue | Shared across generation | Individual per depositor |
| Capacity allocation | Proportional distribution | Per-deal (Halo decides) |
| Settlement | Batch (daily cycle) | Per-deal (anytime) |
| Transferability | Non-transferable shares | Transferable NFAT (optionally restricted) |
| Exit before settlement | Withdraw from active generation | Withdraw from queue before claim |
| Redemption initiation | Holder-initiated only | Either party (request/fulfill or direct) |
| Reward mechanism | rewardPerToken accumulator | Flexible (offchain-driven) |
| Onchain complexity | Higher (generations, settlement) | Lower (queue + NFAT) |
| Offchain complexity | Lower (uniform terms) | Higher (per-deal tracking) |
NFATS as RiverUSDS Superset
NFATS is designed to cover all RiverUSDS (ERC-7540 async vault) use cases when deposits are pre-agreed and tokens have transfer restrictions:
| RiverUSDS Feature | NFATS Equivalent |
|---|---|
maxDeposit whitelist (pre-agreed caps) |
Individual queue + Halo claim |
| Transfer restrictions | Optional whitelist mode |
requestRedeem → fulfillRequest → withdraw |
requestRedeem → fulfillRedeem (Pattern B) |
Periodic rewards (grantRewards → getReward) |
Pattern C: Periodic Rewards |
Async rewards (requestReward → fulfill → claim) |
Pattern D: Claimable Rewards |
| Fungible shares (same terms) | Each deal is an NFAT (explicit non-fungibility) |
Key insight: Redemption is a two-way exchange — NFAT in one direction, cash out the other. Either party can initiate by putting their side in first. This matches ERC-7540's request/fulfill pattern while also supporting Halo-initiated redemptions.
When all depositors have identical terms and transfer restrictions, NFATS effectively behaves like a restricted ERC-7540 vault — but with the flexibility to support bespoke terms per position when needed.
Integration Notes
Halo LPHA Beacon (lpha-nfat)
TBD — lpha-nfat beacon integration for automated claims, reward distribution, and redemptions.
ALM Controller Compatibility
NFATS requires custom ALM controller integration (similar to LCTS). The Halo's ALMProxy holds claimed sUSDS and sources redemption/reward payments.
Halo Artifact
Deal terms should be recorded in the Halo Artifact for transparency and auditability. The NFAT's tokenId serves as the key linking onchain position to offchain terms.
Design Rationale
Why Individual Queues?
Shared queues (like LCTS generations) make sense when all participants receive identical treatment. For bespoke deals, individual queues:
- Allow depositors to signal interest without commitment
- Let the Halo selectively accept deals
- Avoid complexity of proportional distribution
- Enable partial claims (multiple deals with same depositor)
Why NFATs?
ERC-20 tokens imply fungibility — any token is interchangeable with any other. When deals have different terms, forcing them into a fungible token creates friction:
- Transfer restrictions feel like hacks
- Per-holder accounting becomes complex
- The token doesn't represent what it claims to
NFATs make the non-fungibility explicit:
- Each position is clearly unique
- Transfers are natural (new holder inherits the deal)
- Secondary markets can price deals individually
- No pretense of fungibility
Why Offchain Terms?
Putting all deal terms onchain would:
- Increase gas costs significantly
- Reduce flexibility for complex arrangements
- Require contract upgrades for new term types
Offchain terms with onchain custody provides:
- Maximum flexibility for bespoke arrangements
- Simple, auditable onchain contracts
- Easy extension to new deal structures
Wrapped NFATs (Fractionalization)
An NFAT can optionally be wrapped in a fungible ERC-20 token, allowing the deal position to be split up and sold in pieces.
How It Works
- The NFAT holder deposits their NFAT into a wrapper contract
- The wrapper mints fungible tokens representing fractional ownership of that specific NFAT
- Fractional token holders can trade their shares freely
- When the NFAT receives rewards or is redeemed, proceeds are distributed proportionally to fractional holders
Use Cases
- Liquidity: NFAT holder wants partial liquidity without selling the entire position
- Syndication: Multiple parties want exposure to a single deal
- Smaller denominations: Large deals can be broken into accessible pieces
- Secondary markets: Fungible tokens are easier to trade on existing DEX infrastructure
Key Characteristics
- Each wrapped NFAT has its own separate fungible token (not pooled across deals)
- The wrapper contract becomes the NFAT holder and receives all rewards/redemptions
- Fractional holders claim their proportional share from the wrapper
- Wrapping is optional — NFATs work fine without it
Relationship to NFATS
| Aspect | Unwrapped NFAT | Wrapped NFAT |
|---|---|---|
| Ownership | Single holder | Multiple fractional holders |
| Transferability | Whole position only | Fractional shares tradeable |
| Rewards | Direct to holder | Via wrapper to fractional holders |
| Complexity | Simple | Additional wrapper contract |
Implementation Notes
- Wrapper is a separate contract, not part of core NFATS
- Can be deployed per-NFAT or as a factory pattern
- Reward claiming and redemption flows need to account for wrapper as intermediary
- Transfer restrictions on the underlying NFAT (if any) apply to the wrapper depositing/withdrawing
Related Documents
| Document | Relationship |
|---|---|
term-halo.md |
Business overview of Term Halos using NFATS |
lcts.md |
Alternative token standard for pooled, fungible positions |
sentinel-network.md |
lpha-nfat beacon context (LPHA) and relationship to sentinels |
portfolio-halo.md |
Portfolio Halo (LCTS-based alternative) |
beacon-framework.md |
lpha-nfat and lpha-attest as LPHA beacons |
Document Version: 0.3