The Escrow
This is the part of Catpound that is not a plain auto-compounder, and the reason the vault tracks more than a share price.
The problem
MotoSwap's farm does not pay every MOTO immediately. Each harvest is split:
- Half pays out now. The vault can compound it right away.
- Half is escrowed in the farm's vesting contract and releases over 180 days.
A normal auto-compounder takes the immediate half and ignores the rest — or worse, treats the escrowed half as belonging to the vault in general. That is wrong, because "the vault" is not a fixed set of people. If the escrow is just part of the vault's assets, then whoever holds shares at the moment it unlocks captures it — including someone who deposited yesterday, and at the expense of someone who earned it and left.
What Catpound does instead
When a harvest lands, the escrowed half is booked as an entitlement against the people who were actually holding shares at that moment.
- Your entitlement accrues per harvest, in proportion to your share of the vault at the time the harvest happened.
- It is recorded against your address, not against the vault's balance sheet.
- It keeps vesting whether or not you stay. Withdrawing does not forfeit it.
- You claim it whenever you like once it has vested, from the vault page.
If you deposit, earn escrow across ten harvests, and leave on day 30, that entitlement is still yours on day 180.
How the numbers work
Two running totals decide how much of everyone's entitlement is actually payable:
| Term | Meaning |
|---|---|
| Allocated | Escrow MOTO ever assigned to depositors, across every harvest. |
| Received | Escrow MOTO actually collected into the vault so far. |
The ratio between them is the funded fraction: how much of what has been promised has actually arrived.
funded fraction = received ÷ allocated
As the 180-day vesting releases, collectEscrow() pulls the vested MOTO into the vault
and received catches up to allocated. Your claimable amount is your share of the
entitlement, scaled by that fraction, minus whatever you have already claimed.
A payout is additionally clamped so the vault can never pay out more MOTO than it holds. That clamp is what makes the ledger always solvent: every outstanding claim is covered by MOTO the vault actually has, never by MOTO it hopes to receive.
Unclaimed entitlement does not expire and is not redistributed. There is no advantage to claiming early, and no penalty for claiming late.
The unpayable residue
Being precise about this matters more than it being flattering:
Not every allocated wei is reachable. The farm's escrow releases its grant proportionally, and a small part of the vault's grant can never be collected — a rounding residue that sits below the escrow's own granularity. Its size is bounded by the escrow's mechanics, not by anything Catpound controls, and at launch scale it is under one basis point of the escrowed total.
This is why the funded fraction is displayed rather than assumed to be 100%, and why claims are computed from MOTO the vault has received rather than MOTO it was promised. You are never paid from a number that does not exist.
Trust boundary
The vault reads no getter from the escrow to work any of this out. Received advances only when the vault observes its own MOTO balance rise across its own collection call. MotoSwap can replace the escrow contract whenever it likes; there is nothing here to desync, because nothing here assumes the escrow is honest about its own state.
See also
- The Vault — the compounding side
- Contract addresses — the escrow and farm