Improve ERC4626 virtual offset notes (#4722)
This commit is contained in:
@ -27,14 +27,14 @@ import {Math} from "../../../utils/math/Math.sol";
|
||||
* verifying the amount received is as expected, using a wrapper that performs these checks such as
|
||||
* https://github.com/fei-protocol/ERC4626#erc4626router-and-base[ERC4626Router].
|
||||
*
|
||||
* Since v4.9, this implementation uses virtual assets and shares to mitigate that risk. The `_decimalsOffset()`
|
||||
* corresponds to an offset in the decimal representation between the underlying asset's decimals and the vault
|
||||
* decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which itself
|
||||
* determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default offset
|
||||
* (0) makes it non-profitable, as a result of the value being captured by the virtual shares (out of the attacker's
|
||||
* donation) matching the attacker's expected gains. With a larger offset, the attack becomes orders of magnitude more
|
||||
* expensive than it is profitable. More details about the underlying math can be found
|
||||
* xref:erc4626.adoc#inflation-attack[here].
|
||||
* Since v4.9, this implementation introduces configurable virtual assets and shares to help developers mitigate that risk.
|
||||
* The `_decimalsOffset()` corresponds to an offset in the decimal representation between the underlying asset's decimals
|
||||
* and the vault decimals. This offset also determines the rate of virtual shares to virtual assets in the vault, which
|
||||
* itself determines the initial exchange rate. While not fully preventing the attack, analysis shows that the default
|
||||
* offset (0) makes it non-profitable even if an attacker is able to capture value from multiple user deposits, as a result
|
||||
* of the value being captured by the virtual shares (out of the attacker's donation) matching the attacker's expected gains.
|
||||
* With a larger offset, the attack becomes orders of magnitude more expensive than it is profitable. More details about the
|
||||
* underlying math can be found xref:erc4626.adoc#inflation-attack[here].
|
||||
*
|
||||
* The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued
|
||||
* to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets
|
||||
|
||||
Reference in New Issue
Block a user