PLINT // VAULT
--/08 | [ ERC-4626 ] Mainnet Open app

Yield that stays a token.

Fees accrue in the share price, not a reward contract. The position stays a plain ERC-20 — so it earns here while it works somewhere else.

Not a rate pitch — a form argument
Unmodified ERC-4626 — no rebase, no claim step, no epoch, no queue. Accepting it costs a config entry and a risk review. VIEW_STATUS_REPORT
01The argument

We would lose a yield comparison.
So we are not having one.

Yield here is a commodity — set by the pool, not by us, and quoted next to a hundred alternatives with longer track records.

The argument we are not making
  • Our APY is higher than the vault you are already in.
  • Points, boosts and emissions make the headline number work.
  • Trust the backtest.

Rate claims are comparable, refreshed daily, and decided by whoever subsidises hardest.

The argument we are making
  • The yield-bearing thing is an ordinary ERC-20.
  • Accounting is unmodified ERC-4626 — no rebase, no claim, no epoch.
  • So the same capital can be earning here and posted as collateral there.

Verifiable from the interface, and it does not decay when rates move.

02The mechanic

Four calls, and none of them are unusual.

The whole lifecycle is the ERC-4626 interface as written. Every non-standard addition is custom code somebody else has to write.

1

Deposit

deposit(assets, receiver)

You send the pool asset. The vault mints shares at the current rate, rounding down in its own favour.

2

Earn

harvest()

Swap fees land in totalAssets. No new shares are minted, so every existing share is worth more.

3

Hold, or go use it

transfer(to, amount)

Post it, sell it, LP it, wrap it. The vault does not care where the token sits — the claim travels with it.

4

Redeem

redeem(shares, receiver, owner)

Burn shares, take the underlying at that block’s rate. No epoch, no queue, no cooldown, no exit fee.

One deposit, indexed to 100

Illustrative, 11.4% fee APR. Your share count never changes; the value of each one does.

Value of one share Shares you hold

Hover the plot to read a day.

What never happens

Not what the vault does, but what it does that will surprise your accounting.

No rebase
Every cached balanceOf stays correct.
No claim step
No second token, so yield cannot be stranded.
No epochs
Everything settles in the block it is sent.
No withdrawal queue
Exit liquidity is the vault position itself.
No receipt NFT
Fungible, so it is poolable and priceable.
No transfer hooks
Nothing fires when a market takes custody.
03Capital efficiency

One deposit. Two jobs. At the same time.

Elsewhere, capital that is earning is capital that is parked. Here the share is a plain ERC-20, so it can do both at once.

Inputs
100,000USDC
180days
11.4%

Set by the pool, not by us.

65%

If a market listed the share.

Job one — inside the vault Simulation
$105,782.95

redemption value after 180 days

Shares minted95,955.574
Share price1.04215 → 1.10242
Fees accrued+$5,782.95
Job two — elsewhere Hypothetical
$65,000.00

borrowable against the same shares

Collateral posted95,955.574 sh
Still earningyes, in custody
Total deployed$165,000.00
Capital doing work per $100,000 deposited
Vault with an illiquid or non-fungible receipt$100,000
This share, earning and posted$165,000

Read this honestly. The left column is the vault’s own accounting, simulated at the inputs above. The right is what the form permits — no market has listed the share, so the borrow figure describes the design, not a position you can open.

04Integration cost

Most yield receipts are expensive to accept.

Risk teams rarely decline on the yield. They decline because the receipt needs custom code, a new oracle path, and an untested liquidation route.

Receipt design What the integrator has to build Fungible Priceable from a view call
Rebasing balance A wrapper, plus every cached balance revisited. Most markets refuse the unwrapped version. Yes Partly
Claimable reward token A keeper, a policy for who owns rewards during escrow, and a second asset to risk-rate. Yes No
Non-fungible receipt (NFT / lock) Per-position valuation, bespoke liquidation, no shared pool. Never reused. No No
Epoch or queue withdrawals A liquidation path that survives not being able to exit for days. Partly Yes
Price-accruing ERC-4626 shareThis vault Nothing. Read convertToAssets for price, treat it as any other ERC-20. Yes Yes

This is about integration cost, not safety. Given equal diligence, this shape costs the least to accept — an audited rebasing token is still the better risk.

05For integrators

The whole integration is two view calls.

No adapter, no keeper, no reward stream. If you support any 4626 vault, the marginal work is a config entry and a risk review.

Solidity
Listing checklist
  • Price source
    convertToAssets(1e18) × your existing feed. No new feed to commission.
  • Liquidation path
    redeem() to underlying in the same transaction. No queue, no cooldown.
  • Supply cap
    Set one. Conservative beats not at all.
  • Reward handling
    None. There is no second token to route.
  • Upgradeability
    See the status section rather than taking our word here.
  • What we provide
    Addresses, ABIs, a fork-test harness, and an engineer on a shared channel.
06Pricing & risk surface

The parts a risk team will actually ask about.

The pricing story has to survive review, so here it is including the parts that do not flatter us.

What moves the share price

Harvested swap fees
Fees enter totalAssets, supply is untouched, price steps up.
Revaluation of the position
totalAssets tracks the underlying liquidity, so the price is not inert between harvests.
Realised loss
The price falls too. This is not a monotonic guarantee.

What cannot move it

Deposits and withdrawals
Both move totalAssets and totalSupply together. A whale entering does not dilute you.
An admin call
No setter writes the rate. It is derived from the two balances.
Donations
They raise the price for everyone. The virtual offset stops that becoming an inflation attack.

Where the risk actually is

Contract risk
Live and unaudited. The real blocker — see the status section.
Pool risk
A share is a claim on a liquidity position, not a fixed amount of the asset.
Oracle latency
The share inherits your underlying feed’s staleness. Use the same freshness policy.
07Where this actually stands

The unflattering version, because you will find it anyway.

The design is composable today. Listings, liquidity and the audit are not.

Contracts
Mainnet

Deployed to Robinhood Chain mainnet (4663). Vault 0x7e92f269…2D055A77, WETH 0x82e92fD4…8723c56C. Read it with the row below — this code can hold real deposits and has not been audited.

Audit
Not started

Not started, and the contracts are already live. Asking a market to list the share is asking them to underwrite unaudited code. Size exposure accordingly until the report exists.

ERC-4626 conformance
Implemented

Full interface, virtual-offset inflation guard, property tests against the standard’s rounding.

Collateral listings
None

Zero. Every capital-efficiency claim here describes what the design permits, not a live position.

Secondary liquidity
None

None. Redemption through the vault is currently the only exit.

Admin surface
None

There is none. No owner, no pause, no upgrade path, no setter — harvest() is permissionless and takes no arguments.

What we are asking of a first integrator

Not a listing today — a design review while the audit runs, so the day the report lands there is already a risk team that understands the mechanic. The technical work is done. The trust work is the whole job.

08Questions

The ones integrators actually ask.

We do, on-chain — convertToAssets at two blocks gives the realised rate without trusting a number we wrote. We just will not build the pitch on it. The rate is set by pool volume, and a protocol with no track record does not win that comparison.
Whoever holds the token — the market contract — which credits the borrower, because the balance never changes, only its value does. No policy question, no code to route.
No. It rises with harvested fees, but totalAssets is the current value of a liquidity position, so it moves with the pool and falls on realised loss.
It should not, and we are not asking for that. The ask is a design review during the audit, so the listing decision after it is short rather than cold.
One conversation with a risk or integrations team. Not deposits, not a listing commitment, and not a rate comparison.