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

Redeemer

Git Source

Permissioned contract for redeeming iBGT tokens for BERA via the Infrared protocol.

Only authorized redeemers can call the redemption function. Assumes 1:1 iBGT to BGT ratio and BERA as native token.

State Variables

bgt

Address of the BGT token.

address public immutable bgt;

ibgt

Address of the iBGT token.

address public immutable ibgt;

infrared

Address of the Infrared protocol contract.

InfraredV1_7 public immutable infrared;

governance

Governance address for managing redeemers.

address public immutable governance;

redeemers

Mapping of authorized redeemers.

mapping(address user => bool isRedeemer) public redeemers;

Functions

onlyRedeemer

Modifier to restrict access to authorized redeemers.

modifier onlyRedeemer();

onlyGovernance

Modifier to restrict access to governance.

modifier onlyGovernance();

constructor

Constructor to initialize the contract.

constructor(
    address _governance,
    address _bgt,
    address _infrared,
    address[] memory _redeemers
);

Parameters

NameTypeDescription
_governanceaddressAddress of the governance controller.
_bgtaddressAddress of the BGT token.
_infraredaddressAddress of the Infrared protocol.
_redeemersaddress[]Array of initial authorized redeemers.

redeemIbgtForBera

Redeems iBGT for BERA.

Caller must approve this contract for iBGT. Checks unboosted BGT availability on Infrared. Burns iBGT, calls Infrared to redeem, and transfers BERA to the caller.

function redeemIbgtForBera(uint256 amount) external onlyRedeemer;

Parameters

NameTypeDescription
amountuint256The amount of iBGT to redeem.

addRedeemer

Adds a new redeemer.

function addRedeemer(address redeemer) external onlyGovernance;

Parameters

NameTypeDescription
redeemeraddressThe address to add as a redeemer.

removeRedeemer

Removes an existing redeemer.

function removeRedeemer(address redeemer) external onlyGovernance;

Parameters

NameTypeDescription
redeemeraddressThe address to remove as a redeemer.

receive

Fallback to receive BERA from Infrared.

receive() external payable;

Events

IbgtRedeemed

Event emitted when iBGT is redeemed for BERA.

event IbgtRedeemed(address indexed user, uint256 amount);

Parameters

NameTypeDescription
useraddressThe user who redeemed.
amountuint256The amount of iBGT redeemed.

RedeemerAdded

Event emitted when a redeemer is added.

event RedeemerAdded(address indexed redeemer);

Parameters

NameTypeDescription
redeemeraddressThe added redeemer address.

RedeemerRemoved

Event emitted when a redeemer is removed.

event RedeemerRemoved(address indexed redeemer);

Parameters

NameTypeDescription
redeemeraddressThe removed redeemer address.

Errors

Unauthorized

Error thrown when caller is not authorized.

error Unauthorized();

InvalidAmount

Error thrown for zero amount

error InvalidAmount();

InvalidAddress

Error thrown for invalid address

error InvalidAddress();

InsufficientUnboostedBGT

Error thrown when insufficient unboosted BGT is available for redemption.

error InsufficientUnboostedBGT();