A Klima × PoolTogether partnership product on Base: a no-loss prize vault where USDC depositors earn lossless prize-shaped yield, with 5% of yield routed to the Klima Carbon Auto-Retirement Bot to permanently retire tokenized carbon credits.
The vault is a standard PoolTogether V5 PrizeVault deployed via the existing
audited PrizeVaultFactory — no custom Solidity required. This repo contains
the deploy script and a fork-simulation test.
Vault address: 0x07487Bc9a55d5FaA43894b2014CaaC4EC7fA37b4 on Base mainnet
Deploy transaction: 0xd2008b11c37ebaa7b35ed3683f27a52278fc8d5d3f8d2a95e25f9605301477b9
Source verified on Basescan via bytecode Exact Match against PT V5's PrizeVault contract.
| Property | Value |
|---|---|
| Underlying asset | USDC (native, on Base) |
| Yield source | Moonwell Flagship USDC (MetaMorpho ERC4626) |
| Prize pool | PT V5 on Base (prize token: WETH) |
| Yield fee | 5% (in PT's 1e9-precision basis: 5e7) |
| Yield fee recipient | Klima Carbon Auto-Retirement Bot |
| Owner | Klima multisig on Base |
| Vault name / symbol | "Klima Prize USDC" / kpzUSDC |
Depositors deposit USDC, the vault routes it to Moonwell Flagship USDC for yield, and 95% of accrued yield is auctioned to arbitrageurs in exchange for WETH (which funds PoolTogether's shared prize pool — depositors win WETH prizes). 5% accrues to the Klima retirement bot for periodic carbon credit retirements.
Depositors can withdraw 100% of their USDC principal at any time. Lossless.
- USDC underlying. Stablecoin denomination removes principal volatility. Depositors keep dollar-denominated value while earning prize-shaped yield.
- Moonwell Flagship USDC as yield source. Highest natively-ERC4626 USDC yield on Base (~4.1% APY at time of deployment), curated by Block Analitica and B.Protocol, $9.8M+ in TVL. Mature, conservative, well-allocated.
- 5% fee to retirement. A meaningful but non-disruptive slice — depositors retain 95% of yield as prize odds while still funding measurable carbon retirement on every yield liquidation.
- No custom Solidity. The vault is deployed via PT's audited factory. Every line of contract logic powering this product has been independently audited as part of PT V5 itself.
All addresses are on Base mainnet (chain ID 8453).
| Contract | Address |
|---|---|
| PoolTogether V5 PrizeVaultFactory | 0xa55a74A457D8a24D68DdA0b5d1E0341746d444Bf |
| PoolTogether V5 PrizePool | 0x45b2010d8A4f08b53c9fa7544C51dFd9733732cb |
| PoolTogether V5 Claimer | 0xcdCE635b774DE77cdF791647601dba64a75547ba |
| USDC (native) | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Moonwell Flagship USDC | 0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca |
| Klima Carbon Auto-Retirement Bot | 0xfB7eF581B0338A31e47AA9770345b26D46BF0451 |
| Klima Vault Owner (multisig) | 0xa79cd47655156b299762DFE92A67980805ce5a31 |
Sources:
- PoolTogether deployments: https://dev.pooltogether.com/protocol/deployments/base
- Moonwell Flagship USDC: https://app.morpho.org/base/vault/0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca
- Klima retirement bot: https://www.klimalabs.com/auto-retire-bot
script/DeployKlimaPrizeUsdcVault.s.sol— Foundry deploy scripttest/DeployKlimaPrizeUsdcVault.t.sol— fork simulation testfoundry.toml— Foundry config
Two layers of validation backstop the deploy:
1. Local fork simulation in this repo. Runs the full deploy logic against
current Base mainnet state, fakes a USDC balance for the deployer, executes
the PrizeVaultFactory.deployVault call, and asserts every parameter on the
resulting vault.
forge test --fork-url https://mainnet.base.org \
--match-test test_DeploysVaultSuccessfully -vvv2. Upstream PoolTogether integration test for the same yield source. PT's
own test suite (pt-v5-vault/test/integration/morpho-vaults/MorphoMoonwellUsdcBase.t.sol)
includes a 12-test suite that runs deposits, withdrawals, multi-user flows,
yield accrual, fee handling, edge cases, and loss simulation against this
exact Moonwell Flagship USDC yield source. All 12 tests pass at the time of
this writing — no integration questions remain.
A passing local test combined with the upstream test suite confirms:
- All addresses resolve to live, responsive contracts
- The factory accepts the parameter set we pass
- The deployed vault has the expected asset, yield source, prize pool, fee, fee recipient, and owner
- The yield source supports the full lifecycle of vault operations (deposit, withdraw, mint, redeem, yield accrual, loss handling)
The deploy script signs transactions via a Foundry encrypted keystore. First, set up the keystore for the deployer wallet:
cast wallet import deployer --interactiveThis prompts for the deployer's private key and a password. The key is stored encrypted at ~/.foundry/keystores/deployer.
Then run the deploy:
forge script script/DeployKlimaPrizeUsdcVault.s.sol:DeployKlimaPrizeUsdcVault \
--rpc-url https://mainnet.base.org \
--account deployer \
--sender 0xYourDeployerAddress \
--broadcastFoundry will prompt for the keystore password at signing time.
- Deployer wallet holds at least the factory's
YIELD_BUFFERof USDC (1e5units = $0.10) — permanently consumed on deploy as a vault stability reserve - Deployer wallet holds enough ETH for gas (~0.0005 ETH on Base is plenty)
- Klima multisig confirms the owner address in the script is correct
- Verify the vault contract on Basescan
- Submit to the Cabana vaultlist for frontend listing at app.cabana.fi
- Coordinate launch comms with Klima
At 5% yield fee with USDC lending APRs around 4%, the vault retires roughly 0.2% of TVL annually. For every $1M of TVL, this funds ~$2,000/year of tokenized carbon credit retirements via the Klima Auto-Retirement Bot.
The vault itself will be attributed the environmental impact by Klima's Auto-Retirement Bot. Every dollar deposited contributes to ongoing carbon retirements.
The retirement is real, the volume is meaningful at scale, and the framing should be consistent with the actual math.
This USDC vault is V1 of the Klima × PoolTogether partnership. Planned next phases:
- Cabana frontend listing — submit to the default vaultlist post-deploy
- klimalabs.com integration — partnership-branded landing page on Klima's ecosystem tooling site, alongside the auto-retire bot dashboard
- Green Bitcoin Prize Vault (gBTC) — a cbBTC-denominated companion vault for BTC holders who want to earn carbon-positive yield on their BTC. Lower current APY than USDC but cyclically scales with BTC bull markets. Subject to partnership decision.
| Step | Status |
|---|---|
| Deploy script | ✅ Complete |
| Fork simulation | ✅ Passes against Base mainnet state |
| Upstream integration test (Moonwell Flagship USDC) | ✅ Passes (12/12) |
| Klima multisig confirmation | ✅ Confirmed |
| Deployer wallet funding | ✅ Funded |
| Mainnet deploy | ✅ Live at 0x07487Bc9a55d5FaA43894b2014CaaC4EC7fA37b4 |
- PoolTogether V5 — prize savings protocol
- Moonwell on Morpho Blue — yield source
- Klima Protocol — on-chain carbon retirement
- Foundry — development framework