Collateral (Energy/Carbon NFTs)

Scope & invariants:

  • This page specifies how PoV-backed tokens become collateral for credit on EDMA: We accept Energy (1 MWh) and Carbon (1 tCO₂e) tokens that passed PoV and One-Claim; we do not accept ETT (proof-only) or frozen/mirrored-invalid assets. Credit is extended in EDSD and repaid in EDSD. Nothing here weakens settlement law:

  • No EMT, no funds (Trade):

  • Must-fund before shipping (Top-up after Pre-Ship EMT):

  • One-Claim uniqueness:

  • Locked EDSD → Unlocked EDSD only on proof:

  • 50% of every protocol fee burns in EDM (on settle/release/retire, not on lending):

  • Bridges: collateral must be canonical on EDMA (not a wrapped representation). EDSD is platform-bound (no retail bridge).

A) Eligibility (what can be pledged)

  • Must be true:

    • PoV-minted token with One-Claim FINAL: see proofs on listing page.

    • Not FROZEN: no active revocation/mirror freeze.

    • Registry Mirror ACTIVE where program requires (I-REC/GO/VCM):

    • Not retired, not exported, not already pledged (single-pledge rule):

    • Fungibility bucket recognized (see below) and priced by oracles:

  • Not eligible:

    • ETT (proof-only), EMTs, wrapped/bridged representations, or tokens under dispute/freeze:

    • Tokens with insufficient oracle quality (illiquid buckets) or expired vintage where program disallows forward use:

  • Buckets (for valuation & LTV):

    • Carbon: program, method, region, vintage (e.g., VERRA/ARR/AMR/2026)

    • Energy: region, standard (e.g., DE/GO) or programmatic hourly → 1 MWh aggregates

B) Custody & pledge (how it’s held)

  • Vault custody (non-custodial smart contract): token is transferred to CollateralVault; becomes non-transferable until released.

  • Vault mints a Pledge Receipt (PR) to the borrower (non-transferable soulbound): recording tokenId, bucket, last_mark, cap_LTV, expiry.

  • No rehypothecation: Only the borrower can instruct release/repay; liquidator paths are controlled (see Liquidations spec).

  • One-Pledge ledger ensures a token cannot be pledged twice:

  • APIs:

    • POST /v1/defi/pledge { token_id } → { pledge_id, bucket }:

    • POST /v1/defi/release { pledge_id } (only when debt=0):

  • Events:

    • defi.pledge.created(pledgeId, tokenId, bucket):

    • defi.pledge.released(pledgeId):

C) Valuation & oracles (what it’s worth, safely)

  • Price sources (hierarchy):

    • On-platform TWAP (Tokens book) per bucket: volume-weighted over N hours (governed, default 72h).

    • Cross-venue quotes (if mirrored program has a public reference): normalized to EDSD.

    • Admin mark-to-model fallback (governed; haircuts ↑; used only if TWAP < min samples):

  • Quality gates:

    • Min prints per window, turnover, depth at ±Δ%, dispersion (stability): drive a Liquidity Score (LS 1..5).

    • Staleness SLO: price window ≤ 24h p95; if stale → LTV hard-capped at 20% or bucket disabled.

  • Mark function: mark = min(TWAP, last_trade × (1 − guardrail_bps)) with governance guardrails (e.g., 5–10% below last trade).

D) LTV bands & risk parameters (by bucket)

Bucket example

LS

Base LTV

Max LTV

Liq threshold (HF)

Haircut notes

CARB VERRA ARR AMR 2026

5

55%

60%

1.05

High liquidity & standard quality

CARB VERRA REDD+ LATAM 2025

4

50%

55%

1.08

Policy/quality variance risk

ENER GO DE

4

50%

55%

1.08

GO/REC parity, stable demand

ENER GO SG

3

45%

50%

1.10

Smaller book depth

Hourly attributes (24/7)

2

35%

40%

1.12

Short-dated; roll/aggregate risk

Long-tail buckets

1

0–25%

25%

1.15

By exception only

  • Concentration controls:

    • Per borrower: ≤ 30% of debt in one bucket, ≤ 50% in one program/region.

    • Per bucket: global utilization caps (e.g., $X notional).

  • Aging / eligibility:

    • Carbon vintages older than policy threshold (e.g., >7 years): get −5..10% LTV or disabled.

    • Frozen/mirror-invalid → LTV=0 until cleared.

