Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kamino-finance/klend/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Kamino Lending is deployed as an Anchor program on Solana. The program is already deployed to mainnet and devnet at well-known program IDs. This guide covers deployment for testing environments and configuration management.

Program IDs

Kamino Lending uses different program IDs for staging and production:
  • Production: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  • Staging: SLendK7ySfcEzyaFqy93gDnD3RtrpXJcnRwb6zFHJSh
  • Localnet: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD (configurable)
These IDs are defined in programs/klend/src/lib.rs using Anchor’s declare_id! macro.

Anchor Configuration

The Anchor.toml file configures the build and deployment settings:
[programs.localnet]
klend = "KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"

[registry]
url = "https://api.apr.dev"

[provider]
cluster = "localnet"
wallet = "/wallet.json"

[scripts]
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"

Key Configuration Options

  • cluster: Target deployment cluster (localnet, devnet, mainnet-beta)
  • wallet: Path to deployer wallet keypair
  • programs: Maps program names to their on-chain addresses

Building the Program

Build the Kamino Lending program using Anchor:
anchor build
This compiles the Rust program and generates:
  • Program binary in target/deploy/
  • IDL (Interface Definition Language) file in target/idl/
  • TypeScript client in target/types/

Build Features

The program supports conditional compilation:
# Build for staging
anchor build -- --features staging

# Build without entrypoint (for testing)
anchor build -- --no-default-features

Deploying to Localnet

For local testing and development:
# Start local validator
solana-test-validator

# Deploy program
anchor deploy --provider.cluster localnet

Deploying to Devnet

Update Anchor.toml to target devnet:
[provider]
cluster = "devnet"
wallet = "~/.config/solana/id.json"
Then deploy:
anchor deploy --provider.cluster devnet

Program Upgrades

Upgrade Authority

The program upgrade authority controls who can upgrade the deployed program. Set this carefully:
# View current upgrade authority
solana program show <PROGRAM_ID>

# Set new upgrade authority
solana program set-upgrade-authority <PROGRAM_ID> \
  --new-upgrade-authority <NEW_AUTHORITY_PUBKEY>
Critical: Never lose access to the upgrade authority keypair. Consider using a multisig for production deployments.

Performing Upgrades

# Build new version
anchor build

# Upgrade program
solana program deploy target/deploy/klend.so \
  --program-id <PROGRAM_ID> \
  --upgrade-authority <AUTHORITY_KEYPAIR>

Program Versioning

Kamino Lending tracks the program version in utils/consts.rs:
pub const PROGRAM_VERSION: u16 = 200; // Version 2.0.0
Reserves and lending markets store their version and can be checked for compatibility. See handler_refresh_reserve.rs:19 for version validation.

Security Considerations

Audits

Kamino Lending has been audited by:
  • OtterSec
  • Offside Labs
  • Certora
  • Sec3
Security policy: https://github.com/Kamino-Finance/audits/blob/master/docs/SECURITY.md

Security Contact

Report security issues to: security@kamino.finance

Immutable Markets

Once a lending market is set to immutable (via UpdateLendingMarketMode::UpdateImmutableFlag), most configuration changes are prevented. This provides additional security guarantees for users.

Post-Deployment Steps

  1. Initialize Global Config: Create the global configuration account using init_global_config
  2. Create Lending Market: Initialize at least one lending market using init_lending_market
  3. Add Reserves: Initialize reserves for each supported token using init_reserve
  4. Configure Parameters: Set appropriate LTV ratios, interest rates, and limits
  5. Verify Configuration: Test all operations on devnet before mainnet deployment

Testing Deployments

Run the test suite against your deployment:
# Run all tests
anchor test

# Run specific test file
anchor test tests/specific-test.ts

# Skip local validator (test against existing deployment)
anchor test --skip-local-validator

Monitoring Deployment Health

After deployment, monitor:
  • Program upgrade authority ownership
  • Account rent status (all PDAs should be rent-exempt)
  • Initial market and reserve configurations
  • Admin key security
See Monitoring for operational monitoring strategies.

Build docs developers (and LLMs) love