Depositing and redeeming
Two calls in, one call out, no queue and no exit fee.
Both directions are synchronous. There is no waiting line, no request to cancel, and nothing to reserve — the vault holds nothing but USDG, so it is liquid down to the last share.
Depositing
USDG is an ERC-20, so it takes two transactions the first time:
approvethe vault to move the amount you are depositing. The site checks your existing allowance first and skips this when it is already enough.deposit(assets, receiver)— USDG in, vDEED out, at the current price.
Depositing is free apart from network gas.
The minimum is 100 USDG. That is a rule the front end enforces, not the contract. The contract will accept less.
Redeeming
One call: redeem(shares, receiver, owner). Shares are burned, USDG is sent in the same transaction, at the price at that moment.
There is no exit fee. There was a 0.25% one in earlier drafts, inherited from copy written before the contract existed. It was removed rather than patched: because the fee stayed inside the vault, leaving in slices repriced it onto your own remaining shares, so 500,000 USDG cost 1,250.00 in a single call and 1.27 across a thousand. A fee avoidable by anyone who reads the contract is a tax on people who do not.
When a deposit will be refused
Deposits — and only deposits — can be closed off two ways:
- The cap. The vault has a deposit cap denominated in USDG. When the vault holds at least the cap, there is no room left. The cap counts everything the vault holds, donations included.
- The pause. The owner key can pause deposits.
Both are enforced through maxDeposit and maxMint rather than a bare revert, so a front end that reads maxDeposit learns the answer before it asks you to sign. Per EIP-4626 the previews ignore limits, so previewDeposit keeps quoting a conversion while paused; maxDeposit is the surface that says no.
Redemption keeps working while deposits are paused. So do transfers and inbound capital. A contract that can trap your money is a different product, and there is a test asserting this one cannot.
What the owner key can and cannot do
| Can | Cannot |
|---|---|
| Pause deposits | Withdraw, sweep, or rescue anyone's funds |
| Change the deposit cap | Freeze, blocklist or claw back a holder |
| Transfer ownership | Renounce ownership — the call reverts on purpose |
| Publish a Roll | Change or delete a Roll already published |
There is no rescue, sweep, or emergency-withdraw function. The test suite scans the deployed runtime bytecode for a list of admin-withdrawal selectors, so adding one later fails a test rather than a code review.
One caveat worth stating plainly: that promise is about DEED's own contract. USDG itself is an upgradeable proxy with a pause, controlled by its issuer, and nothing here changes that.