Skip to content

Commit be85d76

Browse files
aalavandhanbrandonilesnms-7
authored
V3.0.0 (#193)
* Added perp redemption to vault recovery flow (#159) * added perp redemption to vault recovery flow * perp external functions returning ops data * added natspec comments and renamed rollover preview struct * refactors bond and tranche helpers, added a new method to compute proportional tranche balances Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * meld method on rollover vault Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * added todos Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Brandon Iles <brandon@fragments.org> Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed duplicate implementation Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * unit tests for meld Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved unused contracts to folder Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * imported sigmoid utility Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Fee strategy 2.0 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp changes for fee strategy 2.0 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated unit tests with the new fee scheme Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Brandon Iles <brandon@fragments.org> Co-authored-by: nms-7 <57442379+nms-7@users.noreply.github.com> Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated fee strategy Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * using a normalized factor to compute sigmoid, rather than using a different target Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Update spot-contracts/contracts/strategies/FeeStrategy.sol Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * using explicit cast instead of abs Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed holding pen and discount math from perp Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp cleanups, removed unused revert paramters Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated peripheral contracts with the new fee mechanism and rollover scheme Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated fee strategy to compute tranche ratios based on senior most tranche, rather than using discount adjusted ratios Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated unit test suite Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed deprecated fee strategy interface functions Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * deleted deprecated contracts Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Brandon Iles <brandon@fragments.org> Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated rollover math condition Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed dirty diff from rebase Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * deleted unused contracts Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated sigmoid utility, imported two pow code Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * replaced == 0 conditions with <= 0 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * reverted exp val snapping Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * imported two pow tests Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * handling zero vault deposit/redeem Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * cleaned up error codes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated fee (monetary) policy for spot Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated bond issuer Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated perp Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed meld from rollover vault Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault code cleanup and private fn refactor Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault v2 storage update, mint redeem and deployment fees Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved rollover vault to parent dir Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Brandon Iles <brandon@fragments.org> Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fee policy terminology updates and review fixes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * review pass, removed annualized rollover fees, comment and naming updates Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * code review updates Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault allows 2-way swap between perps and underlying Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * subscription aware fee policy for swapping, using minting bond as the source of truth for tranche ratios Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed unused interface fn from bond issuer Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fee policy updates for perp, skipping fees when used by vault, reverting to only one authorized roller ie vault Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * utility to calculate ampl required to create x perps Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * error and comment cleanup Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated swap fee logic Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * code review fixes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Brandon Iles <brandon@fragments.org> Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * code review fixes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed perp as a vault asset, and redeeming perps only on swaps Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * simplified fee policy interface, accepts sr instead of computing it Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Perp removed external pricing strategy and optimized tranche value computation Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Vault clean up, function reorg and optimized tvl comp Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Assuming that incoming tranches withold no fees, thus removing all bw fee related math Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * interface cleanup Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fee policy: code review fixes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp: code review fixes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault: code review fixes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * interface: code review fixes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed string require errors infavor of custom errors Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * feePolicy: updated fee policy interface Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp: new fee policy interface, view methods regorg, skipping update state when paused, optimized cdr Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault: handling dust Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault: new fee policy interface, variable caching and tvl optimization, recoverAndRedeem and view methods reorg Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * unit tests Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fee policy: code review fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp: code review fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fee policy: updated dr condition Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault : code review fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * code review fix: unit-tests, perp expects valid vault Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * reorg return data Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * redemption amt calc optimization, assuming bond has only 2 tranches Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * code review fix for commit 1&2 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated lisc Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Renamed fee variable Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved keeper only methods to its own section Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved rollover vault Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * ran linter Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * bumped up solidity version to 0.8.20 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated hyper-param methods, removed logs & zero checks Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * comment fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * nonReentrant updateState Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * set keeper in init method Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * comment update Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * made transfer fn nonReentrant Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * returning instead of reverting in deposit,redeem and rollover Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved value fn into perp Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed perp supply zero check on burn computation Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Removed reserve count method Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed multiple reads Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * refactored rollover condition Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed paramter from rollover amt Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed one time use variable Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed zero price check Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * added comment Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed zero check Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * added else if Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * flipped rollover condition Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved perp supply call into compute redemption amt method Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Renamed fee policy variable Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * added fee initiailzier Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * router preview deposit update return struct Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed approve 0 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * added back perp rollover zero price check for safety Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * router assumming bond has only 2 tranches Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fee policy update, dr bounds Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved rollover vault Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault init cleanup Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * minUnderlyingBal check Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed address(0) check in updateFeePolicy Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * non-reentrant transferERC20 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed virtual updateKeeper Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed deployedAmt from deploy Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * rollover typo fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault sync refactor Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * rollover gas optimizaiton, removed storage read for Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * rollover performs tranche cleanup Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * made MAX_DEPLOYED_COUNT uint8 Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * recover comment fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault deposit/redeem return zero instead of reverting Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * renamed totalSupply_ to noteSupply Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed whenNotPaused from recover and redeem Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * using safeTransfer for transfer Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed _enforceVaultComposition Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed MIN_SWAP_UNITS check Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * min underlying perc in vault Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * renamed perp and vault share fee variables Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault get tvl cleanup Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * tranche helpers cleanup Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed deployed count and deployed at Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * comment update Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * assuming bond has only two tranches, thus bond-tranches data structure has fixed len arrays Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * increased vault's dust amt Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * meld perps style change Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault comment fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed comment vault n Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault using cached variable Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * cleaned up perp mint estimation, added comments Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * sync asset made into online fn Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed bond duration method Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * bond helpers using return val for getSeniorTranche Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fixed sigmoid condition Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Ran linter Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed bond/tranche double check in favor of one check for bond validity Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fixed bug, with underlying perc calc after swap Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * using cached value of reserve count Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp: renamed rollout condition and fixed order of checks in Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed duplicate comment in bond helpers Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp enforcing max len for reserve and using uint8 for reserve len, returning only tokens up for rollover Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fee policy cleanup Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * perp defensive check on rollover Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault enforcing liquidity constraints on both swap functions Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * bond helper minor style fix Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated testcases, back to full coverage Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * vault: removed redundant sync with redeem tranches on meld and rollover Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fixed router bug, with undeployed bonds Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * removed returns in bond helper Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Fee delta update Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated variable name Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * updated tasks with the new interface Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * testnet deployment Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * Pre release fixes (#199) * using fixed perc fees for ops * removed some unreachable code * added test case to check for dust recovery * removed vault deployment fee * pve002 router validation * pve004 preview deposit mature bond handling * Removed from paramters from asset transfer wrapper functions and using msg.sender directly, also using msg.sender instead of _msgSender * ran linter * updated unit tests * pve001 updating constructors * pve002-3 bond issuer tranche granularity check * Removed redundant computeDeviationRatio method from fee policy * openzeppelin defender report informational issues * Reverted pve002 * deployed to sepolia testnet (#201) Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * fixed liner issue Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * V2 final updates (#204) * updated sigmoid bound for 20% yearly rollover rate * updated LICENSE Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * natspec comment updates for variable reanmes Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * moved hyper paramter controls to keeper Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * a few more unit tests to improve coverage Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * upgrade tasks Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> * v2 deployment Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> --------- Signed-off-by: aalavandhann <6264334+aalavandhan@users.noreply.github.com> Co-authored-by: Brandon Iles <brandon@fragments.org> Co-authored-by: nms-7 <57442379+nms-7@users.noreply.github.com>
1 parent 88f0aaa commit be85d76

92 files changed

Lines changed: 16174 additions & 18999 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Licensed Work: Ampleforth Spot
1515
Additional Use Grant: Any uses listed and defined at
1616
spot-license-grants.ampleforthorg.eth
1717

18-
Change Date: The earlier of 2025-01-01 or a date specified at
18+
Change Date: The earlier of 2027-01-01 or a date specified at
1919
spot-license-date.ampleforthorg.eth
2020

2121
Change License: GNU General Public License v3.0 or later

spot-contracts/.eslintrc.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module.exports = {
55
mocha: true,
66
node: true,
77
},
8-
plugins: ["@typescript-eslint", "no-only-tests"],
8+
plugins: ["@typescript-eslint", "no-only-tests", "unused-imports"],
99
extends: ["standard", "plugin:prettier/recommended", "plugin:node/recommended"],
1010
parser: "@typescript-eslint/parser",
1111
parserOptions: {
@@ -27,5 +27,7 @@ module.exports = {
2727
},
2828
],
2929
"no-only-tests/no-only-tests": "error",
30+
"unused-imports/no-unused-imports": "error",
31+
"unused-imports/no-unused-vars": ["warn", { vars: "all" }],
3032
},
3133
};

0 commit comments

Comments
 (0)