smart-contracts/backlog/tasks/task-2 - Port-RiskTrancheMa...

1.8 KiB

id title status assignee created_date labels dependencies references priority
TASK-2 Port RiskTrancheManager to Solidity To Do
2026-04-03 21:38
solidity
core
risk
TASK-1
/home/jeffe/Github/myco-bonding-curve/src/primitives/risk_tranching.py
/home/jeffe/Github/myco-bonding-curve/param_sweep_v2.csv
high

Description

Translate src/primitives/risk_tranching.py to Solidity.

Core functions to implement:

  • deposit_collateral() — accept ERC-20 collateral into system
  • mint_tranche(tier, amount) — mint Senior/Mez/Junior tranche tokens
  • redeem_tranche(tier, amount) — burn tranche tokens, return collateral
  • distribute_yield(amount) — waterfall: Senior target first → Mez → Junior residual
  • apply_loss(amount) — reverse waterfall: Junior absorbs first → Mez → Senior
  • apply_collateral_change(new_total) — route gains/losses through proper waterfalls
  • check_liquidation() — flag tranches below min CR
  • rebalance_collateral() — redistribute backing across tranches

Key design decisions:

  • Each tranche is a separate ERC-20 (myUSD-S, myUSD-M, $MYCO-J)
  • Fixed-point math via WAD (1e18) — no floating point
  • Parameter sweep results: optimal SR=1.5, MZ=1.2 for medium vol
  • Storage: TrancheState struct per tier, total_collateral, cumulative yield/loss tracking
  • Access control: only authorized contracts (bonding curve, CCIP receiver) can call state-changing functions

Acceptance Criteria

  • #1 Senior/Mez/Junior tranche minting respects collateral ratios
  • #2 Yield waterfall distributes Senior-first correctly
  • #3 Loss absorption follows Junior-first correctly
  • #4 Liquidation flags trigger at correct CR thresholds
  • #5 100+ Foundry fuzz tests pass
  • #6 Gas benchmarks documented