Slice
For holders

Fees

Every charge the protocol makes, what it is taken from, and where it goes.

Slice earns from yield, not from your principal
The main charge is 10% of the fees a pool produces — it only ever costs you when you are already earning. There is a small 0.5% entry fee and no exit fee.

Entry fee — 0.5% of a deposit

Charged on the tokens you supply, before any liquidity is added. Your shares are minted against the net amount, so the position you hold reflects what actually went in.

It is charged only on capital the vault actually deploys. Deposits take maximum amounts and hand back whatever the position could not absorb at the pool's current ratio, so supplying generously on one side is the normal way to use them — and the fee on anything refunded is refunded with it. You are never charged for money that never left your control.

This is a haircut on principal, which makes it the most expensive kind of fee to charge: it costs you whether or not the position ever earns, and it has to be won back before you are level. That is exactly why it is kept small — 0.5% is roughly two days of a busy pool's fees, not two months of them.

  • Capped in the contract at MAX_DEPOSIT_FEE_BPS = 2%. The cap sits close to the rate on purpose: a 10% ceiling over a 0.5% fee would tell you nothing about what you might be charged tomorrow.
  • Readable on-chain at any time via depositFeeBps(), and shown in the deposit panel before you confirm.
  • Accrued rather than pushed, and collected separately with collectDepositFees(). That is a safety property, not a courtesy — see below.
  • Fuzzed at 100,000 runs against the property that it never exceeds the stated rate on what a depositor actually parted with, at any deposit ratio.

Every charge, side by side

ChargeRateTaken fromGoes to
Entry fee0.5%Your principal, on depositfeeRecipient
Protocol fee10%Yield only — each harvest of trading feestreasury
Pool swap feeSet by the poolTraders, not stakersLiquidity providers — you
Exit feeNone

There is no withdrawal fee and no lockup. The pool's own swap fee is not a cost to you at all — it is the thing you are earning.

Launchpad taxes stack on top

Many Arc launchpads enforce a tax through a Uniswap v4 hook. That tax is not Slice's and Slice cannot waive it — but it does affect which deposit route is cheaper, so it is worth knowing before you stake.

Measured against a live Argus pool (CINU), pinned to a single block so the price could not move mid-measurement:

ChargeRateWho gets it
Pool fee1.00%Liquidity providers — that is you, if you are staked
Argus hook3.00%The launchpad's splits: creator, buyback, holders
Total per swap4.00%Matches the hook's own totalFeeBps()

The 1% pool fee is the thing you earn, and 1% per swap is high — good for a staker. The 3% hook tax only matters where Slice itself swaps.

On a taxed pool, deposit both sides
Withdrawals and two-sided deposits never swap, so they pay none of the hook tax. A USDC-only deposit swaps half the input, so on a 4%-per-swap pool it costs roughly 2% of the deposit — four times the entry fee. Supplying both sides avoids it entirely, and on a taxed pool that is by far the bigger saving.

Harvesting is also a swap: converting the token side of collected fees to USDC pays the same 4%. Since roughly half of what a pool collects is on the token side, the drag is about 2% of harvested fees — small against what the 1% pool fee brings in, but not nothing.

contracts/script/measure-hook-tax.sh measures this for any pool. It has to run against a live node rather than a fork, because these hooks move USDC and Arc's balance-move precompile does not exist in Foundry's EVM.

Why fees are collected, not pushed

Both the entry fee and the protocol fee accrue inside the vault and are transferred out by a separate, permissionless call. That is deliberate.

Arc's USDC reverts for a blocklisted address, and Circle decides who is blocklisted. If the vault transferred a fee to its recipient inline, blocklisting that one address would make every deposit revert for everybody. Accruing keeps the deposit path free of any transfer a third party can make fail.

This was a real bug, twice
The first version pushed protocol fees inside harvest(), which sits on the withdrawal path — blocklisting the treasury would have frozen every vault permanently. It was found by forking Arc. When the entry fee was added later it reintroduced the same shape on the deposit path, and the regression test written for the first bug caught the second.

Protocol fee — 10% of harvested yield

Taken from trading fees as they are collected, before the rest is streamed to stakers. It costs you nothing on a quiet pool, and scales with what the pool actually produces — which is the right way round for a fee.

It is set to its own ceiling, so the owner can lower it but can never raise it. The rate you read when you deposit is the worst it will ever be. 10% is in line with comparable vaults elsewhere.

Who can change the rates

The vault owner, via setDepositFee and setParameters, within the caps above. The owner cannot withdraw your funds, mint shares, or pause withdrawals — there is no such function.

Check depositFeeBps() and the vault's owner before depositing. The contracts page lists both. Risks covers the rest of what can go wrong.