Protocol Architecture
Marian is a set of nine core contracts on the Robinhood Chain - Testnet, wired through a single oracle registry and a shared risk engine. Every value-bearing token is ERC-20 compatible and every vault is ERC-4626 compliant.
Contract topology
┌───────────────┐ settle ┌─────────────────────┐
│ Custodian │────────────▶│ DividendDistributor │
│ Oracle (RWA) │ │ (streams USDC/blk) │
└───────┬───────┘ └──────────┬──────────┘
│ NAV │ pro-rata
▼ ▼
┌─────────────────┐ mint ┌─────────────────────┐
│ BasketVault │◀───────────│ User EOA │
│ (ERC-4626) │───shares──▶│ holds bMRN-SPx │
└────────┬────────┘ └──────────┬──────────┘
│ lockable │
▼ ▼
┌─────────────────┐ ┌─────────────────────┐
│ mLocker │──boost────▶│ RiskEngine │
│ (6–48 mo) │ │ computes HF, CF │
└────────┬────────┘ └──────────┬──────────┘
│ fee share │ liquidatable?
▼ ▼
┌─────────────────┐ ┌─────────────────────┐
│ FeeSplitter │◀──interest─│ BorrowMarket │
│ 70/20/10 │ │ (mints mUSD) │
└─────────────────┘ └─────────────────────┘Contracts
| Contract | Standard | Purpose | Upgradable |
|---|---|---|---|
| BasketVault | ERC-4626 | Holds tokenized equities, mints basket shares at NAV | UUPS proxy |
| DividendDistributor | ERC-4626 hook | Converts custodian cash → USDC → per-block stream | UUPS proxy |
| mLocker | ERC-721 | Non-transferable lock NFT, decay-weighted vote power | Immutable |
| MRN Token | ERC-20 | Governance / emissions, 1B cap | Immutable |
| Emissions | Custom | veBoost curve, 90-day linear vest | UUPS proxy |
| BorrowMarket | ERC-20 mUSD | Isolated per-basket debt market | UUPS proxy |
| RiskEngine | View | HF, CF, liquidation math | Immutable + params gov |
| FeeSplitter | Router | 70/20/10 revenue routing | Immutable |
| OracleRegistry | Chainlink+ | Median of 3 price feeds, 30s heartbeat | Immutable + feed gov |
Oracle stack
Every basket references three independent price feeds: (1) Chainlink CCIP, (2) Pyth network, (3) a Robinhood Chain - Testnet–native custodian oracle signed by the KYC-registered market maker. The RiskEngine consumes the median, which is only accepted if the max deviation across feeds is below 75 basis points.
P_accepted = median(P₁, P₂, P₃)
iff max|Pᵢ − Pⱼ| / median < 0.0075 ∀ i,jUpgrade governance
All UUPS proxies point at a 48-hour timelock controlled by veMRN holders. A quorum of 4% of vote-weighted supply is required to propose, and 50% + 1 of votes cast to pass. Immutable contracts (the MRN token itself, the RiskEngine core, and the FeeSplitter) have no upgrade path — only their parameter setters do.