Skip to content

Repository files navigation

Strata

Tranched real-world-asset yield on Mantle, managed end-to-end by five autonomous agents with on-chain identities, verifiable decisions, and a typed event bus connecting them.

Mantle Turing Test Hackathon 2026 submission. Target tracks: AI x RWA (First Prize) and Grand Champion.

Try it

The product in one line

One pool of yield, sliced into three tiers. Pick the tier that fits your risk. Watch every move the protocol makes on-chain.

Why this matters

Three problems stack on top of each other in RWA-on-chain today:

  1. Risk pricing is opaque. A user staring at a 10% APY pool has no way to tell whether the protocol is hedged, concentrated, or about to depeg. The pitch is yield; the receipts are silent.
  2. Active management is off-chain. Treasuries, hedge desks, and compliance officers exist, but their decisions land as Discord posts and PDF disclosures rather than queryable events.
  3. Agent identity is informal. "An autonomous strategy" usually means a hot wallet running a script. Anyone can run a script. Few can prove which one ran, on what inputs, under what declared rules.

Strata's bet: if every step in the active-management loop is an on-chain event signed by an agent that owns an ERC-8004 identity NFT, and every off-chain artifact is pinned with a CID that the chain references, you get a yield product whose risk decisions are as auditable as a smart contract.

How the cashflow is split

Senior takes yield first and absorbs loss last. Junior takes yield last and absorbs loss first. Mezzanine sits in between.

flowchart TD
  subgraph BASKET[Basket of yield-bearing assets]
    A1[Ondo USDY]
    A2[Ethena sUSDe]
    A3[mETH + Mantle Vault]
    A4[CIAN strategies]
    A5[LP positions]
    A6[Mortgage CMO sleeve, demo]
  end

  BASKET --> Y[Total cashflow]

  Y -->|Yield distributed top-down| S[Senior tranche, ~5-6% target]
  Y --> M[Mezzanine tranche, ~8-12% target]
  Y --> J[Junior tranche, high variance + residual upside]

  LOSS[Losses absorbed bottom-up] -.-> J
  J -.-> M
  M -.-> S
Loading

Each tranche is its own ERC-20. You self-select into the one that matches your risk appetite and regulatory context.

System architecture

Five off-chain agents do the work an asset manager, a risk desk, a hedging desk, and a compliance officer would do in a traditional shop. They communicate through one shared on-chain event bus. Capital lives in a separate vault contract that only acts on cleared proposals.

flowchart LR
  subgraph EXTERNAL[External data]
    DL[DefiLlama]
    CG[CoinGecko]
    NA[Nansen]
  end

  subgraph VENUE[Hedge venue]
    BY[Byreal Perps]
  end

  subgraph OFFCHAIN[Off-chain agent workers]
    SC[Scout]
    AR[Architect]
    SE[Sentinel]
    OP[Operator]
    CO[Compliance]
  end

  subgraph IPFS[IPFS via Lighthouse]
    YM[Yield Maps]
    SD[Strategy docs]
    RH[Reasoning hashes]
  end

  subgraph ONCHAIN[On-chain, Mantle]
    BUS[AgentEventBus]
    ID[ERC-8004 Identity Registry]
    VAULT[TrancheVault]
    CR[ComplianceRegistry]
  end

  DL --> SC
  CG --> SC
  NA --> SC
  BY <--> OP

  SC --> YM
  AR --> RH
  SE --> RH
  OP --> RH

  SC -->|publishYieldMap| BUS
  AR -->|proposeAllocation| BUS
  SE -->|issueRiskVerdict| BUS
  SE -->|emitHedgeSignal| BUS
  OP -->|logHedge| BUS

  CO -->|verifyCredential, publishPolicy| CR

  BUS -.->|RiskVerdictIssued cleared| VAULT
  CR -.->|policy check| VAULT

  ID -.->|strategy CID| SD
  SC -.->|identity| ID
  AR -.->|identity| ID
  SE -.->|identity| ID
  OP -.->|identity| ID
  CO -.->|identity| ID
Loading

The five agents

# Agent Job Reads Emits
1 Scout Yield sourcing DefiLlama, CoinGecko, Nansen YieldMapPublished
2 Architect Portfolio construction YieldMapPublished, HedgeLogged AllocationProposed
3 Sentinel Risk gate, macro signals AllocationProposed, oracle feeds RiskVerdictIssued, HedgeSignalEmitted
4 Operator Byreal Perps hedging HedgeSignalEmitted HedgeLogged
5 Compliance Deposit-gate, policy NFTs Reclaim Protocol zkTLS, sanctions oracles ComplianceVerified, PolicyUpdated (on ComplianceRegistry)

