TermAuction.sol
This contract belongs to the Term Auction group of contracts and is specific to a Term Repo deployment. This contract calculates a clearing price in a blind double auction and manages auction clearing
TermAuction
This contract calculates a clearing price in a blind double auction and manages auction clearing and settlement
This contract belongs to the Term Auction group of contracts and is specific to a Term Repo deployment
ClearingPriceState
THREESIXTY_DAYCOUNT_SECONDS
ADMIN_ROLE
DEVOPS_ROLE
INITIALIZER_ROLE
termRepoId
termAuctionId
auctionEndTime
dayCountFractionMantissa
termRepoServicer
termAuctionBidLocker
termAuctionOfferLocker
purchaseToken
emitter
clearingPrice
clearingPricePostProcessingOffset
auctionCompleted
auctionCancelledForWithdrawal
completeAuctionPaused
termContractPaired
onlyWhileAuctionClosed
This only runs if the auction is closed (after auction end time)
This uses the block timestamp to determine if the auction is closed
whenCompleteAuctionNotPaused
notTermContractPaired
constructor
initialize
Initializes the contract
See: https://docs.openzeppelin.com/contracts/4.x/upgradeable
pairTermContracts
completeAuction
Calculates an auction's clearing price, assigns bids/offers, and returns unassigned funds
Parameters
completeAuctionInput
struct CompleteAuctionInput
A struct containing all revealed and unrevealed bids and offers and expired rollover bids
cancelAuction
Cancels an auction and returns all funds to bidders and fulfillBiders
Parameters
completeAuctionInput
struct CompleteAuctionInput
A struct containing all revealed and unrevealed bids and offers and expired rollover bids
cancelAuctionForWithdrawal
Cancels an auction and sets auctionCancelledForWithdrawal to true to open unlocking tenders
_increaseCumSumBids
_decreaseCumSumBids
_minUint256
Returns the min of two uint256
values
Parameters
a
uint256
The first value to compare
b
uint256
The second value to compare
Return Values
[0]
uint256
The min of the two values
_calculateClearingPrice
Calculates the intersection between bid/offer schedules to arrive at a clearing price
Imagine a graph with price along the X-axis and cumsum(bid/offerAmount*price) along the Y-axis. This function finds the point where the supply line crosses the demand line using binary search
Parameters
sortedBids
struct TermAuctionRevealedBid[]
A sorted array of bids used to arrive at a demand schedule
sortedOffers
struct TermAuctionRevealedOffer[]
A sorted array of offers used to arrive at a supply schedule
clearingOffset
uint256
The offset to apply to the marginal bid and offer indexes when calculating the final clearing price
Return Values
[0]
uint256
clearingPrice The price at which Term Auction will be cleared
[1]
uint256
_findFirstIndexForPrice
Finds the index of the first bid with a bidPrice of price
and calculate the cumsum of the bid amounts up to that index
Parameters
price
uint256
The price to search for
sortedBids
struct TermAuctionRevealedBid[]
An array of sorted bids to search
startIndex
uint256
The index to start searching from
Return Values
i
uint256
The index of the first bid with a bidPrice of price
totalAmount
uint256
The cumsum of the bid amounts up to return index i
_findLastIndexForPrice
Finds the index of the last offer with a offerPrice of price
and calculate the cumsum of the offer amounts up to that index
Parameters
price
uint256
The price to search for
sortedOffers
struct TermAuctionRevealedOffer[]
An array of offers to search
startIndex
uint256
The index to start searching from
Return Values
i
uint256
The index of the last offer with a offerPrice of price
totalAmount
uint256
The cumsum of the offer amounts up to return index i
_fullyAssignBid
Fully assigns a bid
Parameters
bid
struct TermAuctionRevealedBid
The bid to assign
Return Values
[0]
uint256
The amount that was assigned
_fullyAssignOffer
Fully assigns an offer
Parameters
offer
struct TermAuctionRevealedOffer
The offer to assign
Return Values
[0]
uint256
The amount that was assigned
_partiallyAssignBid
Partially assigns a bid
Parameters
bid
struct TermAuctionRevealedBid
The bid to assign
assignedAmount
uint256
The amount to assign
Return Values
[0]
uint256
The amount that was assigned
_partiallyAssignOffer
Partially assigns an offer
Parameters
offer
struct TermAuctionRevealedOffer
The offer to assign
assignedAmount
uint256
The amount to assign
Return Values
[0]
uint256
The amount that was assigned
_assignRolloverBid
_markRolloverAsProcessed
_assignBids
Assigns bids up to maxAssignable
This method allocates pro-rata across an the marginal price group (pro-rata on the margin) and attempts to prevent residuals from accumulating to a single bid
Parameters
sortedBids
struct TermAuctionRevealedBid[]
An array of sorted bids to process
maxAssignable
uint256
The maximum bid amount that can be assigned across all bidders
purchaseTokenDecimals
uint256
The number of decimals of the purchase token
Return Values
[0]
uint256
The total amount assigned
_assignOffers
Assigns offers up to maxAssignable
This method allocates pro-rata across an the marginal price group (pro-rata on the margin) and attempts to prevent residuals from accumulating to a single offer
Parameters
sortedOffers
struct TermAuctionRevealedOffer[]
An array of sorted offers to process
maxAssignable
uint256
The maximum offer amount that can be assigned across all offers
purchaseTokenDecimals
uint256
The number of decimals of the purchase token
Return Values
[0]
uint256
The total amount assigned
_calculateRepurchasePrice
Calculates repurchase price given a purchase price (equivalent to principal plus interest)
Parameters
purchasePrice
uint256
The purchase price
Return Values
[0]
uint256
The repurchase price obtained by applying the clearing rate on an Actual/360 day-count convention
_calculateAndStoreClearingPrice
pauseCompleteAuction
_This function pauses the TermAuction contract preventing public state changes See {Pausable-pause}.
unpauseCompleteAuction
Unpuses the TermAuction contract allowing public state changes
_See {Pausable-unpause}.
_authorizeUpgrade
required override by the OpenZeppelin UUPS module
Parameters
impl
address
new impl address for proxy upgrade
Last updated