Collateral Accounting
This section provides a deep understanding of how the accounting of collateral is done in the BookKeeper contract.
Where is a position's collateral recorded?
Each position's collateral amount and debt are recorded in the BookKeeper contract. In the BookKeeper contract, positions are the double mapping that keeps track of each position's lockedCollateral and debtShare.
positions mapping has the value as Position struct, and the struct's first member, 'lockedCollateral' keeps track of the collateral
How is a position's collateral recorded?
position.lockedCollateral represents the amount of collateral locked in a specific position. It serves as the primary reference to determine the amount of collateral a particular position holds. The value of position.lockedCollateral increases when a position is opened and decreases when it is closed. During the position opening flow, the value of CollateralToken variable increase temporarily, and later gets transferred to position.lockedCollateral
Similarly, the position value.lockedCollateral is temporarily transferred to the CollateralToken variable during the position closing flow. Then, when the collateral gets withdrawn from CollateralTokenAdapter, the temporarily increased number on CollateralToken decreases as much as withdrawn.
Three functions are directly involved in lockedCollateral accounting.
fn adjustPosition in BookKeeper
fn moveCollateral in BookKeeper
fn withdraw in CollateralTokenAdapter
fn deposit in CollateralTokenAdapter
Last updated