Scout, Architect, Sentinel, and Operator all emit through the same AgentEventBus contract. Compliance lives on its own registry because its lifecycle is the deposit boundary, not the rebalancing loop.

How one full loop runs

sequenceDiagram
  autonumber
  participant S as Scout
  participant B as AgentEventBus
  participant A as Architect
  participant SE as Sentinel
  participant V as TrancheVault
  participant O as Operator
  participant BY as Byreal Perps

  S->>B: publishYieldMap(ipfsHash)
  B-->>A: YieldMapPublished
  A->>A: read map from IPFS, score, allocate per mandate
  A->>B: proposeAllocation(id, seniorBps, mezzBps, juniorBps, reasoningHash)
  B-->>SE: AllocationProposed
  SE->>SE: run risk model, compare to current exposure
  alt approved
    SE->>B: issueRiskVerdict(id, true, conditionHash)
    B-->>V: cleared, execute allocation
  else blocked
    SE->>B: issueRiskVerdict(id, false, conditionHash)
  end
  SE->>B: emitHedgeSignal(asset, delta, reasoningHash)
  B-->>O: HedgeSignalEmitted
  O->>BY: open short / close position
  BY-->>O: fill receipt
  O->>B: logHedge(asset, netPosition, executionProof)
  B-->>A: HedgeLogged, used as net-exposure baseline next cycle
Loading

Every step in the loop is an on-chain event with a CID pointing to either the input data (Scout's map) or the reasoning that produced the decision (Architect's allocation rationale, Sentinel's risk model snapshot, Operator's fill receipt). The full trail is queryable, citable, and reusable.

ERC-8004 identity

ERC-8004 is the agent identity standard. Three pieces, all on Mantle:

  1. Identity Registry: one NFT per agent, bound to the agent's signing address. Token metadata points to an IPFS doc declaring capabilities and the current strategy CID.
  2. Reputation Registry: append-only attestations about agent behavior. Other actors (other agents, indexers) submit signed claims that reference an agent's tokenId.
  3. Validation Registry (optional, v2): independent validators stake claims. Not used in v1; the on-chain event log is the validation source.

Bootstrap, per agent

sequenceDiagram
  participant D as Deployer
  participant L as Lighthouse
  participant ID as Identity Registry
  participant B as AgentEventBus
  participant S as Scout worker

  D->>D: generate Scout keypair (scoutAddress)
  D->>L: pin strategy-v1.md and scoring-methodology.md
  L-->>D: strategyCid, methodologyCid
  D->>ID: register(scoutAddress, strategyCid)
  ID-->>D: scoutTokenId
  D->>B: setRole(scoutAddress, Role.Scout)
  D->>S: deploy with scoutPrivateKey + AGENT_EVENT_BUS_ADDRESS
  S->>S: load key, start run loop
  S->>B: publishYieldMap(cid) each cycle
  Note over B: emits YieldMapPublished(agent=scoutAddress, ...)
Loading

The address that emits events is the same address that owns the identity NFT. The bus enforces "only Role.Scout can call publishYieldMap." The chain glues identity to authorship without any off-chain trust.

Verification chain, per event

Anyone reading a published map can replay these five steps to confirm it came from the registered agent under its declared rules.

flowchart TD
  E[YieldMapPublished event]
  E --> A1[Extract agent address + ipfsHash]
  A1 --> F[Fetch JSON from IPFS gateway]
  F --> S[Recover EIP-191 signer over canonical bytes]
  S --> M1{signer == agent ?}
  M1 -->|no| FAIL[Reject as forged]
  M1 -->|yes| L[Look up agent in Identity Registry]
  L --> SC[Read tokenURI then strategyCid]
  SC --> SD[Fetch strategy doc]
  SD --> M2{strategy declares this behavior ?}
  M2 -->|no| FAIL
  M2 -->|yes| MH[Verify methodologyHash matches sha256 of methodology doc]
  MH --> M3{matches ?}
  M3 -->|no| FAIL
  M3 -->|yes| OK[Verified end-to-end]
Loading

If all four match-points succeed, the artifact was produced by the registered agent under its declared strategy. You can audit the protocol the same way you would audit a smart contract, just with one extra IPFS hop.

Updating a strategy

sequenceDiagram
  participant D as Deployer
  participant L as Lighthouse
  participant ID as Identity Registry

  D->>L: pin new strategy-v2.md
  L-->>D: newStrategyCid
  D->>ID: updateStrategyCid(scoutTokenId, newStrategyCid)
  ID-->>D: log CIDChanged event
  Note over ID: token retained, strategyCid swapped, old CID still readable from IPFS
