Project #4: Fractional Wrapper
Last updated
Last updated
Users can send a pre-specified erc-20 token (underlying) to an ERC20 contract(Fractional Wrapper).
Fractional Wrapper contract issues a number of Wrapper tokens to the sender, equal to the deposit multiplied by a fractional number, called exchange rate. Exchange rate is set by the contract owner.
This number is in the range of [0, 1e18], and available in increments of 10**-27. (ray).
At any point, a holder of Wrapper tokens can burn them to recover an amount of underlying equal to the amount of Wrapper tokens burned, divided by the exchange rate.
This Fractional Wrapper can conform to the .
User sends DAI to FWrapper.
User receives wDAI, (wDAI = DAI * ex_rate)
Exchange rate set by FWrapper owner
Ex_rate is has decimal precision of 10**27 precision
User can liquidate and get back underlying DAI, (wDAI is burnt) ---> dai_qty = wDAI/ex_rate
DAIToken - underlying
FractionalWrapper - "vault w/ ex_rate"
Ownable.sol - for onlyOwner modifier, applied on setExchangeRate
Both contracts are ERC20Mock, to issue tokens. FractionalWrapper must conform to ERC4626 specification.
all methods must be implemented
implementation of convert* and preview* will be identical in this case (no need to calculate some time-weighted average for convert*).