E) Loan model (what you borrow, how it accrues)

  • Currency: EDSD only (platform stable).

  • Facility types:

    • Term: fixed tenor, bullet/milestone amortization

    • Revolving: redraw up to limit while HF ≥ min

  • Accrual: simple APR (governed grid by bucket/LS), debited daily to principal; repay any time.

  • Fees: origination/roll fees (from treasury half only); no impact on burns.

  • Health Factor (HF): HF = sum_i (V_i × LTV^max_i) / Debt; Margin call at HF ≤ 1.10, liquidation at HF ≤ 1.00 (or per-bucket stricter threshold).

  • APIs:

    • POST /v1/defi/borrow { pledge_id, amount_edsd } → checks HF, caps, LS:

    • POST /v1/defi/repay { loan_id, amount_edsd } → partial/Full:

    • GET /v1/defi/health { loan_id } → HF, marks, margin requirements:

F) Marking, calls & cures

  • Mark frequency: hourly recompute, event-driven on price moves, mirror/freeze events.

  • Margin call: HF ≤ call_threshold → webhook defi.margin.call with cure deadline (e.g., 24–48h).

  • Cure by: repay, add collateral, or swap buckets (if policy allows).

  • No cure: position enters partial liquidation up to HF restore (see Liquidations spec).

G) Where burns appear (and where they don’t)

  • No burns at pledge/borrow/repay/release:

  • Burns happen when tokens trade or retire (Tokens 4% → burn 2%) and when Trade milestones release (0.5%/stage → burn 0.25% until caps):

  • Lending fees, staking rewards, and grants source from the treasury half only.

H) Security & compliance levers

  • Freeze propagation: if a pledged token becomes FROZEN (revocation/mirror revoke), borrowing is blocked and HF recomputed; margin call may trigger.

  • KYC/KYB / sanctions: borrower & pledge owners must be whitelisted; custody moves logged.

  • Auditability: pledge → price → HF → borrow/repay → release is fully evented; ledgers export CSVs.

I) KPIs & SLOs (what we publish)

  • Oracle freshness (p95): ≤ 24h; > 2 feeds for top buckets

  • Liquidation loss rate: 0 (target; measured net of recovery)

  • Margin call cure rate: ≥ 90% within SLA

  • Utilization per bucket: within governance caps

  • Borrow APR spread vs LS: within governed grid; no out-of-band loans

J) Worked examples

  • 1) Carbon collateral (VERRA ARR 2026, LS=5):

    • Mark = $18/t, pledge 10,000 t → V = $180,000

    • Base LTV 55% → max debt $99,000 EDSD

    • Borrow $85,000 → HF = (180k×0.60)/85k ≈ 1.27 (safe)

    • Price drops to $15 → V=150k, HF=(150k×0.60)/85k ≈ 1.06 → margin call (cure: repay ~$5k or add ~1,900 t)

  • 2) Energy collateral (GO DE, LS=4):

    • Mark $50/MWh, pledge 2,000 MWh → V=$100,000

    • Base LTV 50% → max $50,000; borrow $45,000 → HF=(100k×0.55)/45k=1.22

    • Mirror freeze hits (registry issue) → LTV=0 during freeze → HF=0 → immediate margin requirement or partial liquidation.

K) Governance knobs (bounded)

  • Enable/disable buckets; set LS thresholds, LTV grids, HF thresholds, utilization caps:

  • Configure price oracle windows, sources, and fallback policies:

  • Set margin call cure windows and liquidation penalties (page 3):

  • Cannot: accept frozen/bridged/ETT; bypass PoV/One-Claim; discount burns; pledge the same token twice.

Drawing

Plain recap

Collateral on EDMA is PoV-true, oracle-valued, vault-held Energy/Carbon NFTs. Credit is in EDSD, sized by LTV bands per bucket and guarded by HF. Mirrors/freeze events and price marks flow straight into calls and cures; liquidations are partial and rule-based. None of it touches the burn engine: burns still happen only when assets settle, retire, or releases pay—always tied to proof.

Last updated