Loading

The chain log of updateStrategyCid calls is the strategy's version history. No identity churn.

Reputation

For v1, reputation is read-only metadata accrued by indexers reading the bus log. Counters per agent: maps published, proposals submitted, verdicts cleared vs. blocked, hedge fills logged, depeg events caught. When a Mantle protocol wants to subscribe to Sentinel as a reusable risk oracle, the on-chain track record is what they are buying. That is the long arc.

In v2, attestations become explicit calls into the Reputation Registry: attest(tokenId, kind, value, sig). We do not need that yet.

Scout's pipeline, the one that's built today

Scout is the reference agent implementation in this repo. The other four follow the same shape, scoped to their job. Scout's cycle, every 60 seconds:

flowchart LR
  I[1. Ingest, DefiLlama] --> N[2. Normalize, zod schemas]
  N --> E[3. Enrich, CoinGecko + Nansen + static config]
  E --> SC[4. Score, RAAPY = APY - sum p_i * alpha_i]
  SC --> AG[5. Aggregate, per-tranche eligibility tagging]
  AG --> SI[6. Sign, EIP-191 over canonical-unsigned bytes]
  SI --> P[7. Pin, Lighthouse]
  P --> EM[8. Emit, AgentEventBus.publishYieldMap]
  EM --> LP[9. Record CID, in-memory dedup]
  LP --> I
Loading

Every stage is deterministic given its inputs. Failures are isolated (one source down, others continue). Missing enrichment fields drop confidence rather than getting filled with optimistic defaults.

Full Scout docs: [agents/scout/README.md](agents/scout/README.md). Agent-system docs: [agents/README.md](agents/README.md). The complete scoring methodology, with the math and worked examples: [agents/scout/docs/scoring-methodology.md](agents/scout/docs/scoring-methodology.md).

Compliance gate

