Problem
Two stables ship on Create Protocol L1: CR8-USD (cross-vertical settlement, gas) and MUSD (music-vertical settlement, DSP payouts). Agents that span verticals — e.g. an IPTO query that returns a Muzix-indexed catalog and triggers a royalty payout — need to settle one leg in CR8-USD and the other in MUSD without round-tripping through an external DEX.
We need an in-protocol parity swap router that gives 1:1 conversion (modulo a small protocol fee) so settlement is atomic and the agent does not eat slippage on a single-block flow.
Proposed Approach
contracts/StableSwapRouter.sol holds reserves of both stables and mints/burns at parity:
swapCR8USDtoMUSD(uint256 amount, address to) — burns CR8-USD, mints MUSD, takes a protocol fee in bps (default 5 bps, configurable by Council vote).
swapMUSDtoCR8USD(uint256 amount, address to) — inverse.
- Reserve invariant: total CR8-USD + MUSD supply across both is preserved (no inflation). Router holds no excess; mints/burns one-for-one.
- Fee accrual: protocol fee accrues to a treasury contract per the standard waterfall (60/30/10 validator / treasury / public-goods split).
- Anti-griefing: rate-limit per address (e.g. $100K notional per epoch by default; raised by Council vote for known integrators).
switchboard/swap.py thin client wrapper so AgentEscrow can call the router inline as part of the settle flow.
Acceptance Criteria
References
- internal: see Create Protocol PQ L1 architecture RFC section 4 (tokens) and stress-test 2026-06-01 section 2.1
- Muzix MUSD design doc
Problem
Two stables ship on Create Protocol L1: CR8-USD (cross-vertical settlement, gas) and MUSD (music-vertical settlement, DSP payouts). Agents that span verticals — e.g. an IPTO query that returns a Muzix-indexed catalog and triggers a royalty payout — need to settle one leg in CR8-USD and the other in MUSD without round-tripping through an external DEX.
We need an in-protocol parity swap router that gives 1:1 conversion (modulo a small protocol fee) so settlement is atomic and the agent does not eat slippage on a single-block flow.
Proposed Approach
contracts/StableSwapRouter.solholds reserves of both stables and mints/burns at parity:swapCR8USDtoMUSD(uint256 amount, address to)— burns CR8-USD, mints MUSD, takes a protocol fee in bps (default 5 bps, configurable by Council vote).swapMUSDtoCR8USD(uint256 amount, address to)— inverse.switchboard/swap.pythin client wrapper so AgentEscrow can call the router inline as part of the settle flow.Acceptance Criteria
References