Varla
OverviewWhat it is and why it matters.How It WorksLending against prediction markets, step by step.FeaturesLending, borrowing, leverage, and risk management.Supported MarketsPolymarket, Opinion, Kalshi, and more.
DocumentationProtocol docs, guides, and architecture.Smart ContractsPool, Collateral Manager, Oracle, Liquidation Engine.SDK ReferenceTypeScript SDK for protocol interactions.API ReferenceREST and GraphQL endpoints for market data.
BlogLatest news and announcements from Varla.FAQsFrequently asked questions about the protocol.Security & AuditsProtocol security, audits, and trust assumptions.Brand AssetsLogos, colors, and typography guidelines.
Sign up
Varla
Protocol
Overview What it is and why it matters.
How It Works Lending against prediction markets, step by step.
Features Lending, borrowing, leverage, and risk management.
Supported Markets Polymarket, Opinion, Kalshi, and more.
Developers
Documentation Protocol docs, guides, and architecture.
Smart Contracts Pool, Collateral Manager, Oracle, Liquidation Engine.
SDK Reference TypeScript SDK for protocol interactions.
API Reference REST and GraphQL endpoints for market data.
Resources
Blog Latest news and announcements from Varla.
FAQs Frequently asked questions about the protocol.
Security & Audits Protocol security, audits, and trust assumptions.
Brand Assets Logos, colors, and typography guidelines.
Sign up

Introduction

Overview
Varla 101

Protocol

Overview
Lending Model
Supply & Borrow Interest Rates Reserves
User Positions
Open Positions Supply Assets Borrow Assets Withdraw Assets Repay Loans
Risk Engine
Health Factor LTV & Thresholds Liquidations Market Resolution Oracle System

Markets

Overview
Polymarket
Opinion
Kalshi
Adapters

Token

Overview
Distribution
Utility & Governance
Varla Gems

Security

Overview
Trust Assumptions
Risk Disclosure
Risk Parameters

Resources

FAQ
Glossary
Links
Brand Assets

Getting Started

Overview
TypeScript SDK
GraphQL API
Smart Contracts

Smart Contracts

Overview
Core Protocol
VarlaPool VarlaOracle Interest Rate Liquidators Market Adapters
Governance & Access
Governance

References

SDK Reference
API Reference

Operations

Testing & Debugging
Contract Addresses

Security

Overview
Trust Assumptions
Risk Disclosure
Risk Parameters

VarlaInterestRateStrategy

A configurable kinked (two-slope) interest rate model. Below optimal utilization the rate rises gently; above it the rate rises steeply to incentivize repayment.
ℹ Source
contracts/VarlaInterestRateStrategy.sol — inherits AccessManaged

How It Works

The interest rate follows a standard DeFi kinked curve:

text
Rate
 │             ╱  slope2 (steep)
 │           ╱
 │         ╱
 │       •  ← optimal utilization (kink)
 │     ╱  slope1 (gentle)
 │   ╱
 │ ╱
 └──────────────── Utilization

When utilization is below the optimal ratio, the rate equals base + slope1 × (utilization / optimal). Above optimal, the additional utilization is penalized by slope2.


Rate Parameters

solidity
struct InterestRateParams {
    uint16 optimalUsageRatio;      // In BPS (e.g. 8000 = 80%)
    uint16 baseVariableBorrowRate; // In BPS (e.g. 100 = 1%)
    uint16 variableRateSlope1;     // In BPS — gentle slope
    uint16 variableRateSlope2;     // In BPS — steep slope
}
ParameterConstraint
optimalUsageRatioMust be between 100 (1%) and 9900 (99%)
base + slope1 + slope2Must not exceed MAX_BORROW_RATE (100,000 BPS = 1000%)

Key Function

solidity
function calculateInterestRate(
    uint256 totalLiquidity,
    uint256 totalBorrowed
) external view returns (uint256 borrowRate)

Called by VarlaPool during interest accrual. Returns the annualized borrow rate in WAD (18 decimals).


Admin Functions

FunctionDescription
setPool(address)One-time setter — links this strategy to its pool. Reverts if already set.
setRateParams(InterestRateParams)Update rate parameters. Access restricted.

View Getters

FunctionReturns
getOptimalUsageRatio()Current optimal utilization in BPS
getBaseVariableBorrowRate()Base rate in BPS
getVariableRateSlope1()Slope 1 in BPS
getVariableRateSlope2()Slope 2 in BPS
getMaxVariableBorrowRate()base + slope1 + slope2 in BPS
getRateParams()Full InterestRateParams struct

Events

solidity
event RateParamsUpdated(
    uint16 optimalUsageRatio,
    uint16 baseVariableBorrowRate,
    uint16 variableRateSlope1,
    uint16 variableRateSlope2
);
event PoolSet(address pool);

✦ Key Takeaways
  • Standard kinked rate model — gentle slope below optimal, steep slope above
  • All parameters in basis points (BPS), rate output in WAD
  • Pool address is set once and cannot be changed
  • Rate params updatable by risk manager role via AccessManaged

Menu

  • Overview
  • How it works
  • Features
  • Documentations
  • FAQs

Ecosystem

  • Prediction markets
  • Builders
  • Integrations
  • Governance

Company

  • About
  • Terms
  • Privacy
  • Support

©2026 Varla Labs Inc. All rights reserved