Appearance
Fees ​
Performance Fee ​
Kana charges a 10% performance fee on harvested yield only. There are no deposit fees, withdrawal fees, or management fees.
Key properties:
- Rate: 10% (1000 basis points)
- Immutable: Cannot be changed — hardcoded in the contract as
PERFORMANCE_FEE_BPS = 1000 - Type: Performance only (no deposit, withdrawal, or management fees)
How It Works ​
When the keeper bot calls harvest(uint256[] calldata minAmountsOut):
- Strategy claims rewards from all enabled yield sources
- Swaps reward tokens to the vault's underlying asset with slippage protection (reverts if price manipulated)
- Reports profit to vault:
profit = total_assets_after_swaps - initial_balance - Vault calculates the yield earned since last harvest
- 10% of the yield is minted as additional kUSDC shares to the fee recipient
- The remaining 90% accrues to depositors via increased share value
Slippage protection: The keeper calculates fair prices off-chain and passes minimum output amounts to the harvest function. If the actual swap output is less than expected (e.g., due to MEV attack), the transaction reverts and no fees are taken. This ensures fees are only collected on real yield, not phantom gains from price manipulation.
This mechanism applies identically to both the USDC vault and the WSEI vault.
Example ​
| Amount | |
|---|---|
| USDC in vault | 100,000 |
| Yield earned (1 week) | $200 |
| Performance fee (10%) | $20 |
| Net yield to depositors | $180 |
| Effective depositor APY | ~9.36% (if gross APY is 10.4%) |
Fee Mechanism (Technical) ​
When harvest is called and profit > 0:
solidity
uint256 fee = (profit * PERFORMANCE_FEE_BPS) / BPS_DENOMINATOR; // 10%
if (fee > 0) {
strategy.withdraw(fee);
IERC20(asset()).safeTransfer(feeRecipient, fee);
}The vault withdraws the fee amount from the strategy and transfers it directly to the fee recipient. The fee recipient can then:
- Hold the underlying asset (USDC or WSEI)
- Redeploy it to other protocols
- Distribute to token stakers (in the future)
Fee Recipient ​
The fee recipient address can be updated by the vault owner, but only if it hasn't been locked:
solidity
function setFeeRecipient(address _recipient) external onlyOwner {
if (feeRecipientLocked) revert FeeRecipientIsLocked();
if (_recipient == address(0)) revert InvalidAddress();
feeRecipient = _recipient;
}Once the owner calls lockFeeRecipient(), the recipient address becomes permanently immutable. This is intended for when governance transitions from team multisig to a staking contract.
Why 10% Fixed? ​
Aligned incentives:
- Kana only earns when users earn
- No fees during downtime or low yields
- Simple and predictable
Why immutable:
- Trustless — users know the fee will never increase
- Long-term commitment — protocol can't rug by raising fees later
- Simplicity — no governance overhead for fee votes
Why not lower:
- 10% is competitive in yield aggregators (many charge 10-20%)
- Funds development, security audits, keeper infrastructure
- Lower than Yearn (20%), Beefy (varies), and many other aggregators
No Other Fees ​
| Fee Type | Rate |
|---|---|
| Deposit fee | 0% |
| Withdrawal fee | 0% |
| Management fee | 0% |
| Performance fee | 10% (immutable) |
Why no entry/exit fees:
- Encourages capital flow and participation
- Reduces friction for users who want to move funds quickly
- Aligns with DeFi composability principles
Fee Transparency ​
All fees are:
- On-chain — visible in every harvest transaction
- Verifiable — anyone can check the vault contract to see
PERFORMANCE_FEE_BPS = 1000 - Immutable — hardcoded constant, cannot be changed by owner
View fee-related events on-chain:
solidity
event Harvest(uint256 profit, uint256 fee);
event FeeRecipientUpdated(address oldRecipient, address newRecipient);
event FeeRecipientLocked(address recipient);Comparison with Other Protocols ​
| Protocol | Performance Fee | Deposit/Withdrawal Fee | Management Fee |
|---|---|---|---|
| Kana | 10% (immutable) | 0% | 0% |
| Yearn | 20% | 0% | 2% |
| Beefy | 4.5-9.5% | 0.1% | 0% |
| Convex | 17% | 0% | 0% |
| Aave | 0% | 0% | 0% (but lower base yields) |
Kana's 10% performance fee is competitive while providing a sustainable revenue model for protocol development and security.