Deposits go through a single contract, ComplianceRegistry ([0x0481bE75…E7550](https://mantlescan.xyz/address/0x0481bE75687b3d4daAc6fc0ED2c3b51DC85E7550)). It mints a soulbound NFT receipt to each cleared wallet, encoding:

  • trancheMask (Senior bit, Mezz bit, Junior bit) so accreditation-only tranches are enforced on-chain.
  • expiresAt so receipts roll over.
  • policyId and zkReceiptCid so the policy doc and the off-chain proof are linked from the chain.
  • A revokeReceipt path for sanctions or jurisdiction changes.

The off-chain proof source is Reclaim Protocol (browser-only zkTLS, no extension or app install). Reclaim picked over Privado iD (heavy issuer-node deployment) and zkPass (requires the TransGate Chrome extension, breaks the live-stage demo flow). The frontend integration runs the user through Reclaim's hosted KYC flow, a server route verifies the resulting zkTLS proof with @reclaimprotocol/js-sdk, the verifier wallet signs the EIP-712 ClaimData struct that ComplianceRegistry.claimReceipt already accepts, and the user submits that signature on-chain. Zero contract changes; full path is staked out in punch-list task P0-E.

ComplianceRegistry.isAllowed(user, tranche) is public, so any other Mantle RWA protocol can hook into the same whitelist without reissuing receipts.

External integrations, locked at four

Service Purpose Auth
DefiLlama Yield universe (APY + TVL across all Mantle pools) None
CoinGecko 365d daily price for depeg analysis Demo API key
Nansen Smart-money holders, fresh-wallet inflows, wash-trade flags Paid API key
Lighthouse IPFS pin for maps, strategies, reasoning hashes API key

Plus Mantle RPC for emit and read. Byreal Perps is a hedge counterparty venue, not a data feed. Nothing else. Mantlescan, Ondo API, Ethena API, CIAN API, Pinata, web3.storage, 1inch, Odos, Allora, OraKle, Agni / Merchant Moe subgraphs are all explicitly out of scope. The fewer keys we manage, the fewer rate limits to hit and the simpler the demo story.

Tokenomics and revenue

Strata is a fee-based protocol, not a token-launch protocol. Revenue comes from three lines, all enforced on-chain in the harvest waterfall on TrancheController.

Fee lines

Fee Rate Booked Source
Senior spread 75 bps annualized Each harvest Yield above the Senior cap (~6% APY) flows to the protocol, not to Senior holders.
Mezz spread 50 bps annualized Each harvest Yield above the Mezz cap (~10% APY) flows to the protocol.
Junior performance fee 10% of profit above hurdle Each harvest, only on net positive 10% of Junior's distribution above the Mezz cap rate; zero in down periods.

All three are enforced on-chain in the harvest waterfall. The protocol cannot withdraw outside of these lines without breaking the same invariants Senior and Mezz holders rely on.

Run-rate at scale

TVL Senior 60% / Mezz 30% / Junior 10% mix Projected annual revenue
$1M Senior 600k / Mezz 300k / Junior 100k ~$13k - $28k
$10M Senior 6M / Mezz 3M / Junior 1M ~$125k - $275k
$100M Senior 60M / Mezz 30M / Junior 10M ~$1.25M - $2.75M

Range assumes 8-14% blended basket yield. Lower bound is Senior / Mezz spread only; upper bound includes Junior performance in a typical year.

Token or no token

No token at launch. Reasoning:

  • Strata's edge is the verifiable-agent loop, not a token economy. Bundling a token in would dilute the pitch and create regulatory exposure the RWA angle does not need.
  • The three tranche ERC-20s (sSTRATA, mSTRATA, jSTRATA) are already the user-facing primitive. They are receipts of capital, not governance tokens, and their value derives directly from NAV.
  • Governance for v1 is the deployer multisig. The Sentinel risk oracle is the eventual decentralization path: once external Mantle protocols subscribe to its verdicts, governance over the risk model migrates to those subscribers.

A protocol token is the v3 question, not a v1 question. The hackathon position is revenue without a token because the on-chain receipts already do the job.

Post-hackathon path

Month Milestone
+1 Lift adapter caps from $1k to $1M, onboard first external LP
+2 Ship Junior accreditation gate (Reclaim zkTLS proof of US-accredited status)
+3 Subscribe one external Mantle protocol to Sentinel verdicts (reusable risk oracle goes live)
+6 Mortgage CMO sleeve from labeled demo to a real RWA partner (Centrifuge / Ondo / Maple)

Sentinel-as-a-service is the long arc. The fee lines fund agent operations until that subscription revenue compounds.

Deployed contracts (Mantle mainnet, chain 5000)

Broadcast 2026-06-04 from deployer 0x6Bce…7355. Full deployment artifact at [contracts/deployments/5000.json](contracts/deployments/5000.json).

Contract Address Purpose
AgentEventBus [0x0E6F30bC…0D0A62](https://mantlescan.xyz/address/0x0E6F30bC6D9b08cD20d422D634d565d3300D0A62) Role-gated emitter shared by all 4 rebalancing agents
TrancheController [0xF65C36F0…BCecA](https://mantlescan.xyz/address/0xF65C36F0a8DB43edAb9d70Ab7eec025eA61BCecA) USDC custodian, runs the harvest waterfall
ComplianceRegistry [0x0481bE75…E7550](https://mantlescan.xyz/address/0x0481bE75687b3d4daAc6fc0ED2c3b51DC85E7550) EIP-712 verifier-signed soulbound receipts
ERC-8004 Identity Registry [0x8004A169…9a432](https://mantlescan.xyz/address/0x8004A169FB4a3325136EB29fA0ceB6D2e539a432) One identity NFT per agent (#101 to #105)
Senior Vault (sSTRATA) [0x7B70cd25…aAA5db](https://mantlescan.xyz/address/0x7B70cd25c86E10F144f5D73A94f7F22c20aAA5db) ERC-4626, first on yield, last on loss
Mezzanine Vault (mSTRATA) [0xa076cF50…5be37C](https://mantlescan.xyz/address/0xa076cF50656621BdcB5e4a8bfc991294615be37C) ERC-4626, balanced exposure
Junior Vault (jSTRATA) [0xCaedb62e…ACc2F](https://mantlescan.xyz/address/0xCaedb62edC3C49Fe9c1A2F77c307fE92844ACc2F) ERC-4626, residual upside, first loss
Aave V3 USDC adapter [0xd8E4A25e…959a7](https://mantlescan.xyz/address/0xd8E4A25eab6de5D504E0A53d9Daec3687B3959a7) Senior + Mezz, trustless
Ondo USDY adapter [0x0CDaea95…5Ba9b](https://mantlescan.xyz/address/0x0CDaea9582CF886Df9E359fD2435B86c9415Ba9b) Senior, oracle-valued
mETH adapter [0xd526DD02…F2be](https://mantlescan.xyz/address/0xd526DD02366F9DA22232Ed8cDD1db197bc51F2be) Mezz, Chainlink-valued, FX-labeled
Ethena sUSDe adapter [0xfA824066…480663](https://mantlescan.xyz/address/0xfA8240669B9fC8A697F1595d7ceAe9e81c480663) Mezz + Junior, peg-clamped
Agni LP adapter [0x755D0BA6…879F2](https://mantlescan.xyz/address/0x755D0BA62C10dae194091F395c96E9d14CF879F2) Junior, full-range V3 NFT
Perp basis escrow [0x55F90908…d3f32](https://mantlescan.xyz/address/0x55F90908eFe0E8e78a4CDE445d57a1EDB26d3f32) Junior, operator-reported hedge value
USDC (Mantle) [0x09Bc4E0D…0D0dF9](https://mantlescan.xyz/address/0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9) Underlying for all tranches

Source, scripts, tests, and broadcast artifacts: [contracts/](contracts/). See [contracts/README.md](contracts/README.md) for build, test, and forge verify-contract instructions.

Agent wallets (Mantle mainnet)

Each agent owns one ERC-8004 identity NFT and the matching role on AgentEventBus. Wallets are funded with MNT for gas; rebalancing transactions never move user funds, only emit events. Compliance is on the registry, not the bus.

Agent Token Wallet Role grant tx
Scout #101 [0x7CAC071f…fcdE](https://mantlescan.xyz/address/0x7CAC071f0F59dEe64509ea1C3BD8245bE529fcdE) [0x7b00fa8a…f6ed0](https://mantlescan.xyz/tx/0x7b00fa8a8ad101964d05e2834cf0165cbf89f237103d83422e383bbb722f6ed0)
Architect #102 [0xbFDb8d13…De714](https://mantlescan.xyz/address/0xbFDb8d132358b2f46D3104Ef484048Bb916De714) [0x56906777…9bd53](https://mantlescan.xyz/tx/0x5690677701ca4ed036343e551f6c05d24f0640b59b5d425cd33fff394899bd53)
Sentinel #103 [0xfE7EB190…708f](https://mantlescan.xyz/address/0xfE7EB19092F03E00B6eD0a248D38E80e0aA8708f) [0x3c4a3ee8…418e](https://mantlescan.xyz/tx/0x3c4a3ee8e8e1e6cf1f6c563a66f0cfcb6fbfd8f00fb6177ac3a8bd0e234a418e)
Operator #104 [0xB342B41A…519E](https://mantlescan.xyz/address/0xB342B41A68a3c6C36Efb8f224CDd252F90aD519E) [0x9fbbbc5a…50b37](https://mantlescan.xyz/tx/0x9fbbbc5a8ec71051fb562ed370eaef20d69e79bfc28ad7c030679963b3650b37)
Compliance #105 [0x59767a3E…CA628](https://mantlescan.xyz/address/0x59767a3E91998A07D11aBE13CD460Fa3249CA628) EIP-712 verifier of ComplianceRegistry

Seed cycles (2026-06-04, mainnet)

Three full rebalance cycles ran end-to-end. Each agent's pinned doc differs cycle-to-cycle, so all 19 CIDs and JSON bodies are distinct. These are exactly the transactions the Railway cron reproduces in production.

Cycle 1, baseline (Senior 60 / Mezz 30 / Junior 10)

Step Agent Tx CID
1 Scout publishes Yield Map v1 [0x4f2a1bf4…ded33](https://mantlescan.xyz/tx/0x4f2a1bf4e0821ebb3d9ef224ad0423fea89eea6c43a6243dd738ef8b9c6ded33) QmTMcLP2…Zjt1s
2 Architect proposes allocation #1780589901 [0xc4e23f8b…79970](https://mantlescan.xyz/tx/0xc4e23f8b2cb889c2abbce09ad7957f902be37ed8e300807ccedc2d28b6679970) QmTr1ekp…dQzyD
3 Sentinel issues verdict CLEAR [0x91250f67…761db](https://mantlescan.xyz/tx/0x91250f676098d64e1d6b749f3aac0742ccf0f99c8c5538b6981edb43bd5761db) QmY73bjz…tdgez
4 Sentinel rates Senior / USDC = Green [0x1d05ee86…f0e4](https://mantlescan.xyz/tx/0x1d05ee86ac141ef23225711d657cf756add26c807ea5bec95fc03ebb7f44f0e4) QmPnpTBi…QvSL
5 Sentinel emits hedge signal #1 ($1k) [0x92080627…83119](https://mantlescan.xyz/tx/0x92080627f6e50ab4beee83339eedd124550bf52427277fc608ab57eea7383119) Qma6GLpM…1nPvU
6 Operator fills signal #1 (-$500 net) [0x63b12b2e…9ee6](https://mantlescan.xyz/tx/0x63b12b2e40933ffc446ded47a0bfa899f4da4fe98d58f374194b5b3b219e9ee6) QmUcwKAk…eYxv
7 Compliance claims soulbound receipt #1 [0x3657ec9f…583e4](https://mantlescan.xyz/tx/0x3657ec9f1a6121fe6d48b0d19a4cc316a07d3c275e96021a516a3a70768583e4) QmUEVWAM…hDgX

Cycle 2, sUSDe leads, tilt to mezz (Senior 55 / Mezz 35 / Junior 10)

Step Agent Tx CID
1 Scout publishes Yield Map v2 (sUSDe leads) [0x636bf573…ce688](https://mantlescan.xyz/tx/0x636bf573b020c512bedfbe88307e4cfef891123958478d545b15edfeb8ace688) QmNuvY6M…m5B5
2 Architect proposes allocation #1780594730 [0x47021e64…08cc5](https://mantlescan.xyz/tx/0x47021e647758e54aa2a44064b480383c0c75c6b27fa7b225c4cfc05305808cc5) Qmf32dWj…toWsV
3 Sentinel issues verdict CLEAR (all green) [0xb66c0a90…52ea8](https://mantlescan.xyz/tx/0xb66c0a90f34052e2189993ead17fc744ebf5e2cabaa9e12476e90c654c952ea8) QmdqN8Lp…okVe
4 Sentinel rates Mezzanine / USDC = Green [0xe5e86f05…be3ec](https://mantlescan.xyz/tx/0xe5e86f053e5b76a271259a284078f322cf7e31e50ab4ce440922c6ced5dbe3ec) QmUXBXBm…NaZgU
5 Sentinel emits hedge signal #2 ($2k) [0x1aa09fab…bd873](https://mantlescan.xyz/tx/0x1aa09fabdd67a475bf8836064835b3d92c466ae215c8276fd8d50a51472bd873) QmQzvmcL…jBTWV
6 Operator fills signal #2 (-$1k net) [0xea01bfaa…659df](https://mantlescan.xyz/tx/0xea01bfaa26fa43092a1f6d73b5bb0071ba3999b93167294ded1946ef087659df) QmZ1DT4M…VDMn

Cycle 3, USDY spike, tilt to senior, junior BLOCKED (Senior 65 / Mezz 25 / Junior 10)

Step Agent Tx CID
1 Scout publishes Yield Map v3 (USDY leads) [0xc08decd3…1653d](https://mantlescan.xyz/tx/0xc08decd3321d4379c41f592dd93902b4e3a564f09738d1fc8cdee3afdce1653d) QmXtvdoP…kvAi3
2 Architect proposes allocation #1780594769 [0xdf04a33a…7463b](https://mantlescan.xyz/tx/0xdf04a33aebbc5d9ade92421caf00d37e787b70b194bb52551f269b7f2d37463b) QmQcbFuw…yo5h
3 Sentinel issues verdict BLOCKED [0xb7184d42…d65d1](https://mantlescan.xyz/tx/0xb7184d42418a4f6034c6ce8d7b4dfe0ffbffe0f124395270389edc1e5b5d65d1) QmPme4H5…hcao
4 Sentinel rates Junior / USDC = Red [0x375e5b9b…03a82](https://mantlescan.xyz/tx/0x375e5b9b04b8f3a0c1a06d72fbace8a1418c5d8ddc9ab022ade10e8c94003a82) QmYfNfXK…JUZ1
5 Sentinel emits hedge signal #3 ($500, defensive) [0x9b97a02a…27237](https://mantlescan.xyz/tx/0x9b97a02a236d853c35be2806dacb068351e2c8854cf6a5af4909df3019927237) QmR8uFMZ…v7Py
6 Operator trims signal #3 (-$125 residual) [0xecbb2ecf…61ad99](https://mantlescan.xyz/tx/0xecbb2ecffa19e4ee319db7b5b7d89af6d597fcbab235531cf4849d8ca861ad99) QmaUqxZu…RBw6

Mirror: [agents/.demo-seed.json](agents/.demo-seed.json). All 19 CIDs are listed in [apps/web/src/lib/realEvents.ts](apps/web/src/lib/realEvents.ts).

Repository layout

strata/
  contracts/                # Foundry workspace, full source + tests + deployments
    src/                    # AgentEventBus, TrancheController, vaults, adapters, ComplianceRegistry, ERC-8004 IdentityRegistry
    script/                 # Deploy.s.sol
    test/                   # Foundry unit tests
    deployments/5000.json   # Mantle mainnet broadcast artifact (addresses + ABIs)
    README.md
  agents/
    README.md               # agent system overview + listener pattern + ERC-8004 details
    scout/                  # agent 1, yield sourcing, fully built (62 vitest tests)
      README.md
      docs/
        strategy-v1.md      # pinned to IPFS, linked from identity NFT
        scoring-methodology.md
      src/
      tests/
      scripts/
    architect/              # agent 2, live on mainnet
    sentinel/               # agent 3, live on mainnet
    operator/               # agent 4, live on mainnet
    compliance/             # agent 5, live on mainnet
    keeper/                 # post-verdict executor (allocation + harvest)
  apps/
    web/                    # Next.js 14 landing + dashboard
  docs/
    superpowers/plans/      # implementation plans
  product.md                # the product spec

Quickstart

pnpm install
pnpm --filter @strata/scout build
pnpm --filter @strata/scout test         # 62 tests

To run Scout against a live network you need API keys and a deployed AgentEventBus. See [agents/scout/README.md](agents/scout/README.md#environment) for env vars and bootstrap order.

To work on contracts:

cd contracts
forge install
forge build
forge test -vv

To run the frontend locally:

cd apps/web
pnpm dev
# open http://localhost:3000

NEXT_PUBLIC_DEMO_DEPOSITS=1 simulates the deposit -> propose -> verify -> allocate loop locally without needing USDC on Mantle. Toggle it off to hit the real vault.deposit path.

Running an agent cycle

# one-off cycle of agent X (same command the Railway cron runs)
pnpm --filter @strata/scout      demo
pnpm --filter @strata/architect  demo   # waits for Scout's tx, then proposes
pnpm --filter @strata/sentinel   demo   # waits for Architect, then verdict + rating + hedge signal
pnpm --filter @strata/operator   demo   # waits for Sentinel, then logs hedge fill
pnpm --filter @strata/compliance demo   # standalone, signs + claims receipt

Each cycle prints one structured JSON line per stage: pinned (Lighthouse CID), tx-mined (mantlescan URL). The full sequence completes in well under 5 minutes today; the demo target with DEMO_MODE=1 is under 60 seconds, scoped in punch-list task P0-G.

For judges, how to evaluate in 5 minutes

Mapping each rubric line to a concrete artifact you can click:

Rubric line Artifact Where
Innovation: novel agent architecture 5 ERC-8004 identities + role-gated bus, all on mainnet Agent wallets and AgentEventBus
Technical: real on-chain code 14 verified contracts, source in [contracts/](contracts/) Deployed contracts
Technical: agent quality 62 vitest tests + 9-stage deterministic pipeline [agents/scout/tests](agents/scout/tests), [agents/scout/docs/scoring-methodology.md](agents/scout/docs/scoring-methodology.md)
AI x RWA fit Tranched yield + compliance gate + RWA-aware adapters How cashflow is split, Compliance gate
Verifiability Every event has a CID; 4-step replay path Verification chain
Live demo 3 cycles already broadcast + Railway cron reproducing them Seed cycles
Business potential (20%) 3 fee lines enforced in the waterfall, run-rate at $1M / $10M / $100M Tokenomics and revenue
UX Public dashboard, IPFS doc viewer, soulbound receipt gate strata-web-orcin.vercel.app/app

For the 30-second demo loop: open the dashboard, trigger pnpm demo:cycle, watch the Scout / Architect / Sentinel / Operator event chain land in the activity feed with fresh Mantlescan tx hashes and Lighthouse CIDs. Pick any event, click through to Mantlescan, then to the CID on the Lighthouse gateway, then back to the agent's strategy doc on its ERC-8004 identity NFT. That round trip is the pitch.

Status snapshot

  • Contracts: live on Mantle mainnet. Bus + controller + 3 tranche vaults + 6 adapters + compliance registry + ERC-8004 identity registry all deployed.
  • All five agents: live on mainnet, signed strategies pinned to Lighthouse, role-grants in place, three full demo cycles landed end-to-end.
  • Frontend: Next.js 14 app live at [apps/web](apps/web). Landing + KYC / deposit flow + agent dashboard reads real Mantle data (TVL via ERC-4626 totalAssets, activity from the seed CIDs above, IPFS doc viewer in the Documents tab).
  • Compliance: registry deployed, verifier wallet active, one demo receipt minted. Reclaim Protocol zkTLS plumbing is the next pass, fully scoped in P0-E of the punch list.

Team

  • Aaron (contracts engineer): Solidity, Foundry, Mantle deploy + verify.
  • Prathamesh (off-chain engineer): TypeScript agents, frontend, ERC-8004 identity bootstrap, docs and plans.

Junior tranche — who holds it and why

Junior is the highest-variance tranche: first-loss position, last on yield distribution, residual upside after senior and mezzanine are paid. In traditional finance this slice is hard to place. In Strata it has four natural buyers.

Yield maximisers who understand DeFi risk and want uncapped upside. Junior holds leveraged yield, LP rewards, perp basis from Operator's hedging book, and the residual after waterfall distribution. For a degen who has read the Sentinel track record and trusts the risk management, junior is the highest-conviction position.

Strategy competitors in Battle mode. Architect periodically generates two or three competing allocation variants. Users can fork a strategy with their own capital and run it head-to-head against the protocol default. Winning forks earn a share of fees. This makes junior capital the most active and most social capital in the protocol — and gives users a reason to post, share, and come back daily.

Crypto-native protocols and treasuries who need verifiable yield management they can put in front of a governance vote. Every allocation decision is on-chain with a reasoning hash. Sentinel's full risk history is queryable. A DAO can audit the protocol the same way it would audit a smart contract before committing treasury capital.

Informed retail outside US restrictions who want yield that is better than a savings account and are willing to accept variance if the risk is explained clearly. The autonomy toggle (semi-auto multisig confirmation on large rebalances) lets junior holders keep a human hand on big moves while still benefiting from agent management. After deposit, users receive a shareable scorecard — tranche, amount, projected yield range — sized for X and Farcaster.

Junior is not the tranche nobody wants. It is the tranche where the most interesting things happen — and where the protocol generates its distribution.

Revenue model and token rationale

Strata has three fee layers, all collected on-chain through the waterfall contract.

Management fee — 0.50% per year on gross TVL. Accrued every harvest cycle (every 24 hours) and deducted before yield is distributed to depositors. This is the protocol's baseline revenue — it runs regardless of performance and scales linearly with TVL. At $10M TVL it produces ~$50k/yr. At $100M it produces ~$500k/yr.

Junior performance carry — 10% of excess returns above the senior hurdle rate. The hurdle is the senior tranche target (5–6%). The carry only applies when the junior tranche exceeds that hurdle, and it is subject to a high-watermark — no carry is charged on returns that merely recover prior losses. This aligns the protocol's incentive with junior depositors: Strata earns more only when they earn more.

Sentinel oracle subscriptions and Compliance Policy NFT licensing — v2. Once Sentinel has a ≥ 30-day on-chain risk track record, external RWA protocols on Mantle can subscribe to its risk verdicts ($50–$500/month per protocol). Separately, every Jurisdiction Policy NFT Strata publishes (e.g. "US-Permissioned-Senior-Policy-v1") can be adopted by other protocols for a one-time mint fee plus optional annual renewal. The compliance work the protocol does for itself becomes billable infrastructure. This is the highest-margin revenue line and the hardest for a competitor to replicate, because it compounds with the length of Sentinel's on-chain history.

Why there is no STRATA governance token in v1. The three tranche tokens (sSTRATA, mSTRATA, jSTRATA) are yield-bearing receipt tokens — they represent a claim on the waterfall, not a vote. Launching a governance token before the protocol has meaningful TVL, a live risk track record, and a clear regulatory path would create legal risk and dilute execution focus. The agents earn credibility through on-chain ERC-8004 reputation, not token incentives. That is a more durable moat than liquidity mining.

A governance token becomes appropriate in v2 when: (1) Sentinel has ≥ 90 days of live on-chain risk decisions, (2) TVL exceeds $10M, and (3) the compliance layer is cleared in at least two jurisdictions. At that point, token holders vote on fee parameters, new asset integrations, and Sentinel risk model upgrades — decisions that require legitimacy, not just technical execution.

Post-hackathon path. Phase 1 (0–3 months): grow TVL to $1M through Mantle ecosystem DAO treasury outreach, build the Sentinel 90-day risk record, complete zkPass integration, deploy Compliance Policy NFT v1. Phase 2 (3–9 months): launch Sentinel oracle subscriptions to 3–5 external Mantle protocols, integrate real RWA collateral (Centrifuge, Maple, or Figure) to replace the demo mortgage sleeve, ship Battle mode, target $10M TVL. Phase 3 (9–18 months): governance token launch, Sentinel becomes a standalone licensed product, Compliance Policy NFTs adopted as a quiet standard across 10+ Mantle protocols.

The breakeven point on gas and agent infrastructure costs is approximately $5M TVL — reachable in Phase 1 without any external funding.

License and disclaimers

Not investment advice. The mortgage CMO sleeve in the Junior tranche is a labeled demo, seeded with realistic prepayment behavior for stress testing. Real RWA integrations come in v2.

For demo day, the Transparency Dashboard is the centerpiece: one full agent loop, end-to-end, in 30 seconds.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages