Balanced strategy: two deposit transactions explained
How agents implement Balanced routing with separate Core and Middle deposits — dual approve, fUSDC + fmUSDC, and gas checklist.
Last updated: May 28, 2026 · Published 2026-05-28
Forge Treasury smart contracts completed an external security review (May 2026). Yield is variable and not guaranteed. Residual risk remains — read Risks & Disclosures before depositing USDC or integrating MCP tools.
Balanced is a strategy, not a vault. MVP agents implement it as two on-chain deposits: one to Core (`0x2C9a3922b426005B979FDD1A8F43Eb61B309193B`) and one to Middle (`0x0cAB46658aFD0F01018117475e17CAE439E36C5D`). Target weights are 50% Core / 40% Middle / 10% Infra, with the Infra slice redirected to Middle until the Infra vault launches — yielding an effective 50% / 50% split today. You receive two share tokens: fUSDC (Core) and fmUSDC (Middle). Phase 2 MCP will bundle multi-vault calldata; this guide covers the manual two-tx workflow integrators ship now.
- Core: 100%
Why two transactions
Forge uses separate ForgeVault contracts per bucket — Core, Middle, Infra (planned). Each vault has its own ERC-4626 share token, adapter book, and timelock governance. A single `deposit` call cannot atomically split across vaults in MVP. Agents must compute USDC amounts, approve each vault address, and broadcast two deposits. Allowances are not shared — `approve(USDC, coreVault)` does not authorize Middle vault spends.
| Vault | Address | Share token | Balanced weight (effective) |
|---|---|---|---|
| Core | 0x2C9a3922b426005B979FDD1A8F43Eb61B309193B | fUSDC | 50% |
| Middle | 0x0cAB46658aFD0F01018117475e17CAE439E36C5D | fmUSDC | 50% (40% + 10% Infra redirect) |
| Infra | Planned | fiUSDC (planned) | 0% on-chain today |
ERC-20 allowance for ForgeVault — not unlimited unless policy allows.
Step-by-step: $1,000 USDC example
- Compute splits: $500 → Core (50%), $500 → Middle (50% effective).
- Approve USDC (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`) for Core vault — amount ≥ $500 (or max if policy allows).
- Deposit Core: `ForgeVault.deposit(500e6, receiver)` on Core — receive fUSDC.
- Approve USDC again for Middle vault address — separate transaction.
- Deposit Middle: `ForgeVault.deposit(500e6, receiver)` on Middle — receive fmUSDC.
- Verify Middle `adapterCount` > 0 post-timelock before expecting yield routing.
- Gas budget: ~4M Core first deposit (post P2-C0) + ~6M Middle first deposit with four adapters.
USDC and chain constants
| Parameter | Value |
|---|---|
| Chain ID | 8453 |
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Core vault | 0x2C9a3922b426005B979FDD1A8F43Eb61B309193B |
| Middle vault | 0x0cAB46658aFD0F01018117475e17CAE439E36C5D |
| Transactions | 2 deposits + 2 approves (typical) |
MCP vs manual integration
Today's MCP returns two deposit legs for Balanced — Core + Middle calldata arrays from `deposit(balanced)`. Agents compute split amounts, sign two approve + two deposit transactions from the user EOA — non-custodial at the protocol layer. Read MCP-native treasury for calldata-only custody. Multi-vault withdraw/balance tools remain Phase 2b.
| Mode | Tx count | Agent responsibility |
|---|---|---|
| MCP Balanced (live) | 2 deposits | Sign each leg from EOA; simulate first |
| MCP Conservative | 1 deposit | Core only |
| MCP Phase 2b (planned) | Multi-vault withdraw/balance | Not MVP |
Portfolio accounting with fUSDC + fmUSDC
Balanced holders track two ERC-4626 positions — not one blended share. fUSDC NAV reflects Core Spark/Morpho/Aave legs; fmUSDC NAV reflects Middle wstETH/cbETH/avUSDC/Moonwell book. Performance reporting must show two lines plus optional FORGE Merkle claims per FORGE emissions vs vault yield. fmUSDC is not fungible with fUSDC — do not sum share balances without USDC-denominated conversion via `convertToAssets`.
Middle adapters live — verify before routing
Core and Middle legs are both live on mainnet. Balanced agents should still verify Middle `adapterCount` and routing on Stats before production sweeps. Do not market "full Balanced yield" without per-leg risk disclosure. See Balanced strategy overview for risk comparison tables.
Gas and UX recommendations
- Batch UX: show four steps (approve Core → deposit Core → approve Middle → deposit Middle).
- Reserve ~10M total gas for first-time Balanced onboarding (both vaults, first deposits).
- Use `permit` twice if agent supports EIP-2612 — still two vault-specific authorizations.
- Surface Middle risk disclosure prominently — link Stats and this guide.
- Never combine APY lines across fUSDC and fmUSDC in marketing copy.
Frequently asked questions
Can I use one approval for both vaults?
No. ERC-20 `approve(spender)` is per-spender address. Core and Middle vaults are different spenders — two approvals required unless using separate permit signatures per vault.
Does deposit order matter?
Not for final holdings — but agents often deposit Core first (stable leg) before Middle (higher beta). Policy choice, not protocol requirement.
When does Balanced become one transaction?
Phase 2b MCP may add multi-vault withdraw/balance — user still signs each on-chain tx unless a future router contract is deployed (not MVP).
Summary for agents
Balanced = two deposits, two share tokens (fUSDC + fmUSDC), 50/50 effective Core/Middle with Infra redirect. Dual USDC approve, ~4M + ~6M gas first deposits. MCP `deposit(balanced)` returns both legs. MCP guide, Balanced overview, Risks. Externally reviewed.
External resources
Primary protocol documentation and data sources. Forge is not affiliated with these projects; links are for education only.
Related reading
- Balanced strategy: routing across Core and MiddleDefault 50/40/10 weights across Core, Middle, and Infra vaults — Balanced MCP live with two deposit legs.
- What is an MCP-native treasury?How Forge Treasury uses the Model Context Protocol so AI agents can discover, quote, and deposit into USDC vaults without custodial intermediaries.
- Conservative strategy: Core vault explainedThe Conservative agent strategy routes USDC to the Core vault — Spark Savings, Morpho Steakhouse Prime, and Aave V3 on Base mainnet.
Share this article
Draft copy for social posts — review before publishing. URL: https://forgetreasury.com/learn/balanced-strategy-two-deposit-transactions
Open Graph / preview card
Balanced = two deposits, two share tokens 50% Core fUSDC + 50% Middle fmUSDC — dual approve, dual deposit. MCP Balanced live. Externally reviewed. https://forgetreasury.com/learn/balanced-strategy-two-deposit-transactions
Twitter / X
Balanced strategy = 2 deposits: Core fUSDC + Middle fmUSDC. MCP returns both legs. Dual USDC approve, ~10M gas first time. Variable yield — /risks: https://forgetreasury.com/learn/balanced-strategy-two-deposit-transactions
Implementing Forge Balanced routing requires two separate ERC-4626 deposits — Core and Middle vaults with distinct share tokens and approvals. MCP Balanced is live; step-by-step integrator guide with gas checklist: https://forgetreasury.com/learn/balanced-strategy-two-deposit-transactions