Protocol Overview

Cross-Venue Integrations

How Project 0 integrates with Kamino, Drift, and other Solana DeFi venues as cross-venue collateral.

P0 accepts collateral from third-party venues like Kamino and Drift, provided the Group administrator has created a Bank for that asset. This cross-venue integration is what makes P0 a prime broker rather than just another lending protocol.

Supported Venues

  • Kamino -- Live. Lending positions across Kamino markets.
  • Drift -- Live. Positions from Drift protocol.
  • Jupiter Lend -- Coming soon.

Each third-party venue asset has its own Bank. For example, the Kamino Main Market USDC reserve and the Kamino Maple Market USDC reserve are separate Banks with independent risk parameters.

How Yield Works

Depositors into third-party venue Banks earn yield from the originating venue, not from P0 borrowers. There is no borrowing from third-party venue assets on P0; these positions exist purely as collateral.

For example, when depositing into the Kamino Main Market USDC Bank on P0, lenders earn what any other depositor would earn on Kamino. The yield comes from borrowers on Kamino, not from P0.

Kamino Integration

Terms

  • klend -- The main Kamino lending program.
  • Market -- A "Group" in Kamino parlance.
  • Reserve -- A "Bank" in Kamino parlance.
  • Obligation -- A "user account" in Kamino parlance.
  • Farms -- A rewards emission mechanism used by Kamino to incentivize reserve deposits/borrows. Built as a separate program from klend.
  • Refreshing Reserves -- Kamino requires reserves to cache price data from their oracles. This must happen for any transaction that changes funds. A refresh is valid for one slot or one transaction that changes funds where that reserve is involved, whichever comes first.
  • Refreshing Obligations -- Kamino requires the user's account to refresh before any transaction that changes funds, after any reserves the account uses are refreshed. This syncs the balances and health of the user's account. Like refreshing reserves, this is valid for one slot or one transaction that changes funds, whichever comes first. In practice, every Kamino-related transaction looks like: refresh reserves, refresh obligation, everything else.
  • Collateral tokens -- When you deposit into Kamino, you receive "collateral tokens" representing your position. These appreciate in value relative to the liquidity token as interest accumulates, so the exchange rate of collateral/liquidity token goes up over time.

Big Picture Overview

Each P0-wrapped Kamino Bank corresponds to exactly one Kamino Reserve. It has exactly one Obligation, with a single position, that holds all the deposits in that Bank for all users.

Users always deposit the raw asset into this Bank. For example, if the Reserve transacts in USDC, users deposit USDC. To transfer an existing Kamino position into a P0-wrapped one, withdraw the funds from Kamino and deposit them again into the P0-wrapped Bank.

Under the hood, P0 Banks are like any other user/depositor of the Kamino platform, enjoying no special access or privileges.

The asset share value of wrapped Banks is always 1 (they never earn interest in the P0 program). All interest is earned due to appreciation of the collateral token on Kamino's end.

The wrapped Obligation earns all Kamino points, rewards, and farm emissions that any normal depositor would earn. The Group administrator is responsible for distributing these to depositors.

Token Amount Types

InstructionToken Amount TypeNotes
DepositLiquidity token amountRaw underlying token (e.g., USDC, SOL)
WithdrawCollateral token amountMust convert from collateral to liquidity token amount
LiquidateCollateral token amountMust convert from collateral to liquidity token amount

Since collateral tokens appreciate in value relative to the liquidity token as interest accumulates, liquidators and withdrawers must manually convert from collateral token amounts to liquidity token amounts using the current exchange rate.

Notes for Liquidators

If a user has a wrapped Kamino position, remember to refresh any reserves and obligations involved before attempting to liquidate.

Liquidators may claim a wrapped Kamino position, which must be withdrawn using the separate withdraw instruction applicable only to wrapped Banks. The withdraw instruction requires refreshing the reserve/obligation and consumes a significant amount of CU: it is recommended to do this in a separate transaction from the liquidation instruction in most cases.

For developer-level integration details, admin setup instructions, and ongoing maintenance considerations, see the guides on GitHub.

On this page