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

Liquidators

Varla uses three independent liquidation mode contracts — each authorized by VarlaCore via AccessManager RBAC. There is no router; each contract is a standalone entry point for its liquidation strategy.
ℹ Source files
contracts/VarlaLiquidator.sol — simple, multi-collateral, and bad-debt liquidation
contracts/liquidators/VarlaLiquidatorBase.sol — shared abstract base
contracts/liquidators/VarlaMergeLiquidator.sol — binary merge-assisted liquidation
contracts/liquidators/VarlaConvertLiquidator.sol — NegRisk convert-assisted liquidation

Architecture

Liquidation architecture
VarlaCore (AccessManager RBAC authorizes all three)
       │
       ├── VarlaLiquidator
       │      ├─ liquidate()       — single-position seizure
       │      ├─ liquidateMulti()  — multi-collateral seizure
       │      └─ liquidateBadDebt() — bad-debt resolution
       │
       ├── VarlaMergeLiquidator
       │      └─ calls IMarketAdapter.convert() to merge
       │         YES+NO → collateral, repays debt from proceeds
       │
       └── VarlaConvertLiquidator
              └─ calls NegRisk adapter to convert positions,
                 repays debt from converted collateral

All three inherit: VarlaLiquidatorBase (abstract)
  └─ shared: health checks, bonus math, fee collection

Each liquidator contract calls VarlaCore.seizeCollateral() and VarlaCore.repayOnBehalfFromLiquidation() — functions that are restricted via AccessManager RBAC to authorized liquidator contracts only.


VarlaLiquidator (Simple / Multi / Bad-Debt)

The primary liquidation contract. Handles three modes:

FunctionDescription
liquidate(user, positionId, debtToCover)Permissionless — seize a single collateral position from an unhealthy borrower
liquidateMulti(user, positionIds, debtToCover)Permissionless — seize across multiple collateral positions in one transaction
liquidateBadDebt(user, maxRepayAmount)Permissionless — liquidate positions where debt exceeds collateral value (at a 5% discount)
resolveBadDebtWithReserve(user, expectedScaledDebt)Admin/keeper — seize collateral to treasury and write off remaining debt via pool reserve

Liquidator Modes

VarlaMergeLiquidator

Binary merge-assisted liquidation — used when a borrower holds both YES and NO positions of a binary market. The liquidator calls a platform-specific market adapter (IMarketAdapter.convert()) to merge complementary position tokens back into the underlying collateral (e.g. USDC), then uses the proceeds to repay debt.

Platform adapters: PolymarketCtfAdapter (Polygon) and OpinionCtfExecutionEngineAdapter (BSC).

VarlaConvertLiquidator

NegRisk convert-assisted liquidation — used for NegRisk market positions on Polymarket. The liquidator calls the PolymarketNegRiskMergeAdapter to convert NegRisk positions back into collateral, then repays debt from the converted proceeds.


VarlaLiquidatorBase (Abstract)

Shared logic inherited by all three liquidator contracts:

ResponsibilityDescription
Health factor validationConfirms HF < 1.0 before proceeding
Bonus calculationComputes liquidation bonus based on tier config and current HF
Dust checksEnsures remaining debt/collateral don't fall below dust thresholds
Fee collectionSends protocol liquidation fee to treasury
Staking rebateOptional fee reduction for VRLA stakers via VarlaStaking integration

Liquidation Bonus

The liquidation bonus is dynamic — it increases as the health factor drops further below 1.0, up to a per-tier maximum. This is configured in VarlaCore's TierLiquidationConfig.

ParameterSource
maxLiquidationBonusBpsPer risk tier in VarlaCore
liquidationFeeBpsPer risk tier — protocol fee on liquidations
healthFactorForMaxBonusHF threshold where max bonus kicks in
targetHealthFactorHF target after partial liquidation

✦ Key Takeaways
  • Liquidations are permissionless — anyone can call liquidate() on an unhealthy position
  • Three independent mode contracts: simple/multi/bad-debt, merge, and convert
  • All authorized by VarlaCore via AccessManager RBAC (no router pattern)
  • Bonus scales dynamically with how far HF drops below 1.0
  • Protocol takes a fee (liquidationFeeBps) on each liquidation
  • Dust thresholds prevent tiny residual positions after liquidation

Menu

  • Overview
  • How it works
  • Features
  • Docs
  • FAQs

Ecosystem

  • Prediction markets
  • Builders
  • Integrations
  • Governance

Company

  • About
  • Terms
  • Privacy
  • Support

©2026 Varla Labs Inc. All rights reserved