BoncursFormula
This contract provides functions for calculating the purchase and sale return values on a uinque curve using a scaling factor. The formula converts a desired token amount into a reserve token cost and the sale of a token amount into a reserve token return.
This formula is a custom curve that sees an initial diminishing return on the cost to mint a token, but as the supply increases and the reserve balance grows, the value of the token increases and cannot go down. Used to reward early adopters and incentivize the holding of the token. Also, with the way the curve tends to move towards flat over time, it does not punish late adopters.
State Variables
MIN_SCALE
Minimum scale in basis points. Prevents loss of value
uint32 constant MIN_SCALE = 10000;
MAX_SCALE
Maximum scale in basis points
uint32 constant MAX_SCALE = 1000000;
WAD
Wei as decimal precision for calculations
uint256 constant WAD = 10 ** 18;
Functions
_calculateBoncursPurchaseCost
Returns the purchase cost for a given conversion (in the reserve token) for a desired amount (in the main token).
function _calculateBoncursPurchaseCost(
uint256 supply,
uint256 reserveBalance,
uint256 initialCost,
uint32 scalingFactor,
uint256 amount
) internal pure returns (uint256 purchaseCost);
Parameters
supply
uint256
token total supply
reserveBalance
uint256
current balance of the reserve token
initialCost
uint256
initial cost of the token
scalingFactor
uint32
scaling factor, represented in basis points, 1-10000
amount
uint256
amount of tokens to purchase
Returns
purchaseCost
uint256
cost of the conversion
_calculateBoncursSaleReturn
Returns the sale value for a given amount (in the main token) as a conversion into the reserve token.
function _calculateBoncursSaleReturn(uint256 supply, uint256 reserveBalance, uint256 amount)
internal
pure
returns (uint256);
Parameters
supply
uint256
token total supply
reserveBalance
uint256
current balance of the reserve token
amount
uint256
amount of tokens to sell
Returns
<none>
uint256
saleReturn return of the conversion
Errors
BoncursFormula__InvalidInput
error BoncursFormula__InvalidInput();
Last updated