Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Infrared Protocol

The Infrared Protocol revolutionizes the way users engage with the Berachain ecosystem, particularly in how they stake consensus assets and receive the Proof-of-Liquidity inflation. It enables users to stake their assets effortlessly and receive IBGT, a liquid staked representation of BGT, significantly enhancing BGT's utility. Additionally, Infrared democratizes access to Validator staking through the IBERA contract suite, a liquid staking token tightly integrated with Proof-of-Liquidity (POL) and the Infrared ecosystem.

Learn More

Contract Architecture

Architecture

https://link.excalidraw.com/l/1Tuu8vTTCh1/1f3jMvwGuuS

Core Contracts

  • full overview here

  • IBERA.sol: Main liquid staking token contract. Handles minting/burning of iBERA, facilitates POL rewards and manages validators.

  • InfraredVault.sol: Manages staking pools and reward distribution. Integrates with Berachain's POL system.

  • InfraredDistributor.sol: Handles distribution of validator rewards and commission management.

  • BribeCollector.sol: Collects and auctions bribes from Berachain reward vaults.

Staking Contracts

  • full overview here

  • IBERADepositor.sol: Handles deposits to CL through Berachain beacon deposit contract.

  • IBERAWithdrawor.sol: Manages withdrawals from CL through Berachain precompiles.

  • IBERAClaimor.sol: Processes user claims for withdrawn funds.

  • IBERAFeeReceivor.sol: Receives and processes validator rewards from EL.

Voting Contracts

  • full overview here

  • VotingEscrow.sol: Implementation of vote-escrowed NFTs (veNFTs) for protocol governance.

  • Voter.sol: Manages voting logic for POL cutting board allocation.

  • MultiRewards.sol: Base contract for reward distribution across multiple tokens.

Getting Started

Prerequisites

# Install Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup

Quick Start

# Clone the repository
git clone https://github.com/infrared-dao/infrared-contracts.git
cd infrared-protocol

# Install dependencies
forge install

# Build contracts
forge build

# Run tests
forge test

Integration Guide

Developers who want to integrate with InfraredVault and IBGTVault can do so by following these steps:

Installation

Add the infrared-contracts to your Foundry project:

forge install infrared-dao/infrared-contracts

Update your foundry.toml with the following remapping:

@infrared/=lib/infrared-contracts/contracts

Example Usage

import {IInfrared} from '@infrared/interfaces/IInfrared.sol';
import {IInfraredVault} from '@infrared/interfaces/IInfraredVault.sol';
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

// Query InfraredVault
IInfraredVault infraredVault = IInfrared(infrared).vaultRegistry(asset);

// Stake into InfraredVault
IERC20(asset).approve(address(infraredVault), amount);
infraredVault.stake(amount);

// Check earned rewards
IInfraredVault.RewardData[] memory rTs = infraredVault.getUserRewardsEarned(user);

// Harvest rewards
infraredVault.getReward();

// Withdraw assets and harvest remaining rewards
infraredVault.exit();