AuctionModule

Git Source

Inherits: IAuctionModule, IncreAccessControl, Pausable, ReentrancyGuard

Author: webthethird

Handles auctioning tokens slashed by the SafetyModule, triggered by governance in the event of an insolvency in the vault which cannot be covered by the insurance fund

State Variables

safetyModule

SafetyModule contract which manages staked token rewards, slashing and auctions

ISafetyModule public safetyModule;

paymentToken

Payment token used to purchase lots in auctions

IERC20 public paymentToken;

_nextAuctionId

ID of the next auction

uint256 internal _nextAuctionId;

_numCompletedAuctions

_auctions

Mapping of auction IDs to auction information

_tokensSoldPerAuction

Mapping of auction IDs to the number of tokens sold in that auction

_fundsRaisedPerAuction

Mapping of auction IDs to the number of payment tokens raised in that auction

_tokenBalancesInAuction

Mapping of ERC20 tokens to the internally tracked balance of this contract

Used to enforce that only one auction may be active for a given token at a time

Functions

onlySafetyModule

Modifier for functions that should only be called by the SafetyModule

constructor

AuctionModule constructor

Parameters

Name
Type
Description

_safetyModule

ISafetyModule

SafetyModule contract to manage this contract

_paymentToken

IERC20

ERC20 token used to purchase lots in auctions

getCurrentLotSize

Returns the current lot size of the auction

Lot size starts at auction.initialLotSize and increases by auction.lotIncreaseIncrement every auction.lotIncreasePeriod seconds, unless the lot size times the number of remaining lots reaches the contract's total balance of tokens, then the size remains fixed at totalBalance / auction.remainingLots

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Current number of tokens per lot

getRemainingLots

Returns the number of lots still available for sale in the auction

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Number of lots still available for sale

getLotPrice

Returns the price of each lot in the auction

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Price of each lot in payment tokens

getLotIncreaseIncrement

Returns the number of tokens by which the lot size increases each period

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Size of each lot increase

getLotIncreasePeriod

Returns the amount of time between each lot size increase

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Number of seconds between each lot size increase

getAuctionToken

Returns the address of the token being auctioned

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

IERC20

The ERC20 token being auctioned

getStartTime

Returns the timestamp when the auction started

The auction starts when the SafetyModule calls startAuction

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Timestamp when the auction started

getEndTime

Returns the timestamp when the auction ends

Auction can end early if all lots are sold or if the auction is terminated by the SafetyModule

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Timestamp when the auction ends

getTokensSold

Returns the number of tokens sold in the auction

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Number of tokens sold

getFundsRaised

Returns the amount of funds raised in the auction

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

uint256

Number of payment tokens raised

getNextAuctionId

Returns the ID of the next auction

Returns

Name
Type
Description

<none>

uint256

ID of the next auction

isAuctionActive

Returns whether the auction is still active

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

Returns

Name
Type
Description

<none>

bool

True if the auction is still active, false otherwise

isAnyAuctionActive

Returns whether any auction is still active

Returns

Name
Type
Description

<none>

bool

True if any auction is still active, false otherwise

buyLots

Buys one or more lots at the current lot size, and ends the auction if all lots are sold

The caller must approve this contract to transfer the lotPrice x numLotsToBuy in payment tokens

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

_numLotsToBuy

uint8

Number of lots to buy

completeAuction

Ends an auction after the time limit has been reached and approves the transfer of unsold tokens and funds raised

This function can be called by anyone, but only after the auction's end time has passed

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

paused

Indicates whether auctions are currently paused

Contract is paused if either this contract or the SafetyModule has been paused

Returns

Name
Type
Description

<none>

bool

True if paused, false otherwise

startAuction

Starts a new auction

Only callable by the SafetyModule

Parameters

Name
Type
Description

_token

IERC20

The ERC20 token to auction

_numLots

uint8

Number of lots in the auction

_lotPrice

uint128

Price of each lot of tokens in payment tokens

_initialLotSize

uint128

Initial number of tokens in each lot

_lotIncreaseIncrement

uint96

Amount of tokens by which the lot size increases each period

_lotIncreasePeriod

uint16

Number of seconds between each lot size increase

_timeLimit

uint32

Number of seconds before the auction ends if all lots are not sold

Returns

Name
Type
Description

<none>

uint256

ID of the auction

terminateAuction

Terminates an auction early and approves the transfer of unsold tokens and funds raised

Only callable by the SafetyModule

Parameters

Name
Type
Description

_auctionId

uint256

ID of the auction

setPaymentToken

Sets the token required for payments in all auctions

Only callable by governance

Parameters

Name
Type
Description

_newPaymentToken

IERC20

ERC20 token to use for payment

setSafetyModule

Replaces the SafetyModule contract

Only callable by governance

Parameters

Name
Type
Description

_newSafetyModule

ISafetyModule

Address of the new SafetyModule contract

pause

Pause the contract

Only callable by governance

unpause

Unpause the contract

Only callable by governance

_getCurrentLotSize

_completeAuction

Structs

Auction

Struct representing an auction

Properties

Name
Type
Description

token

IERC20

Address of the token being auctioned

active

bool

Whether the auction is still active

lotPrice

uint128

Price of each lot of tokens, denominated in payment tokens

initialLotSize

uint128

Initial size of each lot

numLots

uint8

Total number of lots in the auction

remainingLots

uint8

Number of lots that have not been sold

startTime

uint64

Timestamp when the auction started

endTime

uint64

Timestamp when the auction ends

lotIncreasePeriod

uint16

Number of seconds between each lot size increase

lotIncreaseIncrement

uint96

Amount of tokens by which the lot size increases each period

Last updated