diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json index 2d13a3bac..fd2467d44 100644 --- a/.openzeppelin/mainnet.json +++ b/.openzeppelin/mainnet.json @@ -17006,6 +17006,216 @@ } } } + }, + "c9a48c64e356317d3aaf432cb8dbd74677c11911e6045f4df3e62d0f87dc5548": { + "address": "0x1aCfF3eB9E4250Fb75526ceb3ff3b05c0CCfa42D", + "txHash": "0x317d0b5dce1b58b362e92eb78391e536042ee34d52f035e097ce5e7360fc6573", + "layout": { + "solcVersion": "0.8.28", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:169" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:111" + }, + { + "label": "main", + "offset": 0, + "slot": "151", + "type": "t_contract(IMain)32072", + "contract": "ComponentP1", + "src": "contracts/p1/mixins/Component.sol:21" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "ComponentP1", + "src": "contracts/p1/mixins/Component.sol:87" + }, + { + "label": "basketHandler", + "offset": 0, + "slot": "201", + "type": "t_contract(IBasketHandler)30661", + "contract": "AssetRegistryP1", + "src": "contracts/p1/AssetRegistry.sol:20" + }, + { + "label": "backingManager", + "offset": 0, + "slot": "202", + "type": "t_contract(IBackingManager)30389", + "contract": "AssetRegistryP1", + "src": "contracts/p1/AssetRegistry.sol:21" + }, + { + "label": "_erc20s", + "offset": 0, + "slot": "203", + "type": "t_struct(AddressSet)22716_storage", + "contract": "AssetRegistryP1", + "src": "contracts/p1/AssetRegistry.sol:24" + }, + { + "label": "assets", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_contract(IERC20)13972,t_contract(IAsset)29994)", + "contract": "AssetRegistryP1", + "src": "contracts/p1/AssetRegistry.sol:27" + }, + { + "label": "lastRefresh", + "offset": 0, + "slot": "206", + "type": "t_uint48", + "contract": "AssetRegistryP1", + "src": "contracts/p1/AssetRegistry.sol:31" + }, + { + "label": "__gap", + "offset": 0, + "slot": "207", + "type": "t_array(t_uint256)46_storage", + "contract": "AssetRegistryP1", + "src": "contracts/p1/AssetRegistry.sol:297" + } + ], + "types": { + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)46_storage": { + "label": "uint256[46]", + "numberOfBytes": "1472" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IAsset)29994": { + "label": "contract IAsset", + "numberOfBytes": "20" + }, + "t_contract(IBackingManager)30389": { + "label": "contract IBackingManager", + "numberOfBytes": "20" + }, + "t_contract(IBasketHandler)30661": { + "label": "contract IBasketHandler", + "numberOfBytes": "20" + }, + "t_contract(IERC20)13972": { + "label": "contract IERC20", + "numberOfBytes": "20" + }, + "t_contract(IMain)32072": { + "label": "contract IMain", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_contract(IERC20)13972,t_contract(IAsset)29994)": { + "label": "mapping(contract IERC20 => contract IAsset)", + "numberOfBytes": "32" + }, + "t_struct(AddressSet)22716_storage": { + "label": "struct EnumerableSet.AddressSet", + "members": [ + { + "label": "_inner", + "type": "t_struct(Set)22401_storage", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Set)22401_storage": { + "label": "struct EnumerableSet.Set", + "members": [ + { + "label": "_values", + "type": "t_array(t_bytes32)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint48": { + "label": "uint48", + "numberOfBytes": "6" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } } } } diff --git a/CHANGELOG.md b/CHANGELOG.md index efaee898c..eab8586b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ This release implements a global lock on `Main` (by inherinting from `GlobalReen This release prepares the core protocol for veRSR through the introduction of 3 registries (`DAOFeeRegistry`, `AssetPluginRegistry`, and `VersionRegistry`) and through restricting component upgrades to be handled by `Main`, where upgrade constraints can be enforced. +RTokenAsset.price() now reverts if the RTokenAsset is unpriced. + The release also expands collateral decimal support from 18 to 21, with some caveats about minimum token value. See [docs/solidity-style.md](./docs/solidity-style.md#Collateral-decimals) for more details. Finally, it adds resistance to toxic issuance by charging more when the collateral is under peg. diff --git a/contracts/facade/facets/ActFacet.sol b/contracts/facade/facets/ActFacet.sol index 61f3efcc5..d2781d085 100644 --- a/contracts/facade/facets/ActFacet.sol +++ b/contracts/facade/facets/ActFacet.sol @@ -114,19 +114,23 @@ contract ActFacet is Multicall { } surpluses[i] = erc20s[i].balanceOf(address(revenueTrader)); - (uint192 low, ) = reg.assets[i].price(); // {UoA/tok} - if (low == 0) continue; - // {qTok} = {UoA} / {UoA/tok} - minTradeAmounts[i] = minTradeVolume.safeDiv(low, FLOOR).shiftl_toUint( - int8(reg.assets[i].erc20Decimals()) - ); + try reg.assets[i].price() returns (uint192 low, uint192) { + if (low == 0) continue; + + // {qTok} = {UoA} / {UoA/tok} + minTradeAmounts[i] = minTradeVolume.safeDiv(low, FLOOR).shiftl_toUint( + int8(reg.assets[i].erc20Decimals()) + ); - if ( - surpluses[i] > minTradeAmounts[i] && - revenueTrader.trades(erc20s[i]) == ITrade(address(0)) - ) { - canStart[i] = true; + if ( + surpluses[i] > minTradeAmounts[i] && + revenueTrader.trades(erc20s[i]) == ITrade(address(0)) + ) { + canStart[i] = true; + } + } catch { + continue; } } diff --git a/contracts/interfaces/IAsset.sol b/contracts/interfaces/IAsset.sol index 1543b2c78..8e3a0fd5a 100644 --- a/contracts/interfaces/IAsset.sol +++ b/contracts/interfaces/IAsset.sol @@ -26,7 +26,7 @@ interface IAsset is IRewardable { /// @dev Called immediately after deployment, before use function refresh() external; - /// Should not revert + /// Should not revert (RTokenAsset exempt) /// low should be nonzero if the asset could be worth selling /// @return low {UoA/tok} The lower end of the price estimate /// @return high {UoA/tok} The upper end of the price estimate diff --git a/contracts/p1/RevenueTrader.sol b/contracts/p1/RevenueTrader.sol index d51d04807..8dd55578e 100644 --- a/contracts/p1/RevenueTrader.sol +++ b/contracts/p1/RevenueTrader.sol @@ -72,6 +72,7 @@ contract RevenueTraderP1 is TradingP1, IRevenueTrader { } /// Return registered ERC20s to the BackingManager if distribution for tokenToBuy is 0 + /// @dev Only intended to unstick tokens, not to support recollateralization efforts /// @custom:interaction function returnTokens(IERC20[] memory erc20s) external @@ -98,6 +99,7 @@ contract RevenueTraderP1 is TradingP1, IRevenueTrader { /// Process some number of tokens /// If the tokenToBuy is included in erc20s, RevenueTrader will distribute it at end of the tx + /// @dev If tokenToBuy is the RToken revenue processing halts if RTokenAsset.price() reverts /// @param erc20s The ERC20s to manage; can be tokenToBuy or anything registered /// @param kinds The kinds of auctions to launch: DUTCH_AUCTION | BATCH_AUCTION /// @custom:interaction not strictly RCEI; nonReentrant diff --git a/contracts/plugins/assets/RTokenAsset.sol b/contracts/plugins/assets/RTokenAsset.sol index 938032cf0..c6e2f0b2c 100644 --- a/contracts/plugins/assets/RTokenAsset.sol +++ b/contracts/plugins/assets/RTokenAsset.sol @@ -62,7 +62,7 @@ contract RTokenAsset is IAsset, VersionedAsset, IRTokenOracle { /// in lending markets or anywhere where secondary market price is the central concern. /// @return low {UoA/tok} The low price estimate /// @return high {UoA/tok} The high price estimate - function tryPrice() external view virtual returns (uint192 low, uint192 high) { + function tryPrice() public view virtual returns (uint192 low, uint192 high) { (uint192 lowBUPrice, uint192 highBUPrice) = basketHandler.price(true); // {UoA/BU} require(lowBUPrice != 0 && highBUPrice != FIX_MAX, "invalid price"); assert(lowBUPrice <= highBUPrice); // not obviously true just by inspection @@ -98,13 +98,7 @@ contract RTokenAsset is IAsset, VersionedAsset, IRTokenOracle { /// @return {UoA/tok} The lower end of the price estimate /// @return {UoA/tok} The upper end of the price estimate function price() public view virtual returns (uint192, uint192) { - try this.tryPrice() returns (uint192 low, uint192 high) { - return (low, high); - } catch (bytes memory errData) { - // see: docs/solidity-style.md#Catching-Empty-Data - if (errData.length == 0) revert(); // solhint-disable-line reason-string - return (0, FIX_MAX); - } + return tryPrice(); } /// Should not revert @@ -113,7 +107,7 @@ contract RTokenAsset is IAsset, VersionedAsset, IRTokenOracle { /// @return lotLow {UoA/tok} The lower end of the lot price estimate /// @return lotHigh {UoA/tok} The upper end of the lot price estimate function lotPrice() external view virtual returns (uint192 lotLow, uint192 lotHigh) { - return price(); + return tryPrice(); } /// @return {tok} The balance of the ERC20 in whole tokens diff --git a/contracts/plugins/assets/curve/CurveRecursiveCollateral.sol b/contracts/plugins/assets/curve/CurveRecursiveCollateral.sol index 64accb7f2..4094f953d 100644 --- a/contracts/plugins/assets/curve/CurveRecursiveCollateral.sol +++ b/contracts/plugins/assets/curve/CurveRecursiveCollateral.sol @@ -14,6 +14,8 @@ import "../OracleLib.sol"; * @notice Collateral plugin for a CurveLP token for a pool between a * a USD reference token and a USD RToken. * + * @notice DEPRECATED + * * Note: * - The RToken _must_ be the same RToken using this plugin as collateral! * - The RToken SHOULD have an RSR overcollateralization layer. DO NOT USE WITHOUT RSR! diff --git a/contracts/plugins/assets/curve/CurveStableMetapoolCollateral.sol b/contracts/plugins/assets/curve/CurveStableMetapoolCollateral.sol index 6b958675e..00665b978 100644 --- a/contracts/plugins/assets/curve/CurveStableMetapoolCollateral.sol +++ b/contracts/plugins/assets/curve/CurveStableMetapoolCollateral.sol @@ -10,6 +10,9 @@ interface ICurveMetaPool is ICurvePool, IERC20Metadata { /** * @title CurveStableMetapoolCollateral + * + * @notice DEPRECATED in 4.0.0 + * * This plugin contract is intended for 2-fiattoken stable metapools that * DO NOT involve RTokens, such as LUSD-fraxBP or MIM-3CRV. * diff --git a/contracts/plugins/assets/curve/CurveStableRTokenMetapoolCollateral.sol b/contracts/plugins/assets/curve/CurveStableRTokenMetapoolCollateral.sol index 50eab5bcd..5cdd6e80a 100644 --- a/contracts/plugins/assets/curve/CurveStableRTokenMetapoolCollateral.sol +++ b/contracts/plugins/assets/curve/CurveStableRTokenMetapoolCollateral.sol @@ -8,6 +8,8 @@ import "./CurveStableMetapoolCollateral.sol"; * This plugin contract is intended for 2-fiattoken stable metapools that * involve RTokens, such as eUSD-fraxBP. * + * @notice DEPRECATED in 4.0.0 + * * tok = ConvexStakingWrapper(pairedUSDRToken/USDBasePool) * ref = PairedUSDRToken/USDBasePool pool invariant * tar = USD @@ -142,6 +144,7 @@ contract CurveStableRTokenMetapoolCollateral is CurveStableMetapoolCollateral { override returns (uint192 lowPaired, uint192 highPaired) { + // can revert if pairedToken is a >=4.0.0 RToken return pairedAssetRegistry.toAsset(pairedToken).price(); } } diff --git a/contracts/spells/4_2_0.sol b/contracts/spells/4_2_0.sol index f2f803b56..6e7af41f5 100644 --- a/contracts/spells/4_2_0.sol +++ b/contracts/spells/4_2_0.sol @@ -22,12 +22,11 @@ bytes32 constant CANCELLER_ROLE = keccak256("CANCELLER_ROLE"); /** * The upgrade spell for the 4.2.0 release. Upgrading RToken must be on 3.4.0. * - * RTokenes supported: + * Supported RTokens: * Mainnet: * - eUSD * - ETH+ * - USD3 - * - dgnETH * Base: * - hyUSD * - bsdETH @@ -58,88 +57,84 @@ contract Upgrade4_2_0 is Versioned { // ====================================================================================== // 4.2.0 Assets (mainnet) - Asset[56] MAINNET_ASSETS = [ + Asset[53] MAINNET_ASSETS = [ Asset(0xbCb71eE9c3372f3444cBBe3E1b263204967EdBE3), // RSR - Asset(0xFb56B651f882f8f90d35DD7ca181A7F4D889ECac), // stkAAVE - Asset(0x70C8611F5e34266c09c896f3547D1f7Fccf44D54), // COMP - Asset(0x1942270ac94E6C6041C7F7c87562Ba8dDB1bDFFc), // CRV - Asset(0x2362A9B237e4f06491B7E3827eE179b77f2B22c6), // CVX - Asset(0xb90FE39CB47c4401A941528769f107dEe8e49488), // DAI - Asset(0x3A078799a9823cBda084a79c7cAF47f499c6EA09), // USDC - Asset(0xD8A1b8e73DC025C527493436057f0d8Fc01E1973), // USDT - Asset(0x3A395c1bC233D43d126a971b15D8c2b6eB803ca6), // aDAI - Asset(0xD1A2a985a18ddf30299cF2bDd0592B29e0AA3e84), // aUSDC - Asset(0x723e269D178E887E1691f3cEe71c840B5C5b9F76), // aUSDT - Asset(0x8487278d9262B9Dcca4beC85B125A45608d0067A), // cDAI - Asset(0x9A84c6F204209957ddA0064EaeAAf6138fDb8cea), // cUSDC - Asset(0xf35FbE1576E9D52c20B7ef8626477DcFb939d9Ef), // cUSDT - Asset(0x3484EFB04a54bF376da091f4364F4961F7a01B74), // cWBTC - Asset(0xe3dA655331649B86BfE3356beD99258083599543), // cETH - Asset(0xcC07EF5FDafa6298b276f14A6F4198317D0d20c3), // WBTC - Asset(0x868dbBD8B7d1AED1fEc4c13cc4a15f50965E2FB9), // WETH - Asset(0xc915f28D1Cd97703cF0940ABB192EE50dD882f8c), // wstETH - Asset(0x02D960943E1dD3B2c4d621dD8b72489FA4d7cE49), // rETH - Asset(0x8CfB48b594D54C5BC122f3c4374E16Fcf1050a43), // fUSDC - Asset(0x097b09fd6932cEC8cf47d5Ec0b0b7DeFb0C97b02), // fUSDT - Asset(0x0c82eFbbd9B0f47fDa04b83226dbFBC04EC728b8), // fDAI - Asset(0xCC0c0c376cebd701D9126228510f31F9096b836a), // fFRAX - Asset(0x8E24283eF5F6FE85fed48AC3A3d4248B5ba29668), // cUSDCv3 - Asset(0x4aDf4c9b985A743D9fEF14ae4b3e79661F73C78b), // cUSDTv3 - Asset(0xA9f37b188d71b66C3e1ea876F61e00377174508a), // cvx3Pool - Asset(0x7e80B2f7b6abb98028cC8A66aE6f7ea5302fA904), // cvxPayPool - Asset(0x1E98A442F917aA8e0e1f6e18687e58D954b8FfC2), // cvxCrvUSDUSDC - Asset(0x738C191F95C053602e272AfAF67A638519fA4B2F), // cvxCrvUSDUSDT - Asset(0x875af0Bab943b7416c6D2142546cAb61F1Ad964a), // cvxeUSDFRAXBP - Asset(0xfa025df685BA0A09B2C767f4Cc1a1972F140d421), // cvxETHPlusETH - Asset(0x2fe50f96Cd61a3056D497FE88CEA8441244D5d5E), // sDAI - Asset(0xdCEe056a2fEB893EB1a1C3e3F103Ac8AB098CE2e), // cbETH - Asset(0x3ca3359006c55164753Ae475D995163adAB5432d), // maUSDT - Asset(0x30789B6A26735c83774cD49e22C6f68dD4533A73), // maUSDC - Asset(0x14CEF4f11bD1f2A9E6416b812F7D45481c9dD896), // maDAI - Asset(0x65fF9Cf2fE6A28F5fd7fAF5Fd0E54EF9B85DF4E8), // maWBTC - Asset(0x3Cb9DD76AEf20d97C0314ad5Cae6D3d54D87f6eE), // maWETH - Asset(0xc8F9C28880797cF241D4241395f9Bf14c9E7135C), // maStETH - Asset(0xFB80E9A48493ac5C3c401Aa713146825d3bB9CA6), // saEthUSDC - Asset(0x3E2D5CF862c959F5A4046558Bec90C02dD5472eD), // saEthUSDT - Asset(0x8B13ac47E0bF142630eAc3e838A0c0AcE8E81c35), // saEthPyUSD - Asset(0x3B8bb1153C6b4331AC5eE50d59437A244Ed8Cf57), // yvCurveUSDCcrvUSD - Asset(0x661335963a4e84A5e3Fb58a9110f635bbf116201), // sFRAX - Asset(0xa514214E14d64822EE70dfF2d5E15f9a2772aD20), // sfrxETH - Asset(0xd9Da5527B077d81b0289eae2745EaF48f0bC433f), // steakUSDC - Asset(0x46eE78397ab4E334A85Bbc7B7C3A2935f175D4d9), // steakPYUSD - Asset(0xC2b73b106cCb4D2Cf937bFfCD629f3e636773567), // bbUSDT - Asset(0x2E22d688CF3846e5303f6E4eaD0a7455801813E2), // Re7WETH - Asset(0x1c0a14A44C4a6834FE23632dA2f493cC4cf87DbA), // ETHx - Asset(0x6F7eDae52dD7e45f470C327788249a2812A259d8), // apxETH - Asset(0x4f30165072351923A1A4BC3926050986318f9B34), // sUSDe - Asset(0xe0941A6e0DFC823CF44e95664a5B151041C13D42), // pyUSD - Asset(0x8a1a3B46749b81Cf91d56dF6042E12CE50E1b08A), // sUSDS - Asset(0xa4D38731434e875d7E30e13d8b65BEfEd7d47Ac2) // wOETH + Asset(0xFDE702794298DB19e2a235782B82aD88053F7335), // stkAAVE + Asset(0xA32a92073fEB7ed31081656DeFF34518FB5194b9), // COMP + Asset(0x69841bA9E09019acA0d16Ae9c9724D25d51F6956), // CRV + Asset(0x2635c3B92c8451F9D1e75BD61FCF87D1eCdf0ad0), // CVX + Asset(0x7504ED02f3f151Df241ec2eb0bF1a9601fcb012a), // DAI + Asset(0xBBF50a582cC03cbbC7E228dc3196091301348B0e), // USDC + Asset(0xBC0DC981001B6673F615978B63818fD1F6B0FF98), // USDT + Asset(0x9ea621376455B88E4022633399bcd1FfD7844210), // aDAI + Asset(0x1645Dd4B47D7FbbFdF876061a9e7fE0eb3C72Eb1), // aUSDC + Asset(0x695980209248264Ff7FcD19f7Cc217376FEaE163), // aUSDT + Asset(0xf8b09C5b3a1eacd095627fb1354665432DC1D077), // cDAI + Asset(0x7A58646a44Dc460fe627f2fd76142b99832F0de6), // cUSDC + Asset(0xD3F81Fc6c575CE44283Fd48dA7f0337d8d3d24FB), // cUSDT + Asset(0x32Ab9216188F24434Dc629Acfa1554ab7623f300), // cWBTC + Asset(0x07b2b41037d89F91DC91aD1DDCCA3e8515FF049E), // cETH + Asset(0xCab9805b012460C4E176Fb6b521c20d7bc43419F), // WBTC + Asset(0x90c26f98cBE23666ED1E59186e1e4888512BE58d), // WETH + Asset(0xF156B8b44941C6f9c1Fd4825b0C6e50ecFDECfC7), // wstETH + Asset(0x81283be7aD5A6d6C4A085b4D694B127Ccf7E652E), // rETH + Asset(0x73073c75ddaeC9Ce917f326e8fa860B8a773e5a3), // fUSDC + Asset(0x169544B6422C6690457931259FAd8C0A76540A2E), // fUSDT + Asset(0x79ed64e67B846E483594C496F05B25835e53c614), // fDAI + Asset(0xBb7B4CAA808C9FA262095221299dbc873071CAF4), // fFRAX + Asset(0x309e7D2DF4fc528f8Fd58bE6ecF73293dd2e7e7f), // cUSDCv3 + Asset(0xa52F93E61EdF1B77B2D680945F3EA4E84Bb825D3), // cUSDTv3 + Asset(0xE898cd20696fFE17489955101B97F3f9103B83aC), // cvx3Pool + Asset(0xFDe02d56dec895f7769dC0505D98706f029738D2), // cvxPayPool + Asset(0xcF9604276C6F4460CA7D1AA079826A138CFBb5c0), // cvxCrvUSDUSDC + Asset(0x08c31bdAbCABDE22DAf07c816aB6FFc7c193Cd60), // cvxCrvUSDUSDT + Asset(0xEB11916A884342ef772Ef2941F586c9a42Fd6Db4), // sDAI + Asset(0x5ff1120487EE5668D224C8C28ca3d548de3d1417), // cbETH + Asset(0x41A702f9F7e2fB89Ae7A58B71983187A779F4f02), // maUSDT + Asset(0xAdd6044E6d927e9d0b60e01aea96F8653f386b0F), // maUSDC + Asset(0x38C6F020ec71bDf13653E3D2dED8457295dD4DCa), // maDAI + Asset(0x39e9b883185940101eeF200C507128f31Fa6f933), // maWBTC + Asset(0xeF6bC7e7C964Df4E51e7754c43E4eC425b84c0fE), // maWETH + Asset(0xfC74B3026A12Dfc421AB5ec2a1155dE14DcB63E2), // maStETH + Asset(0x56bcd730040417b871CDf2549564EbB3C88730c9), // saEthUSDC + Asset(0xd317b21d37B171F7821420cBE59eBfD3c1248200), // saEthUSDT + Asset(0x6CeF509a76E0Fa99105fF618ae3Ef239eE000142), // saEthPyUSD + Asset(0x47084e9F96CE9F17A46Ab92E1E29fA4a0592CAc3), // yvCurveUSDCcrvUSD + Asset(0xbDEaddB62791f08BbB0c83E32f3A6c2a69cecBB3), // sFRAX + Asset(0x71793f9e0A13CE361560aFa588aCFac9B525b1c1), // sfrxETH + Asset(0xb1327EAd6ab9A1e363C4fC61648bD3131A587E39), // steakUSDC + Asset(0xB106614aB25474d24861BB6b92AE7a9335ab8507), // steakPYUSD + Asset(0xB462C68cBbF89E440B36073E104f646257afF1c6), // bbUSDT + Asset(0xe8d05DB4aB6fCD3f261C990B8a592A9ba6A65e44), // Re7WETH + Asset(0x9fc417439D8C12159A89962C28D8A8dED9EA9dde), // ETHx + Asset(0x5A78da62a85099A3Da30e56F5dA8db95aFc63920), // apxETH + Asset(0x403623175656ED0CDF1F9efE54867761F1EBf1D8), // sUSDe + Asset(0x4FD189996b5344Eb4CF9c749b97C7424D399d24e), // sUSDS + Asset(0xBFAc3e99263B7aE9704eC1c879f7c0a57C6b53e1) // wOETH ]; // 4.2.0 Assets (base) - Asset[21] BASE_ASSETS = [ + Asset[20] BASE_ASSETS = [ Asset(0x22018D85BFdA9e2673FB4101e957562a1e952Cdf), // RSR - Asset(0xf535Cab96457558eE3eeAF1402fCA6441E832f08), // COMP - Asset(0x0e8439a17bA5cBb2D9823c03a02566B9dd5d96Ac), // STG - Asset(0xf7d1C6eE4C0D84C6B530D53A897daa1E9eB56833), // AERO - Asset(0xBe70970a10C186185b1bc1bE980eA09BD68fD97A), // DAI - Asset(0xeaCaF85eA2df99e56053FD0250330C148D582547), // USDC - Asset(0x39e19d88F3D5C25B5A684e8A500dBEC2E2c46327), // USDbC - Asset(0x98f292e6Bb4722664fEffb81448cCFB5B7211469), // WETH - Asset(0xA87e9DAe6E9EA5B2Be858686CC6c21B953BfE0B8), // cbETH - Asset(0xF5366f67FF66A3CefcB18809a762D5b5931FebF8), // cUSDCv3 - Asset(0x773cf50adCF1730964D4A9b664BaEd4b9FFC2450), // saBasUSDC - Asset(0x5ccca36CbB66a4E4033B08b4F6D7bAc96bA55cDc), // wstETH - Asset(0x1cCa3FBB11C4b734183f997679d52DeFA74b613A), // aeroUSDCeUSD - Asset(0xC98eaFc9F249D90e3E35E729e3679DD75A899c10), // aeroWETHAERO - Asset(0x339c1509b980D80A0b50858518531eDbe2940dA1), // aeroMOGWETH - Asset(0x1BD20253c49515D348dad1Af70ff2c0473FEa358), // aeroUSDzUSDC - Asset(0xDAacEE75C863a79f07699b094DB07793D3A52D6D), // aeroWETHcbBTC - Asset(0x6647c880Eb8F57948AF50aB45fca8FE86C154D24), // aeroWETHWELL - Asset(0xCFA67f42A0fDe4F0Fb612ea5e66170B0465B84c1), // aeroWETHDEGEN - Asset(0x45B950AF443281c5F67c2c7A1d9bBc325ECb8eEA), // meUSD - Asset(0x4024c00bBD0C420E719527D88781bc1543e63dd5) // wsuperOETHb + Asset(0xC9c37FC53682207844B058026024853A9C0b8c7B), // COMP + Asset(0xe0E1d3c6f09DA01399e84699722B11308607BBfC), // STG + Asset(0x7f7B77e49d5b30445f222764a794AFE14af062eB), // AERO + Asset(0xD31eEc6679Dd18D5D42A92F32f01Ed98d4e91941), // DAI + Asset(0x18a26902126154437322fe01fBa04A36b093906f), // USDC + Asset(0x27F672aAf061cb0b2640a4DFCCBd799cD1a7309A), // USDbC + Asset(0x6a0Fc14d21247D4fDf7E12Ebe22307687b7750fb), // WETH + Asset(0x14c443d8BdbE9A65F3a23FA4e199d8741D5B38Fa), // cbETH + Asset(0xdEBe74dc2A415e00bE8B4b9d1e6e0007153D006a), // cUSDCv3 + Asset(0xa9F0eca90B5d4f213f8119834E0920785bb70F46), // saBasUSDC + Asset(0x9b2A9bAeB8F1930fC2AF9b7Fa473edF2B8c3B549), // wstETH + Asset(0x97F9d5ed17A0C99B279887caD5254d15fb1B619B), // aeroUSDCeUSD + Asset(0xee587c5C262824b9423e73303dFf270EcE5074c9), // aeroWETHAERO + Asset(0x719fbae9e2Dcd525bCf060a8D5DBC6C9fE104A50), // aeroMOGWETH + Asset(0x171034eFCA7349E4D1944d179ccf52277D1CA6c9), // aeroWETHcbBTC + Asset(0x5Cb6656970B21d51c0885C3831A14010d3fBF5Ed), // aeroWETHWELL + Asset(0xb56aa995Ab51f32885C72aA825BEa7559c06a72f), // aeroWETHDEGEN + Asset(0x9CB8fac0d43468068DaB561e7797cE3747624A21), // meUSD + Asset(0x878b995bDD2D9900BEE896Bd78ADd877672e1637) // wsuperOETHb ]; // ====================================================================================== @@ -176,12 +171,12 @@ contract Upgrade4_2_0 is Versioned { if (_mainnet) { // 4.2.0 deployer (mainnet) - deployer = IDeployer(0x087Ac594713DcF03a85A0d3CA10ACe81F47d4526); + deployer = IDeployer(0x40cd76E78Af4aAc744D1FA443359e7e26c982F9D); // DAO registries (mainnet) registries = IDeployer.Registries( - VersionRegistry(0xBA8CD83f793aA046Fe5Ab7bA01f855742F2D6a30), - AssetPluginRegistry(0x6cf05Ea2A94a101CE6A44Ec2a2995b43F1b0958f), + VersionRegistry(0xBA8CD83f793aA046Fe5Ab7bA01f855742F2D6a30), // TODO + AssetPluginRegistry(0x6cf05Ea2A94a101CE6A44Ec2a2995b43F1b0958f), // TODO DAOFeeRegistry(0xec716deD4eABa060937D1a915F166E237039342B), ITrustedFillerRegistry(0x279ccF56441fC74f1aAC39E7faC165Dec5A88B3A) ); @@ -199,12 +194,12 @@ contract Upgrade4_2_0 is Versioned { } } else { // 4.2.0 deployer (base) - deployer = IDeployer(0x9E50605e02483c273F7B5A5826f363F3a46DCA79); + deployer = IDeployer(0x9FF9c353136e86EFe02ADD177E7c9769f8a5A77F); // DAO registries (base) registries = IDeployer.Registries( - VersionRegistry(0x3BECE5EC596331033726E5C6C188c313Ff4E3fE5), - AssetPluginRegistry(0x87A959e0377C68A50b08a91ae5ab3aFA7F41ACA4), + VersionRegistry(0x3BECE5EC596331033726E5C6C188c313Ff4E3fE5), // TODO + AssetPluginRegistry(0x87A959e0377C68A50b08a91ae5ab3aFA7F41ACA4), // TODO DAOFeeRegistry(0x3513D2c7D2F51c678889CeC083E7D7Ae27b219aD), ITrustedFillerRegistry(0x72DB5f49D0599C314E2f2FEDf6Fe33E1bA6C7A18) ); diff --git a/docs/collateral.md b/docs/collateral.md index 03854303c..4ed8080e0 100644 --- a/docs/collateral.md +++ b/docs/collateral.md @@ -41,7 +41,7 @@ interface IAsset is IRewardable { /// @dev Called immediately after deployment, before use function refresh() external; - /// Should not revert + /// Should not revert (RTokenAsset exempt) /// low should be nonzero if the asset could be worth selling /// @return low {UoA/tok} The lower end of the price estimate /// @return high {UoA/tok} The upper end of the price estimate diff --git a/docs/overview.md b/docs/overview.md index 6b1d231e9..242a0d3c9 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -58,6 +58,8 @@ The protocol requires an asset in order to handle an ERC20. Some assets are `col Pure assets provide USD pricing information only. +All assets are expected to have non-reverting `price()` functions, with the exception of RTokenAsset. The consequence of `RTokenAsset.price()` reverting is to halt most forms of revenue trading but allow other functionality to continue. + #### Collateral The more interesting type of asset is a _collateral_ asset. A collateral asset provides additional `refPerTok` and `targetPerRef` exchange rates that allow revenue to be measured against some external unit, called the "target unit". These contracts maintain an overall `status() view returns (CollateralStatus)` enum that the BasketHandler uses to define an overall notion of basket status. If the collateral ever becomes DISABLED, the BasketHandler will swap it out for a SOUND collateral in the appropriate quantity. diff --git a/scripts/addresses/1-tmp-assets-collateral.json b/scripts/addresses/1-tmp-assets-collateral.json index 64b8890ce..953a18e5d 100644 --- a/scripts/addresses/1-tmp-assets-collateral.json +++ b/scripts/addresses/1-tmp-assets-collateral.json @@ -1,62 +1,59 @@ { "assets": { - "stkAAVE": "0xFb56B651f882f8f90d35DD7ca181A7F4D889ECac", - "COMP": "0x70C8611F5e34266c09c896f3547D1f7Fccf44D54", - "CRV": "0x1942270ac94E6C6041C7F7c87562Ba8dDB1bDFFc", - "CVX": "0x2362A9B237e4f06491B7E3827eE179b77f2B22c6" + "stkAAVE": "0xFDE702794298DB19e2a235782B82aD88053F7335", + "COMP": "0xA32a92073fEB7ed31081656DeFF34518FB5194b9", + "CRV": "0x69841bA9E09019acA0d16Ae9c9724D25d51F6956", + "CVX": "0x2635c3B92c8451F9D1e75BD61FCF87D1eCdf0ad0" }, "collateral": { - "DAI": "0xb90FE39CB47c4401A941528769f107dEe8e49488", - "USDC": "0x3A078799a9823cBda084a79c7cAF47f499c6EA09", - "USDT": "0xD8A1b8e73DC025C527493436057f0d8Fc01E1973", - "aDAI": "0x3A395c1bC233D43d126a971b15D8c2b6eB803ca6", - "aUSDC": "0xD1A2a985a18ddf30299cF2bDd0592B29e0AA3e84", - "aUSDT": "0x723e269D178E887E1691f3cEe71c840B5C5b9F76", - "cDAI": "0x8487278d9262B9Dcca4beC85B125A45608d0067A", - "cUSDC": "0x9A84c6F204209957ddA0064EaeAAf6138fDb8cea", - "cUSDT": "0xf35FbE1576E9D52c20B7ef8626477DcFb939d9Ef", - "cWBTC": "0x3484EFB04a54bF376da091f4364F4961F7a01B74", - "cETH": "0xe3dA655331649B86BfE3356beD99258083599543", - "WBTC": "0xcC07EF5FDafa6298b276f14A6F4198317D0d20c3", - "WETH": "0x868dbBD8B7d1AED1fEc4c13cc4a15f50965E2FB9", - "wstETH": "0xc915f28D1Cd97703cF0940ABB192EE50dD882f8c", - "rETH": "0x02D960943E1dD3B2c4d621dD8b72489FA4d7cE49", - "fUSDC": "0x8CfB48b594D54C5BC122f3c4374E16Fcf1050a43", - "fUSDT": "0x097b09fd6932cEC8cf47d5Ec0b0b7DeFb0C97b02", - "fDAI": "0x0c82eFbbd9B0f47fDa04b83226dbFBC04EC728b8", - "fFRAX": "0xCC0c0c376cebd701D9126228510f31F9096b836a", - "cUSDCv3": "0x8E24283eF5F6FE85fed48AC3A3d4248B5ba29668", - "cUSDTv3": "0x4aDf4c9b985A743D9fEF14ae4b3e79661F73C78b", - "cvx3Pool": "0xA9f37b188d71b66C3e1ea876F61e00377174508a", - "cvxPayPool": "0x7e80B2f7b6abb98028cC8A66aE6f7ea5302fA904", - "cvxCrvUSDUSDC": "0x1E98A442F917aA8e0e1f6e18687e58D954b8FfC2", - "cvxCrvUSDUSDT": "0x738C191F95C053602e272AfAF67A638519fA4B2F", - "cvxeUSDFRAXBP": "0x875af0Bab943b7416c6D2142546cAb61F1Ad964a", - "cvxETHPlusETH": "0xfa025df685BA0A09B2C767f4Cc1a1972F140d421", - "sDAI": "0x2fe50f96Cd61a3056D497FE88CEA8441244D5d5E", - "cbETH": "0xdCEe056a2fEB893EB1a1C3e3F103Ac8AB098CE2e", - "maUSDT": "0x3ca3359006c55164753Ae475D995163adAB5432d", - "maUSDC": "0x30789B6A26735c83774cD49e22C6f68dD4533A73", - "maDAI": "0x14CEF4f11bD1f2A9E6416b812F7D45481c9dD896", - "maWBTC": "0x65fF9Cf2fE6A28F5fd7fAF5Fd0E54EF9B85DF4E8", - "maWETH": "0x3Cb9DD76AEf20d97C0314ad5Cae6D3d54D87f6eE", - "maStETH": "0xc8F9C28880797cF241D4241395f9Bf14c9E7135C", - "saEthUSDC": "0xFB80E9A48493ac5C3c401Aa713146825d3bB9CA6", - "saEthUSDT": "0x3E2D5CF862c959F5A4046558Bec90C02dD5472eD", - "saEthPyUSD": "0x8B13ac47E0bF142630eAc3e838A0c0AcE8E81c35", - "yvCurveUSDCcrvUSD": "0x3B8bb1153C6b4331AC5eE50d59437A244Ed8Cf57", - "sFRAX": "0x661335963a4e84A5e3Fb58a9110f635bbf116201", - "sfrxETH": "0xa514214E14d64822EE70dfF2d5E15f9a2772aD20", - "steakUSDC": "0xd9Da5527B077d81b0289eae2745EaF48f0bC433f", - "steakPYUSD": "0x46eE78397ab4E334A85Bbc7B7C3A2935f175D4d9", - "bbUSDT": "0xC2b73b106cCb4D2Cf937bFfCD629f3e636773567", - "Re7WETH": "0x2E22d688CF3846e5303f6E4eaD0a7455801813E2", - "ETHx": "0x1c0a14A44C4a6834FE23632dA2f493cC4cf87DbA", - "apxETH": "0x6F7eDae52dD7e45f470C327788249a2812A259d8", - "sUSDe": "0x4f30165072351923A1A4BC3926050986318f9B34", - "pyUSD": "0xe0941A6e0DFC823CF44e95664a5B151041C13D42", - "sUSDS": "0x8a1a3B46749b81Cf91d56dF6042E12CE50E1b08A", - "wOETH": "0xa4D38731434e875d7E30e13d8b65BEfEd7d47Ac2" + "DAI": "0x7504ED02f3f151Df241ec2eb0bF1a9601fcb012a", + "USDC": "0xBBF50a582cC03cbbC7E228dc3196091301348B0e", + "USDT": "0xBC0DC981001B6673F615978B63818fD1F6B0FF98", + "aDAI": "0x9ea621376455B88E4022633399bcd1FfD7844210", + "aUSDC": "0x1645Dd4B47D7FbbFdF876061a9e7fE0eb3C72Eb1", + "aUSDT": "0x695980209248264Ff7FcD19f7Cc217376FEaE163", + "cDAI": "0xf8b09C5b3a1eacd095627fb1354665432DC1D077", + "cUSDC": "0x7A58646a44Dc460fe627f2fd76142b99832F0de6", + "cUSDT": "0xD3F81Fc6c575CE44283Fd48dA7f0337d8d3d24FB", + "cWBTC": "0x32Ab9216188F24434Dc629Acfa1554ab7623f300", + "cETH": "0x07b2b41037d89F91DC91aD1DDCCA3e8515FF049E", + "WBTC": "0xCab9805b012460C4E176Fb6b521c20d7bc43419F", + "WETH": "0x90c26f98cBE23666ED1E59186e1e4888512BE58d", + "wstETH": "0xF156B8b44941C6f9c1Fd4825b0C6e50ecFDECfC7", + "rETH": "0x81283be7aD5A6d6C4A085b4D694B127Ccf7E652E", + "fUSDC": "0x73073c75ddaeC9Ce917f326e8fa860B8a773e5a3", + "fUSDT": "0x169544B6422C6690457931259FAd8C0A76540A2E", + "fDAI": "0x79ed64e67B846E483594C496F05B25835e53c614", + "fFRAX": "0xBb7B4CAA808C9FA262095221299dbc873071CAF4", + "cUSDCv3": "0x309e7D2DF4fc528f8Fd58bE6ecF73293dd2e7e7f", + "cUSDTv3": "0xa52F93E61EdF1B77B2D680945F3EA4E84Bb825D3", + "cvx3Pool": "0xE898cd20696fFE17489955101B97F3f9103B83aC", + "cvxPayPool": "0xFDe02d56dec895f7769dC0505D98706f029738D2", + "cvxCrvUSDUSDC": "0xcF9604276C6F4460CA7D1AA079826A138CFBb5c0", + "cvxCrvUSDUSDT": "0x08c31bdAbCABDE22DAf07c816aB6FFc7c193Cd60", + "sDAI": "0xEB11916A884342ef772Ef2941F586c9a42Fd6Db4", + "cbETH": "0x5ff1120487EE5668D224C8C28ca3d548de3d1417", + "maUSDT": "0x41A702f9F7e2fB89Ae7A58B71983187A779F4f02", + "maUSDC": "0xAdd6044E6d927e9d0b60e01aea96F8653f386b0F", + "maDAI": "0x38C6F020ec71bDf13653E3D2dED8457295dD4DCa", + "maWBTC": "0x39e9b883185940101eeF200C507128f31Fa6f933", + "maWETH": "0xeF6bC7e7C964Df4E51e7754c43E4eC425b84c0fE", + "maStETH": "0xfC74B3026A12Dfc421AB5ec2a1155dE14DcB63E2", + "saEthUSDC": "0x56bcd730040417b871CDf2549564EbB3C88730c9", + "saEthUSDT": "0xd317b21d37B171F7821420cBE59eBfD3c1248200", + "saEthPyUSD": "0x6CeF509a76E0Fa99105fF618ae3Ef239eE000142", + "yvCurveUSDCcrvUSD": "0x47084e9F96CE9F17A46Ab92E1E29fA4a0592CAc3", + "sFRAX": "0xbDEaddB62791f08BbB0c83E32f3A6c2a69cecBB3", + "sfrxETH": "0x71793f9e0A13CE361560aFa588aCFac9B525b1c1", + "steakUSDC": "0xb1327EAd6ab9A1e363C4fC61648bD3131A587E39", + "steakPYUSD": "0xB106614aB25474d24861BB6b92AE7a9335ab8507", + "bbUSDT": "0xB462C68cBbF89E440B36073E104f646257afF1c6", + "Re7WETH": "0xe8d05DB4aB6fCD3f261C990B8a592A9ba6A65e44", + "ETHx": "0x9fc417439D8C12159A89962C28D8A8dED9EA9dde", + "apxETH": "0x5A78da62a85099A3Da30e56F5dA8db95aFc63920", + "sUSDe": "0x403623175656ED0CDF1F9efE54867761F1EBf1D8", + "sUSDS": "0x4FD189996b5344Eb4CF9c749b97C7424D399d24e", + "wOETH": "0xBFAc3e99263B7aE9704eC1c879f7c0a57C6b53e1" }, "erc20s": { "stkAAVE": "0x4da27a545c0c5B758a6BA100e3a049001de870f5", @@ -64,11 +61,9 @@ "DAI": "0x6B175474E89094C44Da98b954EedeAC495271d0F", "USDC": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "USDT": "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "BUSD": "0x4Fabb145d64652a948d72533023f6E7A623C7C53", "aDAI": "0x717AC7A53C6a6a5529175dff7fCc76858436f8c0", "aUSDC": "0xa8157BF67Fd7BcDCC139CB9Bf1bd7Eb921A779D3", "aUSDT": "0x684AA4faf9b07d5091B88c6e0a8160aCa5e6d17b", - "aBUSD": "0xf3840c4B214699F94fBB69ad3922f44176c93658", "cDAI": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", "cUSDC": "0x39AA39c021dfbaE8faC545936693aC917d5E7563", "cUSDT": "0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9", @@ -88,8 +83,6 @@ "cvxPayPool": "0x511daB8150966aFfE15F0a5bFfBa7F4d2b62DEd4", "cvxCrvUSDUSDC": "0x6ad24C0B8fD4B594C6009A7F7F48450d9F56c6b8", "cvxCrvUSDUSDT": "0x5d1B749bA7f689ef9f260EDC54326C48919cA88b", - "cvxeUSDFRAXBP": "0x81697e25DFf8564d9E0bC6D27edb40006b34ea2A", - "cvxETHPlusETH": "0xDbC0cE2321B76D3956412B36e9c0FA9B0fD176E7", "sDAI": "0x83f20f44975d03b1b09e64809b757c47f942beea", "cbETH": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", "maUSDT": "0x9FD7165AEf369913258F4C8B19c9C350C2dE63cC", @@ -113,8 +106,7 @@ "sUSDe": "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", "CRV": "0xD533a949740bb3306d119CC777fa900bA034cd52", "CVX": "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", - "pyUSD": "0x6c3ea9036406852006290770bedfcaba0e23a0e8", "sUSDS": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", "wOETH": "0xDcEe70654261AF21C44c093C300eD3Bb97b78192" } -} +} \ No newline at end of file diff --git a/scripts/addresses/1-tmp-deployments.json b/scripts/addresses/1-tmp-deployments.json index a1cdedff1..fee6e2a91 100644 --- a/scripts/addresses/1-tmp-deployments.json +++ b/scripts/addresses/1-tmp-deployments.json @@ -6,17 +6,17 @@ "tradingLib": "0xD595456AC36aab96CF9d10d1ADF8C3b4576C7937", "facade": "0x9d49b363d492725412bf8350bBb525B7a80a7470", "facets": { - "actFacet": "0xCa60954E8819827B0C56e1ec313175fE68712d98", + "actFacet": "0x8578538EB08B39f3aE363757B30afB5a12DDcF0c", "readFacet": "0x823110a13eB26cB09c4Bb118DBfE4ff5f96D5526", "maxIssuableFacet": "0x5771d976696AA180Fed276FB6571fE2f41D0b849", "backingBufferFacet": "0xB555921a031D321687aE8B0569dA7B6da8BCB209", "revenueFacet": "0x69c21f4828c57D3BB5Eb5fEEa6C5c1432e193510", "tradeHelperFacet": "0x9c09e506e00ac87E2413b7501702fAcA690201Fb" }, - "facadeWriteLib": "0x7a993aff39Ab3047Ef2777cfeDD89F7DFD6d4f9A", + "facadeWriteLib": "0x99268AD5808BDFC64aE4C8d95dd8b61b1bef32Bb", "basketLib": "0x2fdD94F363644FEDE5106B22b1706E45D4dD9bea", - "facadeWrite": "0xe4227Ed382A6E5E3001201635De76b7120B13295", - "deployer": "0x087Ac594713DcF03a85A0d3CA10ACe81F47d4526", + "facadeWrite": "0xe18131bd99127b6601c4A78dB25fF963006060e2", + "deployer": "0x40cd76E78Af4aAc744D1FA443359e7e26c982F9D", "rsrAsset": "0xbCb71eE9c3372f3444cBBe3E1b263204967EdBE3", "implementations": { "main": "0xc5bf686CfB85786fcFfF557297D4afF8F4e15e44", @@ -25,7 +25,7 @@ "dutchTrade": "0xCC3Cb888dEA5948bbEB7747Aed31128b71b7689D" }, "components": { - "assetRegistry": "0xcB7e10000De0DAcE5A79c620191Cab2517693637", + "assetRegistry": "0x1aCfF3eB9E4250Fb75526ceb3ff3b05c0CCfa42D", "backingManager": "0xc501c9074CE15A4B00dd0B51B3c372518e6D3BA2", "basketHandler": "0x54A8fa5217970e2040590DDD7c16f72B1fb57a3C", "broker": "0x63c61086418406eBB062c5C6dF80F46c6d052d4c", diff --git a/scripts/addresses/8453-tmp-assets-collateral.json b/scripts/addresses/8453-tmp-assets-collateral.json index 0c22c1615..bde0b6893 100644 --- a/scripts/addresses/8453-tmp-assets-collateral.json +++ b/scripts/addresses/8453-tmp-assets-collateral.json @@ -1,27 +1,26 @@ { "assets": { - "COMP": "0xf535Cab96457558eE3eeAF1402fCA6441E832f08", - "STG": "0x0e8439a17bA5cBb2D9823c03a02566B9dd5d96Ac", - "AERO": "0xf7d1C6eE4C0D84C6B530D53A897daa1E9eB56833" + "COMP": "0xC9c37FC53682207844B058026024853A9C0b8c7B", + "AERO": "0x7f7B77e49d5b30445f222764a794AFE14af062eB", + "STG": "0xe0E1d3c6f09DA01399e84699722B11308607BBfC" }, "collateral": { - "DAI": "0xBe70970a10C186185b1bc1bE980eA09BD68fD97A", - "USDC": "0xeaCaF85eA2df99e56053FD0250330C148D582547", - "USDbC": "0x39e19d88F3D5C25B5A684e8A500dBEC2E2c46327", - "WETH": "0x98f292e6Bb4722664fEffb81448cCFB5B7211469", - "cbETH": "0xA87e9DAe6E9EA5B2Be858686CC6c21B953BfE0B8", - "cUSDCv3": "0xF5366f67FF66A3CefcB18809a762D5b5931FebF8", - "saBasUSDC": "0x773cf50adCF1730964D4A9b664BaEd4b9FFC2450", - "wstETH": "0x5ccca36CbB66a4E4033B08b4F6D7bAc96bA55cDc", - "aeroUSDCeUSD": "0x1cCa3FBB11C4b734183f997679d52DeFA74b613A", - "aeroWETHAERO": "0xC98eaFc9F249D90e3E35E729e3679DD75A899c10", - "aeroMOGWETH": "0x339c1509b980D80A0b50858518531eDbe2940dA1", - "aeroUSDzUSDC": "0x1BD20253c49515D348dad1Af70ff2c0473FEa358", - "aeroWETHcbBTC": "0xDAacEE75C863a79f07699b094DB07793D3A52D6D", - "aeroWETHWELL": "0x6647c880Eb8F57948AF50aB45fca8FE86C154D24", - "aeroWETHDEGEN": "0xCFA67f42A0fDe4F0Fb612ea5e66170B0465B84c1", - "meUSD": "0x45B950AF443281c5F67c2c7A1d9bBc325ECb8eEA", - "wsuperOETHb": "0x4024c00bBD0C420E719527D88781bc1543e63dd5" + "DAI": "0xD31eEc6679Dd18D5D42A92F32f01Ed98d4e91941", + "USDC": "0x18a26902126154437322fe01fBa04A36b093906f", + "USDbC": "0x27F672aAf061cb0b2640a4DFCCBd799cD1a7309A", + "WETH": "0x6a0Fc14d21247D4fDf7E12Ebe22307687b7750fb", + "cbETH": "0x14c443d8BdbE9A65F3a23FA4e199d8741D5B38Fa", + "cUSDCv3": "0xdEBe74dc2A415e00bE8B4b9d1e6e0007153D006a", + "saBasUSDC": "0xa9F0eca90B5d4f213f8119834E0920785bb70F46", + "wstETH": "0x9b2A9bAeB8F1930fC2AF9b7Fa473edF2B8c3B549", + "aeroUSDCeUSD": "0x97F9d5ed17A0C99B279887caD5254d15fb1B619B", + "aeroWETHAERO": "0xee587c5C262824b9423e73303dFf270EcE5074c9", + "aeroMOGWETH": "0x719fbae9e2Dcd525bCf060a8D5DBC6C9fE104A50", + "aeroWETHcbBTC": "0x171034eFCA7349E4D1944d179ccf52277D1CA6c9", + "aeroWETHWELL": "0x5Cb6656970B21d51c0885C3831A14010d3fBF5Ed", + "aeroWETHDEGEN": "0xb56aa995Ab51f32885C72aA825BEa7559c06a72f", + "meUSD": "0x9CB8fac0d43468068DaB561e7797cE3747624A21", + "wsuperOETHb": "0x878b995bDD2D9900BEE896Bd78ADd877672e1637" }, "erc20s": { "COMP": "0x9e1028F5F1D5eDE59748FFceE5532509976840E0", @@ -33,16 +32,15 @@ "cUSDCv3": "0x53f1Df4E5591Ae35Bf738742981669c3767241FA", "saBasUSDC": "0x6F6f81e5E66f503184f2202D83a79650c3285759", "wstETH": "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", + "AERO": "0x940181a94A35A4569E4529A3CDfB74e38FD98631", "STG": "0xE3B53AF74a4BF62Ae5511055290838050bf764Df", "aeroUSDCeUSD": "0xDB5b8cead52f77De0f6B5255f73F348AAf2CBb8D", "aeroWETHAERO": "0x65f2c1b253a3E45670aDD259C9688Edf1A3b814d", "aeroMOGWETH": "0xfaAC26b279338dF8cF56B11A572617f674A2F69C", - "aeroUSDzUSDC": "0x246Df11B856E9fD6120494F168475e1b41321c61", "aeroWETHcbBTC": "0x4BD08a771CdAbA5333CAc6F20322eD7d72b6cBfA", "aeroWETHWELL": "0x1F599F8657CAA38Ee825e4E2d64F695749E2a161", "aeroWETHDEGEN": "0xA762F790a31654D9AeF7DE550A473A0F5621E4F1", "meUSD": "0xbb819D845b573B5D7C538F5b85057160cfb5f313", - "wsuperOETHb": "0x7FcD174E80f264448ebeE8c88a7C4476AAF58Ea6", - "AERO": "0x940181a94A35A4569E4529A3CDfB74e38FD98631" + "wsuperOETHb": "0x7FcD174E80f264448ebeE8c88a7C4476AAF58Ea6" } } \ No newline at end of file diff --git a/scripts/addresses/8453-tmp-deployments.json b/scripts/addresses/8453-tmp-deployments.json index a1e2c0e35..5e0cf41a1 100644 --- a/scripts/addresses/8453-tmp-deployments.json +++ b/scripts/addresses/8453-tmp-deployments.json @@ -6,17 +6,17 @@ "tradingLib": "0x0E6D6cBdA4629Fb2D82b4b4Af0D5c887f21F3BC7", "facade": "0xE41416d8dC94ac1F6d12282d6D46B714F39a87d9", "facets": { - "actFacet": "0x72Be467048a4D9CbcC599251243f3eD9F46a42f5", + "actFacet": "0xAdfB9BCdA981136c83076a52Ef8fE4D8B2b520e7", "readFacet": "0x5Af543D6F95a98200Dd770f39A902Fe793BAeB27", "maxIssuableFacet": "0x63FDcB1E8Ee5C4B64A5c4ce0FB97597917920cb6", "backingBufferFacet": "0x38c7e9427960E427f6c84b3A096021f47a9Afb82", "revenueFacet": "0x4c2FCA94163355a5B81F4D924Bce8cCbACc15406", "tradeHelperFacet": "0xC1E16AD7844Da1AEFFa6c3932AD02b823DE12d3F" }, - "facadeWriteLib": "0x62C394620f674e85768a7618a6C202baE7fB8Dd1", + "facadeWriteLib": "0xc9291eF2f81dBc9B412381aBe83b28954220565E", "basketLib": "0x3700b22C742980be9D22740933d4a041A64f7314", - "facadeWrite": "0x3C8cD9FCa9925780598eB097D9718dF3da482C2F", - "deployer": "0x9E50605e02483c273F7B5A5826f363F3a46DCA79", + "facadeWrite": "0xCBE084C44e7A2223F76362Dcc4EbDacA5Fb1cbA7", + "deployer": "0x9FF9c353136e86EFe02ADD177E7c9769f8a5A77F", "rsrAsset": "0x22018D85BFdA9e2673FB4101e957562a1e952Cdf", "implementations": { "main": "0x6D05CB2CB647B58189FA16f81784C05B4bcd4fe9", @@ -25,7 +25,7 @@ "dutchTrade": "0x8A9F74d40c5323E73B63a80c4282658fD43F3AA2" }, "components": { - "assetRegistry": "0xaBd7E7a5C846eD497681a590feBED99e7157B6a3", + "assetRegistry": "0x63be601cDE1121C987B885cc319b44e0a9d707a2", "backingManager": "0xF73EB45d83AC86f8a6F75a6252ca1a59a9A3aED3", "basketHandler": "0x5c83CA710E72D130E3B74aEC5b739676ef5737c2", "broker": "0x714341800AD1913B5FCCBFd5d136553Ad1C314d6", diff --git a/scripts/addresses/base-4.2.0/8453-tmp-assets-collateral.json b/scripts/addresses/base-4.2.0/8453-tmp-assets-collateral.json index 0c22c1615..bde0b6893 100644 --- a/scripts/addresses/base-4.2.0/8453-tmp-assets-collateral.json +++ b/scripts/addresses/base-4.2.0/8453-tmp-assets-collateral.json @@ -1,27 +1,26 @@ { "assets": { - "COMP": "0xf535Cab96457558eE3eeAF1402fCA6441E832f08", - "STG": "0x0e8439a17bA5cBb2D9823c03a02566B9dd5d96Ac", - "AERO": "0xf7d1C6eE4C0D84C6B530D53A897daa1E9eB56833" + "COMP": "0xC9c37FC53682207844B058026024853A9C0b8c7B", + "AERO": "0x7f7B77e49d5b30445f222764a794AFE14af062eB", + "STG": "0xe0E1d3c6f09DA01399e84699722B11308607BBfC" }, "collateral": { - "DAI": "0xBe70970a10C186185b1bc1bE980eA09BD68fD97A", - "USDC": "0xeaCaF85eA2df99e56053FD0250330C148D582547", - "USDbC": "0x39e19d88F3D5C25B5A684e8A500dBEC2E2c46327", - "WETH": "0x98f292e6Bb4722664fEffb81448cCFB5B7211469", - "cbETH": "0xA87e9DAe6E9EA5B2Be858686CC6c21B953BfE0B8", - "cUSDCv3": "0xF5366f67FF66A3CefcB18809a762D5b5931FebF8", - "saBasUSDC": "0x773cf50adCF1730964D4A9b664BaEd4b9FFC2450", - "wstETH": "0x5ccca36CbB66a4E4033B08b4F6D7bAc96bA55cDc", - "aeroUSDCeUSD": "0x1cCa3FBB11C4b734183f997679d52DeFA74b613A", - "aeroWETHAERO": "0xC98eaFc9F249D90e3E35E729e3679DD75A899c10", - "aeroMOGWETH": "0x339c1509b980D80A0b50858518531eDbe2940dA1", - "aeroUSDzUSDC": "0x1BD20253c49515D348dad1Af70ff2c0473FEa358", - "aeroWETHcbBTC": "0xDAacEE75C863a79f07699b094DB07793D3A52D6D", - "aeroWETHWELL": "0x6647c880Eb8F57948AF50aB45fca8FE86C154D24", - "aeroWETHDEGEN": "0xCFA67f42A0fDe4F0Fb612ea5e66170B0465B84c1", - "meUSD": "0x45B950AF443281c5F67c2c7A1d9bBc325ECb8eEA", - "wsuperOETHb": "0x4024c00bBD0C420E719527D88781bc1543e63dd5" + "DAI": "0xD31eEc6679Dd18D5D42A92F32f01Ed98d4e91941", + "USDC": "0x18a26902126154437322fe01fBa04A36b093906f", + "USDbC": "0x27F672aAf061cb0b2640a4DFCCBd799cD1a7309A", + "WETH": "0x6a0Fc14d21247D4fDf7E12Ebe22307687b7750fb", + "cbETH": "0x14c443d8BdbE9A65F3a23FA4e199d8741D5B38Fa", + "cUSDCv3": "0xdEBe74dc2A415e00bE8B4b9d1e6e0007153D006a", + "saBasUSDC": "0xa9F0eca90B5d4f213f8119834E0920785bb70F46", + "wstETH": "0x9b2A9bAeB8F1930fC2AF9b7Fa473edF2B8c3B549", + "aeroUSDCeUSD": "0x97F9d5ed17A0C99B279887caD5254d15fb1B619B", + "aeroWETHAERO": "0xee587c5C262824b9423e73303dFf270EcE5074c9", + "aeroMOGWETH": "0x719fbae9e2Dcd525bCf060a8D5DBC6C9fE104A50", + "aeroWETHcbBTC": "0x171034eFCA7349E4D1944d179ccf52277D1CA6c9", + "aeroWETHWELL": "0x5Cb6656970B21d51c0885C3831A14010d3fBF5Ed", + "aeroWETHDEGEN": "0xb56aa995Ab51f32885C72aA825BEa7559c06a72f", + "meUSD": "0x9CB8fac0d43468068DaB561e7797cE3747624A21", + "wsuperOETHb": "0x878b995bDD2D9900BEE896Bd78ADd877672e1637" }, "erc20s": { "COMP": "0x9e1028F5F1D5eDE59748FFceE5532509976840E0", @@ -33,16 +32,15 @@ "cUSDCv3": "0x53f1Df4E5591Ae35Bf738742981669c3767241FA", "saBasUSDC": "0x6F6f81e5E66f503184f2202D83a79650c3285759", "wstETH": "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", + "AERO": "0x940181a94A35A4569E4529A3CDfB74e38FD98631", "STG": "0xE3B53AF74a4BF62Ae5511055290838050bf764Df", "aeroUSDCeUSD": "0xDB5b8cead52f77De0f6B5255f73F348AAf2CBb8D", "aeroWETHAERO": "0x65f2c1b253a3E45670aDD259C9688Edf1A3b814d", "aeroMOGWETH": "0xfaAC26b279338dF8cF56B11A572617f674A2F69C", - "aeroUSDzUSDC": "0x246Df11B856E9fD6120494F168475e1b41321c61", "aeroWETHcbBTC": "0x4BD08a771CdAbA5333CAc6F20322eD7d72b6cBfA", "aeroWETHWELL": "0x1F599F8657CAA38Ee825e4E2d64F695749E2a161", "aeroWETHDEGEN": "0xA762F790a31654D9AeF7DE550A473A0F5621E4F1", "meUSD": "0xbb819D845b573B5D7C538F5b85057160cfb5f313", - "wsuperOETHb": "0x7FcD174E80f264448ebeE8c88a7C4476AAF58Ea6", - "AERO": "0x940181a94A35A4569E4529A3CDfB74e38FD98631" + "wsuperOETHb": "0x7FcD174E80f264448ebeE8c88a7C4476AAF58Ea6" } } \ No newline at end of file diff --git a/scripts/addresses/base-4.2.0/8453-tmp-deployments.json b/scripts/addresses/base-4.2.0/8453-tmp-deployments.json index 2a1a9ae30..5e0cf41a1 100644 --- a/scripts/addresses/base-4.2.0/8453-tmp-deployments.json +++ b/scripts/addresses/base-4.2.0/8453-tmp-deployments.json @@ -6,17 +6,17 @@ "tradingLib": "0x0E6D6cBdA4629Fb2D82b4b4Af0D5c887f21F3BC7", "facade": "0xE41416d8dC94ac1F6d12282d6D46B714F39a87d9", "facets": { - "actFacet": "0x72Be467048a4D9CbcC599251243f3eD9F46a42f5", + "actFacet": "0xAdfB9BCdA981136c83076a52Ef8fE4D8B2b520e7", "readFacet": "0x5Af543D6F95a98200Dd770f39A902Fe793BAeB27", "maxIssuableFacet": "0x63FDcB1E8Ee5C4B64A5c4ce0FB97597917920cb6", "backingBufferFacet": "0x38c7e9427960E427f6c84b3A096021f47a9Afb82", "revenueFacet": "0x4c2FCA94163355a5B81F4D924Bce8cCbACc15406", "tradeHelperFacet": "0xC1E16AD7844Da1AEFFa6c3932AD02b823DE12d3F" }, - "facadeWriteLib": "0x62C394620f674e85768a7618a6C202baE7fB8Dd1", + "facadeWriteLib": "0xc9291eF2f81dBc9B412381aBe83b28954220565E", "basketLib": "0x3700b22C742980be9D22740933d4a041A64f7314", - "facadeWrite": "0x3C8cD9FCa9925780598eB097D9718dF3da482C2F", - "deployer": "0x9E50605e02483c273F7B5A5826f363F3a46DCA79", + "facadeWrite": "0xCBE084C44e7A2223F76362Dcc4EbDacA5Fb1cbA7", + "deployer": "0x9FF9c353136e86EFe02ADD177E7c9769f8a5A77F", "rsrAsset": "0x22018D85BFdA9e2673FB4101e957562a1e952Cdf", "implementations": { "main": "0x6D05CB2CB647B58189FA16f81784C05B4bcd4fe9", @@ -25,7 +25,7 @@ "dutchTrade": "0x8A9F74d40c5323E73B63a80c4282658fD43F3AA2" }, "components": { - "assetRegistry": "0xaBd7E7a5C846eD497681a590feBED99e7157B6a3", + "assetRegistry": "0x63be601cDE1121C987B885cc319b44e0a9d707a2", "backingManager": "0xF73EB45d83AC86f8a6F75a6252ca1a59a9A3aED3", "basketHandler": "0x5c83CA710E72D130E3B74aEC5b739676ef5737c2", "broker": "0x714341800AD1913B5FCCBFd5d136553Ad1C314d6", @@ -37,4 +37,4 @@ "stRSR": "0xb3dCcEf35647A8821C76f796bE8B5426Cc953412" } } -} +} \ No newline at end of file diff --git a/scripts/addresses/mainnet-4.2.0/1-tmp-assets-collateral.json b/scripts/addresses/mainnet-4.2.0/1-tmp-assets-collateral.json index ae697a0ad..953a18e5d 100644 --- a/scripts/addresses/mainnet-4.2.0/1-tmp-assets-collateral.json +++ b/scripts/addresses/mainnet-4.2.0/1-tmp-assets-collateral.json @@ -1,62 +1,59 @@ { "assets": { - "stkAAVE": "0xFb56B651f882f8f90d35DD7ca181A7F4D889ECac", - "COMP": "0x70C8611F5e34266c09c896f3547D1f7Fccf44D54", - "CRV": "0x1942270ac94E6C6041C7F7c87562Ba8dDB1bDFFc", - "CVX": "0x2362A9B237e4f06491B7E3827eE179b77f2B22c6" + "stkAAVE": "0xFDE702794298DB19e2a235782B82aD88053F7335", + "COMP": "0xA32a92073fEB7ed31081656DeFF34518FB5194b9", + "CRV": "0x69841bA9E09019acA0d16Ae9c9724D25d51F6956", + "CVX": "0x2635c3B92c8451F9D1e75BD61FCF87D1eCdf0ad0" }, "collateral": { - "DAI": "0xb90FE39CB47c4401A941528769f107dEe8e49488", - "USDC": "0x3A078799a9823cBda084a79c7cAF47f499c6EA09", - "USDT": "0xD8A1b8e73DC025C527493436057f0d8Fc01E1973", - "aDAI": "0x3A395c1bC233D43d126a971b15D8c2b6eB803ca6", - "aUSDC": "0xD1A2a985a18ddf30299cF2bDd0592B29e0AA3e84", - "aUSDT": "0x723e269D178E887E1691f3cEe71c840B5C5b9F76", - "cDAI": "0x8487278d9262B9Dcca4beC85B125A45608d0067A", - "cUSDC": "0x9A84c6F204209957ddA0064EaeAAf6138fDb8cea", - "cUSDT": "0xf35FbE1576E9D52c20B7ef8626477DcFb939d9Ef", - "cWBTC": "0x3484EFB04a54bF376da091f4364F4961F7a01B74", - "cETH": "0xe3dA655331649B86BfE3356beD99258083599543", - "WBTC": "0xcC07EF5FDafa6298b276f14A6F4198317D0d20c3", - "WETH": "0x868dbBD8B7d1AED1fEc4c13cc4a15f50965E2FB9", - "wstETH": "0xc915f28D1Cd97703cF0940ABB192EE50dD882f8c", - "rETH": "0x02D960943E1dD3B2c4d621dD8b72489FA4d7cE49", - "fUSDC": "0x8CfB48b594D54C5BC122f3c4374E16Fcf1050a43", - "fUSDT": "0x097b09fd6932cEC8cf47d5Ec0b0b7DeFb0C97b02", - "fDAI": "0x0c82eFbbd9B0f47fDa04b83226dbFBC04EC728b8", - "fFRAX": "0xCC0c0c376cebd701D9126228510f31F9096b836a", - "cUSDCv3": "0x8E24283eF5F6FE85fed48AC3A3d4248B5ba29668", - "cUSDTv3": "0x4aDf4c9b985A743D9fEF14ae4b3e79661F73C78b", - "cvx3Pool": "0xA9f37b188d71b66C3e1ea876F61e00377174508a", - "cvxPayPool": "0x7e80B2f7b6abb98028cC8A66aE6f7ea5302fA904", - "cvxCrvUSDUSDC": "0x1E98A442F917aA8e0e1f6e18687e58D954b8FfC2", - "cvxCrvUSDUSDT": "0x738C191F95C053602e272AfAF67A638519fA4B2F", - "cvxeUSDFRAXBP": "0x875af0Bab943b7416c6D2142546cAb61F1Ad964a", - "cvxETHPlusETH": "0xfa025df685BA0A09B2C767f4Cc1a1972F140d421", - "sDAI": "0x2fe50f96Cd61a3056D497FE88CEA8441244D5d5E", - "cbETH": "0xdCEe056a2fEB893EB1a1C3e3F103Ac8AB098CE2e", - "maUSDT": "0x3ca3359006c55164753Ae475D995163adAB5432d", - "maUSDC": "0x30789B6A26735c83774cD49e22C6f68dD4533A73", - "maDAI": "0x14CEF4f11bD1f2A9E6416b812F7D45481c9dD896", - "maWBTC": "0x65fF9Cf2fE6A28F5fd7fAF5Fd0E54EF9B85DF4E8", - "maWETH": "0x3Cb9DD76AEf20d97C0314ad5Cae6D3d54D87f6eE", - "maStETH": "0xc8F9C28880797cF241D4241395f9Bf14c9E7135C", - "saEthUSDC": "0xFB80E9A48493ac5C3c401Aa713146825d3bB9CA6", - "saEthUSDT": "0x3E2D5CF862c959F5A4046558Bec90C02dD5472eD", - "saEthPyUSD": "0x8B13ac47E0bF142630eAc3e838A0c0AcE8E81c35", - "yvCurveUSDCcrvUSD": "0x3B8bb1153C6b4331AC5eE50d59437A244Ed8Cf57", - "sFRAX": "0x661335963a4e84A5e3Fb58a9110f635bbf116201", - "sfrxETH": "0xa514214E14d64822EE70dfF2d5E15f9a2772aD20", - "steakUSDC": "0xd9Da5527B077d81b0289eae2745EaF48f0bC433f", - "steakPYUSD": "0x46eE78397ab4E334A85Bbc7B7C3A2935f175D4d9", - "bbUSDT": "0xC2b73b106cCb4D2Cf937bFfCD629f3e636773567", - "Re7WETH": "0x2E22d688CF3846e5303f6E4eaD0a7455801813E2", - "ETHx": "0x1c0a14A44C4a6834FE23632dA2f493cC4cf87DbA", - "apxETH": "0x6F7eDae52dD7e45f470C327788249a2812A259d8", - "sUSDe": "0x4f30165072351923A1A4BC3926050986318f9B34", - "pyUSD": "0xe0941A6e0DFC823CF44e95664a5B151041C13D42", - "sUSDS": "0x8a1a3B46749b81Cf91d56dF6042E12CE50E1b08A", - "wOETH": "0xa4D38731434e875d7E30e13d8b65BEfEd7d47Ac2" + "DAI": "0x7504ED02f3f151Df241ec2eb0bF1a9601fcb012a", + "USDC": "0xBBF50a582cC03cbbC7E228dc3196091301348B0e", + "USDT": "0xBC0DC981001B6673F615978B63818fD1F6B0FF98", + "aDAI": "0x9ea621376455B88E4022633399bcd1FfD7844210", + "aUSDC": "0x1645Dd4B47D7FbbFdF876061a9e7fE0eb3C72Eb1", + "aUSDT": "0x695980209248264Ff7FcD19f7Cc217376FEaE163", + "cDAI": "0xf8b09C5b3a1eacd095627fb1354665432DC1D077", + "cUSDC": "0x7A58646a44Dc460fe627f2fd76142b99832F0de6", + "cUSDT": "0xD3F81Fc6c575CE44283Fd48dA7f0337d8d3d24FB", + "cWBTC": "0x32Ab9216188F24434Dc629Acfa1554ab7623f300", + "cETH": "0x07b2b41037d89F91DC91aD1DDCCA3e8515FF049E", + "WBTC": "0xCab9805b012460C4E176Fb6b521c20d7bc43419F", + "WETH": "0x90c26f98cBE23666ED1E59186e1e4888512BE58d", + "wstETH": "0xF156B8b44941C6f9c1Fd4825b0C6e50ecFDECfC7", + "rETH": "0x81283be7aD5A6d6C4A085b4D694B127Ccf7E652E", + "fUSDC": "0x73073c75ddaeC9Ce917f326e8fa860B8a773e5a3", + "fUSDT": "0x169544B6422C6690457931259FAd8C0A76540A2E", + "fDAI": "0x79ed64e67B846E483594C496F05B25835e53c614", + "fFRAX": "0xBb7B4CAA808C9FA262095221299dbc873071CAF4", + "cUSDCv3": "0x309e7D2DF4fc528f8Fd58bE6ecF73293dd2e7e7f", + "cUSDTv3": "0xa52F93E61EdF1B77B2D680945F3EA4E84Bb825D3", + "cvx3Pool": "0xE898cd20696fFE17489955101B97F3f9103B83aC", + "cvxPayPool": "0xFDe02d56dec895f7769dC0505D98706f029738D2", + "cvxCrvUSDUSDC": "0xcF9604276C6F4460CA7D1AA079826A138CFBb5c0", + "cvxCrvUSDUSDT": "0x08c31bdAbCABDE22DAf07c816aB6FFc7c193Cd60", + "sDAI": "0xEB11916A884342ef772Ef2941F586c9a42Fd6Db4", + "cbETH": "0x5ff1120487EE5668D224C8C28ca3d548de3d1417", + "maUSDT": "0x41A702f9F7e2fB89Ae7A58B71983187A779F4f02", + "maUSDC": "0xAdd6044E6d927e9d0b60e01aea96F8653f386b0F", + "maDAI": "0x38C6F020ec71bDf13653E3D2dED8457295dD4DCa", + "maWBTC": "0x39e9b883185940101eeF200C507128f31Fa6f933", + "maWETH": "0xeF6bC7e7C964Df4E51e7754c43E4eC425b84c0fE", + "maStETH": "0xfC74B3026A12Dfc421AB5ec2a1155dE14DcB63E2", + "saEthUSDC": "0x56bcd730040417b871CDf2549564EbB3C88730c9", + "saEthUSDT": "0xd317b21d37B171F7821420cBE59eBfD3c1248200", + "saEthPyUSD": "0x6CeF509a76E0Fa99105fF618ae3Ef239eE000142", + "yvCurveUSDCcrvUSD": "0x47084e9F96CE9F17A46Ab92E1E29fA4a0592CAc3", + "sFRAX": "0xbDEaddB62791f08BbB0c83E32f3A6c2a69cecBB3", + "sfrxETH": "0x71793f9e0A13CE361560aFa588aCFac9B525b1c1", + "steakUSDC": "0xb1327EAd6ab9A1e363C4fC61648bD3131A587E39", + "steakPYUSD": "0xB106614aB25474d24861BB6b92AE7a9335ab8507", + "bbUSDT": "0xB462C68cBbF89E440B36073E104f646257afF1c6", + "Re7WETH": "0xe8d05DB4aB6fCD3f261C990B8a592A9ba6A65e44", + "ETHx": "0x9fc417439D8C12159A89962C28D8A8dED9EA9dde", + "apxETH": "0x5A78da62a85099A3Da30e56F5dA8db95aFc63920", + "sUSDe": "0x403623175656ED0CDF1F9efE54867761F1EBf1D8", + "sUSDS": "0x4FD189996b5344Eb4CF9c749b97C7424D399d24e", + "wOETH": "0xBFAc3e99263B7aE9704eC1c879f7c0a57C6b53e1" }, "erc20s": { "stkAAVE": "0x4da27a545c0c5B758a6BA100e3a049001de870f5", @@ -86,8 +83,6 @@ "cvxPayPool": "0x511daB8150966aFfE15F0a5bFfBa7F4d2b62DEd4", "cvxCrvUSDUSDC": "0x6ad24C0B8fD4B594C6009A7F7F48450d9F56c6b8", "cvxCrvUSDUSDT": "0x5d1B749bA7f689ef9f260EDC54326C48919cA88b", - "cvxeUSDFRAXBP": "0x81697e25DFf8564d9E0bC6D27edb40006b34ea2A", - "cvxETHPlusETH": "0xDbC0cE2321B76D3956412B36e9c0FA9B0fD176E7", "sDAI": "0x83f20f44975d03b1b09e64809b757c47f942beea", "cbETH": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", "maUSDT": "0x9FD7165AEf369913258F4C8B19c9C350C2dE63cC", @@ -111,8 +106,7 @@ "sUSDe": "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", "CRV": "0xD533a949740bb3306d119CC777fa900bA034cd52", "CVX": "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", - "pyUSD": "0x6c3ea9036406852006290770bedfcaba0e23a0e8", "sUSDS": "0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD", "wOETH": "0xDcEe70654261AF21C44c093C300eD3Bb97b78192" } -} +} \ No newline at end of file diff --git a/scripts/addresses/mainnet-4.2.0/1-tmp-deployments.json b/scripts/addresses/mainnet-4.2.0/1-tmp-deployments.json index 39600e70d..fee6e2a91 100644 --- a/scripts/addresses/mainnet-4.2.0/1-tmp-deployments.json +++ b/scripts/addresses/mainnet-4.2.0/1-tmp-deployments.json @@ -6,17 +6,17 @@ "tradingLib": "0xD595456AC36aab96CF9d10d1ADF8C3b4576C7937", "facade": "0x9d49b363d492725412bf8350bBb525B7a80a7470", "facets": { - "actFacet": "0xCa60954E8819827B0C56e1ec313175fE68712d98", + "actFacet": "0x8578538EB08B39f3aE363757B30afB5a12DDcF0c", "readFacet": "0x823110a13eB26cB09c4Bb118DBfE4ff5f96D5526", "maxIssuableFacet": "0x5771d976696AA180Fed276FB6571fE2f41D0b849", "backingBufferFacet": "0xB555921a031D321687aE8B0569dA7B6da8BCB209", "revenueFacet": "0x69c21f4828c57D3BB5Eb5fEEa6C5c1432e193510", "tradeHelperFacet": "0x9c09e506e00ac87E2413b7501702fAcA690201Fb" }, - "facadeWriteLib": "0x7a993aff39Ab3047Ef2777cfeDD89F7DFD6d4f9A", + "facadeWriteLib": "0x99268AD5808BDFC64aE4C8d95dd8b61b1bef32Bb", "basketLib": "0x2fdD94F363644FEDE5106B22b1706E45D4dD9bea", - "facadeWrite": "0xe4227Ed382A6E5E3001201635De76b7120B13295", - "deployer": "0x087Ac594713DcF03a85A0d3CA10ACe81F47d4526", + "facadeWrite": "0xe18131bd99127b6601c4A78dB25fF963006060e2", + "deployer": "0x40cd76E78Af4aAc744D1FA443359e7e26c982F9D", "rsrAsset": "0xbCb71eE9c3372f3444cBBe3E1b263204967EdBE3", "implementations": { "main": "0xc5bf686CfB85786fcFfF557297D4afF8F4e15e44", @@ -25,7 +25,7 @@ "dutchTrade": "0xCC3Cb888dEA5948bbEB7747Aed31128b71b7689D" }, "components": { - "assetRegistry": "0xcB7e10000De0DAcE5A79c620191Cab2517693637", + "assetRegistry": "0x1aCfF3eB9E4250Fb75526ceb3ff3b05c0CCfa42D", "backingManager": "0xc501c9074CE15A4B00dd0B51B3c372518e6D3BA2", "basketHandler": "0x54A8fa5217970e2040590DDD7c16f72B1fb57a3C", "broker": "0x63c61086418406eBB062c5C6dF80F46c6d052d4c", @@ -37,4 +37,4 @@ "stRSR": "0x8E594FFb702C48a9fF8ae56FAeC795D83A69B387" } } -} +} \ No newline at end of file diff --git a/scripts/deploy.ts b/scripts/deploy.ts index 0e2a507a5..a7de3bb08 100644 --- a/scripts/deploy.ts +++ b/scripts/deploy.ts @@ -58,6 +58,7 @@ async function main() { // Phase 2 - Assets/Collateral if (!baseL2Chains.includes(hre.network.name) && !arbitrumL2Chains.includes(hre.network.name)) { + // Ethereum scripts.push( 'phase2-assets/0_setup_deployments.ts', 'phase2-assets/1_deploy_assets.ts', @@ -71,8 +72,6 @@ async function main() { 'phase2-assets/collaterals/deploy_convex_paypool_collateral.ts', 'phase2-assets/collaterals/deploy_convex_crvusd_usdc_collateral.ts', 'phase2-assets/collaterals/deploy_convex_crvusd_usdt_collateral.ts', - 'phase2-assets/collaterals/deploy_convex_rToken_metapool_plugin.ts', - 'phase2-assets/collaterals/deploy_convex_ethplus_eth.ts', 'phase2-assets/collaterals/deploy_dsr_sdai.ts', 'phase2-assets/collaterals/deploy_cbeth_collateral.ts', 'phase2-assets/collaterals/deploy_morpho_aavev2_plugin.ts', @@ -109,7 +108,6 @@ async function main() { 'phase2-assets/collaterals/deploy_aerodrome_usdc_eusd.ts', 'phase2-assets/collaterals/deploy_aerodrome_weth_aero.ts', 'phase2-assets/collaterals/deploy_aerodrome_mog_weth.ts', - 'phase2-assets/collaterals/deploy_aerodrome_usdz_usdc.ts', 'phase2-assets/collaterals/deploy_aerodrome_weth_cbbtc.ts', 'phase2-assets/collaterals/deploy_aerodrome_weth_well.ts', 'phase2-assets/collaterals/deploy_aerodrome_weth_degen.ts', @@ -117,20 +115,8 @@ async function main() { 'phase2-assets/collaterals/deploy_origin_eth.ts' ) } else if (chainId == '42161' || chainId == '421614') { - // Arbitrum One - scripts.push( - 'phase2-assets/0_setup_deployments.ts', - 'phase2-assets/1_deploy_assets.ts', - 'phase2-assets/2_deploy_collateral.ts', - 'phase2-assets/collaterals/deploy_aave_v3_usdc.ts', - 'phase2-assets/collaterals/deploy_aave_v3_usdt.ts', - 'phase2-assets/collaterals/deploy_ctokenv3_usdc_collateral.ts', - 'phase2-assets/collaterals/deploy_ctokenv3_usdt_collateral.ts', - 'phase2-assets/collaterals/deploy_convex_crvusd_usdc_collateral.ts', - 'phase2-assets/collaterals/deploy_convex_crvusd_usdt_collateral.ts', - 'phase2-assets/collaterals/deploy_usdm.ts', - 'phase2-assets/assets/deploy_arb.ts' - ) + // Arbitrum (deprecated) + throw new Error('Arbitrum is deprecated') } // =============================================== diff --git a/scripts/deployment/phase2-assets/assets/deploy_stg.ts b/scripts/deployment/phase2-assets/assets/deploy_stg.ts index 2cac620c9..33f615f49 100644 --- a/scripts/deployment/phase2-assets/assets/deploy_stg.ts +++ b/scripts/deployment/phase2-assets/assets/deploy_stg.ts @@ -40,7 +40,7 @@ async function main() { const { asset: stgAsset } = await hre.run('deploy-asset', { priceTimeout: priceTimeout.toString(), priceFeed: networkConfig[chainId].chainlinkFeeds.STG, - oracleError: fp('0.02').toString(), // 2% + oracleError: fp('0.05').toString(), // 5% tokenAddress: networkConfig[chainId].tokens.STG, maxTradeVolume: fp('1e6').toString(), // $1m, oracleTimeout: '86400', // 24 hr diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_USDe.ts b/scripts/deployment/phase2-assets/collaterals/deploy_USDe.ts index 2598519a5..8a799dd7c 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_USDe.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_USDe.ts @@ -57,7 +57,7 @@ async function main() { oracleError: ORACLE_ERROR.toString(), erc20: networkConfig[chainId].tokens.sUSDe, maxTradeVolume: fp('1e6').toString(), // $1m, - oracleTimeout: ORACLE_TIMEOUT.toString(), // 24 hr + oracleTimeout: ORACLE_TIMEOUT.toString(), // 23 hr targetName: hre.ethers.utils.formatBytes32String('USD'), defaultThreshold: fp('0.01').add(ORACLE_ERROR).toString(), // ~1.5% delayUntilDefault: DELAY_UNTIL_DEFAULT.toString(), // 72h diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_convex_ethplus_eth.ts b/scripts/deployment/phase2-assets/collaterals/deploy_convex_ethplus_eth.ts index 833ece0dc..47731072f 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_convex_ethplus_eth.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_convex_ethplus_eth.ts @@ -28,6 +28,7 @@ import { } from '../../../../test/plugins/individual-collateral/curve/constants' // This file specifically deploys CurveAppreciatingRTokenSelfReferentialCollateral Plugin for ETH+/ETH +// DEPRECATED async function main() { // ==== Read Configuration ==== diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_convex_rToken_metapool_plugin.ts b/scripts/deployment/phase2-assets/collaterals/deploy_convex_rToken_metapool_plugin.ts index e9fc511b4..50373ab6b 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_convex_rToken_metapool_plugin.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_convex_rToken_metapool_plugin.ts @@ -33,6 +33,7 @@ import { } from '../../../../test/plugins/individual-collateral/curve/constants' // This file specifically deploys Convex RToken Metapool Plugin for eUSD/fraxBP +// DEPRECATED async function main() { // ==== Read Configuration ==== diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_ctokenv3_usdc_collateral.ts b/scripts/deployment/phase2-assets/collaterals/deploy_ctokenv3_usdc_collateral.ts index 0126367a2..9c14a1439 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_ctokenv3_usdc_collateral.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_ctokenv3_usdc_collateral.ts @@ -64,7 +64,7 @@ async function main() { const CTokenV3Factory: ContractFactory = await hre.ethers.getContractFactory('CTokenV3Collateral') - const usdcOracleTimeout = '86400' // 24 hr + const usdcOracleTimeout = '82800' // 23 hr const usdcOracleError = getUsdcOracleError(hre.network.name) const collateral = await CTokenV3Factory.connect(deployer).deploy( diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_flux_finance_collateral.ts b/scripts/deployment/phase2-assets/collaterals/deploy_flux_finance_collateral.ts index 64206f55d..087e7cf82 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_flux_finance_collateral.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_flux_finance_collateral.ts @@ -49,7 +49,7 @@ async function main() { oracleError: fp('0.0025').toString(), // 0.25% cToken: fUsdc.address, maxTradeVolume: fp('1e6').toString(), // $1m, - oracleTimeout: '86400', // 24 hr + oracleTimeout: '82800', // 23 hr targetName: hre.ethers.utils.formatBytes32String('USD'), defaultThreshold: fp('0.0125').toString(), // 1.25% delayUntilDefault: bn('86400').toString(), // 24h diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_morpho_aavev2_plugin.ts b/scripts/deployment/phase2-assets/collaterals/deploy_morpho_aavev2_plugin.ts index a5b7f27dc..5c5e14391 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_morpho_aavev2_plugin.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_morpho_aavev2_plugin.ts @@ -151,6 +151,7 @@ async function main() { const collateral = await FiatCollateralFactory.connect(deployer).deploy( { ...baseStableConfig, + oracleTimeout: '82800', // 23 hr chainlinkFeed: networkConfig[chainId].chainlinkFeeds.USDC!, erc20: maUSDC, }, @@ -178,7 +179,7 @@ async function main() { } { - const wbtcOracleError = fp('0.02') // 2% + const wbtcOracleError = fp('0.005') // 0.5% const btcOracleError = fp('0.005') // 0.5% const combinedBTCWBTCError = combinedError(wbtcOracleError, btcOracleError) const collateral = await NonFiatCollateralFactory.connect(deployer).deploy( @@ -188,7 +189,7 @@ async function main() { maxTradeVolume: fp('1e6'), // $1m, oracleTimeout: '86400', // 24 hr targetName: ethers.utils.formatBytes32String('BTC'), - defaultThreshold: fp('0.01').add(wbtcOracleError), // 3% + defaultThreshold: fp('0.01').add(wbtcOracleError), // 1.5% delayUntilDefault: bn('86400'), // 24h chainlinkFeed: networkConfig[chainId].chainlinkFeeds.WBTC!, // {target/ref} erc20: maWBTC, diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_stargate_usdc_collateral.ts b/scripts/deployment/phase2-assets/collaterals/deploy_stargate_usdc_collateral.ts index 55941c18b..178a83d03 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_stargate_usdc_collateral.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_stargate_usdc_collateral.ts @@ -91,7 +91,7 @@ async function main() { oracleError: oracleError.toString(), erc20: erc20.address, maxTradeVolume: fp('1e6').toString(), // $1m, - oracleTimeout: '86400', // 24h hr, + oracleTimeout: '82800', // 23 hr, targetName: hre.ethers.utils.formatBytes32String('USD'), defaultThreshold: fp('0.01').add(oracleError).toString(), delayUntilDefault: bn('86400').toString(), // 24h diff --git a/scripts/deployment/phase2-assets/collaterals/deploy_yearn_v2_curve_usdc.ts b/scripts/deployment/phase2-assets/collaterals/deploy_yearn_v2_curve_usdc.ts index 03405a77d..b9fde1bf7 100644 --- a/scripts/deployment/phase2-assets/collaterals/deploy_yearn_v2_curve_usdc.ts +++ b/scripts/deployment/phase2-assets/collaterals/deploy_yearn_v2_curve_usdc.ts @@ -73,7 +73,7 @@ async function main() { [networkConfig[chainId].chainlinkFeeds.USDC], [networkConfig[chainId].chainlinkFeeds.crvUSD], ], - oracleTimeouts: [['86400'], ['86400']], + oracleTimeouts: [['82800'], ['86400']], oracleErrors: [[fp('0.0025').toString()], [fp('0.005').toString()]], lpToken: YVUSDC_LP_TOKEN, }, diff --git a/scripts/verification/collateral-plugins/verify_cusdcv3.ts b/scripts/verification/collateral-plugins/verify_cusdcv3.ts index bf876b777..fda997983 100644 --- a/scripts/verification/collateral-plugins/verify_cusdcv3.ts +++ b/scripts/verification/collateral-plugins/verify_cusdcv3.ts @@ -53,7 +53,7 @@ async function main() { /******** Verify Collateral - wcUSDCv3 **************************/ - const usdcOracleTimeout = '86400' // 24 hr + const usdcOracleTimeout = '82800' // 23 hr const usdcOracleError = getUsdcOracleError(hre.network.name) await verifyContract( diff --git a/scripts/verification/collateral-plugins/verify_morpho.ts b/scripts/verification/collateral-plugins/verify_morpho.ts index 695beb16c..fe78771dc 100644 --- a/scripts/verification/collateral-plugins/verify_morpho.ts +++ b/scripts/verification/collateral-plugins/verify_morpho.ts @@ -76,7 +76,7 @@ async function main() { 'MorphoNonFiatCollateral', deployments.collateral.maWBTC as string ) - const wbtcOracleError = fp('0.02') // 2% + const wbtcOracleError = fp('0.005') // 0.5% const combinedBTCWBTCError = combinedError(wbtcOracleError, fp('0.005')) await verifyContract( @@ -85,11 +85,11 @@ async function main() { [ { priceTimeout: priceTimeout.toString(), - oracleError: combinedBTCWBTCError.toString(), // 2% + 0.5% + oracleError: combinedBTCWBTCError.toString(), // 0.5% + 0.5% maxTradeVolume: fp('1e6'), // $1m, oracleTimeout: '86400', // 24 hr targetName: ethers.utils.formatBytes32String('BTC'), - defaultThreshold: fp('0.01').add(wbtcOracleError), // 3% + defaultThreshold: fp('0.01').add(wbtcOracleError), // 1.5% delayUntilDefault: bn('86400'), // 24h chainlinkFeed: networkConfig[chainId].chainlinkFeeds.WBTC!, erc20: await maWBTC.erc20(), diff --git a/scripts/verification/collateral-plugins/verify_yearn_v2_curve_usdc.ts b/scripts/verification/collateral-plugins/verify_yearn_v2_curve_usdc.ts index b0f879408..ebddc3b6a 100644 --- a/scripts/verification/collateral-plugins/verify_yearn_v2_curve_usdc.ts +++ b/scripts/verification/collateral-plugins/verify_yearn_v2_curve_usdc.ts @@ -54,7 +54,7 @@ async function main() { [networkConfig[chainId].chainlinkFeeds.USDC], [networkConfig[chainId].chainlinkFeeds.crvUSD], ], - oracleTimeouts: [['86400'], ['86400']], + oracleTimeouts: [['82800'], ['86400']], oracleErrors: [[fp('0.0025').toString()], [fp('0.005').toString()]], lpToken: YVUSDC_LP_TOKEN, }, diff --git a/test/Facade.test.ts b/test/Facade.test.ts index 5bce4b61e..83e2c0795 100644 --- a/test/Facade.test.ts +++ b/test/Facade.test.ts @@ -686,7 +686,7 @@ describe('Facade + FacadeMonitor contracts', () => { }) it('Should return revenue + chain into ActFacet.runRevenueAuctions', async () => { - // Set low to 0 == revenueOverview() should not revert + // Setting low price to 0 should not cause revenueOverview() to revert const minTradeVolume = await rsrTrader.minTradeVolume() const auctionLength = await broker.dutchAuctionLength() const tokenSurplus = bn('0.5e18') @@ -717,11 +717,14 @@ describe('Facade + FacadeMonitor contracts', () => { expect(canStart[i]).to.equal(false) expect(surpluses[i]).to.equal(0) } - const asset = await ethers.getContractAt('IAsset', await assetRegistry.toAsset(erc20s[i])) - const [low] = await asset.price() - expect(minTradeAmounts[i]).to.equal( - low.gt(0) ? minTradeVolume.mul(bn('10').pow(await asset.erc20Decimals())).div(low) : 0 - ) // 1% oracleError + + if (erc20s[i] != rToken.address) { + const asset = await ethers.getContractAt('IAsset', await assetRegistry.toAsset(erc20s[i])) + const [low] = await asset.price() + expect(minTradeAmounts[i]).to.equal( + low.gt(0) ? minTradeVolume.mul(bn('10').pow(await asset.erc20Decimals())).div(low) : 0 + ) // 1% oracleError + } } // Run revenue auctions via multicall diff --git a/test/Recollateralization.test.ts b/test/Recollateralization.test.ts index dc912962b..01c32f89d 100644 --- a/test/Recollateralization.test.ts +++ b/test/Recollateralization.test.ts @@ -56,7 +56,7 @@ import { import snapshotGasCost from './utils/snapshotGasCost' import { expectTrade, getTrade, dutchBuyAmount } from './utils/trades' import { withinTolerance } from './utils/matchers' -import { expectRTokenPrice, expectUnpriced, setOraclePrice } from './utils/oracles' +import { expectRTokenPrice, setOraclePrice } from './utils/oracles' import { useEnv } from '#/utils/env' import { mintCollaterals } from './utils/tokens' @@ -436,7 +436,7 @@ describe(`Recollateralization - P${IMPLEMENTATION}`, () => { }) // Basket should not switch yet - await expect(basketHandler.refreshBasket()) + expect(await basketHandler.refreshBasket()) // Advance time post delayUntilDefault await advanceTime((await collateral0.delayUntilDefault()).toString()) @@ -1033,8 +1033,8 @@ describe(`Recollateralization - P${IMPLEMENTATION}`, () => { expect(await token0.balanceOf(backingManager.address)).to.equal(issueAmount) expect(await token1.balanceOf(backingManager.address)).to.equal(0) - // RToken unpriced - await expectUnpriced(rTokenAsset.address) + // RTokenAsset.price() should revert + await expect(rTokenAsset.price()).to.be.revertedWith('invalid price') // Attempt to recollateralize (no assets to sell) await expect(facadeTest.runAuctionsForAllTraders(rToken.address)).to.not.emit( @@ -1045,7 +1045,7 @@ describe(`Recollateralization - P${IMPLEMENTATION}`, () => { // Nothing changes until situation is resolved expect(await basketHandler.status()).to.equal(CollateralStatus.SOUND) expect(await basketHandler.fullyCollateralized()).to.equal(false) - await expectUnpriced(rTokenAsset.address) + await expect(rTokenAsset.price()).to.be.revertedWith('invalid price') }) context('Should successfully recollateralize after governance basket switch', () => { @@ -1155,9 +1155,6 @@ describe(`Recollateralization - P${IMPLEMENTATION}`, () => { 'cannot settle yet' ) - // Nothing occurs if we attempt to settle for a token that is not being traded - await expect(backingManager.settleTrade(token3.address)).to.not.emit - // Advance time till auction ended await advanceTime(config.batchAuctionLength.add(100).toString()) @@ -3602,9 +3599,6 @@ describe(`Recollateralization - P${IMPLEMENTATION}`, () => { .createTrustedFill(cowSwapFillerMock.address, ethers.utils.randomBytes(32)) ).to.emit(trade, 'TrustedFillCreated') - // Use cached price at creation - const bidAmount = await trade.bidAmount(await getLatestBlockTimestamp()) - // Verify active trusted fill is set const activeFill = await trade.activeTrustedFill() expect(activeFill).to.not.equal(ZERO_ADDRESS) diff --git a/test/Revenues.test.ts b/test/Revenues.test.ts index 5289c4da8..dc929e163 100644 --- a/test/Revenues.test.ts +++ b/test/Revenues.test.ts @@ -406,7 +406,7 @@ describe(`Revenues - P${IMPLEMENTATION}`, () => { const maxDestinations = 100 for (let i = 0; i < maxDestinations - 2; i++) { - const usr: Wallet = await ethers.Wallet.createRandom() + const usr: Wallet = ethers.Wallet.createRandom() await distributor .connect(owner) .setDistribution(usr.address, { rTokenDist: bn(4000), rsrDist: bn(6000) }) @@ -636,18 +636,18 @@ describe(`Revenues - P${IMPLEMENTATION}`, () => { expect(await rsr.balanceOf(rTokenTrader.address)).to.equal(0) }) - it('Should launch revenue auction if UNPRICED', async () => { + it('Should not launch revenue auction if RTokenAsset.price() reverts', async () => { // After oracleTimeout it should still launch auction for RToken await advanceTime(DECAY_DELAY.toString()) await rsr.connect(addr1).transfer(rTokenTrader.address, issueAmount) await rTokenTrader.callStatic.manageTokens([rsr.address], [TradeKind.BATCH_AUCTION]) - // After priceTimeout it should not buy RToken + // After priceTimeout it should not buy RToken anymore await advanceTime(PRICE_TIMEOUT.toString()) await rsr.connect(addr1).transfer(rTokenTrader.address, issueAmount) await expect( rTokenTrader.manageTokens([rsr.address], [TradeKind.BATCH_AUCTION]) - ).to.be.revertedWith('buy asset price unknown') + ).to.be.revertedWith('invalid price') }) it('Should not launch revenue auction if 0 erc20s len', async () => { @@ -1116,10 +1116,6 @@ describe(`Revenues - P${IMPLEMENTATION}`, () => { 'cannot settle yet' ) - // Nothing occurs if we attempt to settle for a token that is not being traded - await expect(rsrTrader.settleTrade(aaveToken.address)).to.not.emit - await expect(rTokenTrader.settleTrade(aaveToken.address)).to.not.emit - // Advance time till auction ended await advanceTime(config.batchAuctionLength.add(100).toString()) diff --git a/test/integration/fork-block-numbers.ts b/test/integration/fork-block-numbers.ts index 2295093eb..7206dfdb2 100644 --- a/test/integration/fork-block-numbers.ts +++ b/test/integration/fork-block-numbers.ts @@ -11,7 +11,7 @@ const forkBlockNumber = { 'mainnet-3.4.0': 20328530, // Ethereum // TODO add all the block numbers we fork from to benefit from caching - default: 23724258, // Ethereum + default: 23828026, // Ethereum } export default forkBlockNumber diff --git a/test/monitor/FacadeMonitor.test.ts b/test/monitor/FacadeMonitor.test.ts index 5a36ba526..4f8e04450 100644 --- a/test/monitor/FacadeMonitor.test.ts +++ b/test/monitor/FacadeMonitor.test.ts @@ -451,7 +451,7 @@ describeFork(`FacadeMonitor - Integration - Mainnet Forking P${IMPLEMENTATION}`, ).wait() /******** Deploy Aave V3 USDC collateral plugin **************************/ - const usdcOracleTimeout = '86400' // 24 hr + const usdcOracleTimeout = '82800' // 23 hr const usdcOracleError = baseL2Chains.includes(hre.network.name) ? fp('0.003') : fp('0.0025') // 0.3% (Base) or 0.25% const MockV3AggregatorFactory = await ethers.getContractFactory('MockV3Aggregator') @@ -842,7 +842,7 @@ describeFork(`FacadeMonitor - Integration - Mainnet Forking P${IMPLEMENTATION}`, /******** Deploy Compound V3 USDC collateral plugin **************************/ const CollateralFactory = await ethers.getContractFactory('CTokenV3Collateral') - const usdcOracleTimeout = '86400' // 24 hr + const usdcOracleTimeout = '82800' // 23 hr const usdcOracleError = baseL2Chains.includes(hre.network.name) ? fp('0.003') : fp('0.0025') // 0.3% (Base) or 0.25% const MockV3AggregatorFactory = await ethers.getContractFactory('MockV3Aggregator') @@ -1036,7 +1036,7 @@ describeFork(`FacadeMonitor - Integration - Mainnet Forking P${IMPLEMENTATION}`, await wstgUsdc.deployed() /******** Deploy Stargate USDC collateral plugin **************************/ - const usdcOracleTimeout = '86400' // 24 hr + const usdcOracleTimeout = '82800' // 23 hr const usdcOracleError = baseL2Chains.includes(hre.network.name) ? fp('0.003') : fp('0.0025') // 0.3% (Base) or 0.25% const MockV3AggregatorFactory = await ethers.getContractFactory('MockV3Aggregator') @@ -1115,7 +1115,7 @@ describeFork(`FacadeMonitor - Integration - Mainnet Forking P${IMPLEMENTATION}`, /******** Deploy Flux USDC collateral plugin **************************/ const CollateralFactory = await ethers.getContractFactory('CTokenFiatCollateral') - const usdcOracleTimeout = '86400' // 24 hr + const usdcOracleTimeout = '82800' // 23 hr const usdcOracleError = baseL2Chains.includes(hre.network.name) ? fp('0.003') : fp('0.0025') // 0.3% (Base) or 0.25% const MockV3AggregatorFactory = await ethers.getContractFactory('MockV3Aggregator') @@ -1207,7 +1207,7 @@ describeFork(`FacadeMonitor - Integration - Mainnet Forking P${IMPLEMENTATION}`, const CollateralFactory = await hre.ethers.getContractFactory('MorphoFiatCollateral') - const usdcOracleTimeout = '86400' // 24 hr + const usdcOracleTimeout = '82800' // 23 hr const usdcOracleError = baseL2Chains.includes(hre.network.name) ? fp('0.003') : fp('0.0025') // 0.3% (Base) or 0.25% const baseStableConfig = { priceTimeout: bn('604800').toString(), diff --git a/test/plugins/Asset.test.ts b/test/plugins/Asset.test.ts index a80609c73..02fa4fc40 100644 --- a/test/plugins/Asset.test.ts +++ b/test/plugins/Asset.test.ts @@ -308,11 +308,13 @@ describe('Assets contracts #fast', () => { await setOraclePrice(collateral0.address, bn('0')) await setOraclePrice(collateral1.address, bn('0')) - // Should be unpriced now + // Should be unpriced now (except RTokenAsset) await expectUnpriced(rsrAsset.address) await expectUnpriced(compAsset.address) await expectUnpriced(aaveAsset.address) - await expectUnpriced(rTokenAsset.address) + + // RTokenAsset.price() should revert instead + await expect(rTokenAsset.price()).to.be.revertedWith('invalid price') }) it('Should return 0 price for RTokenAsset in full haircut scenario', async () => { @@ -447,15 +449,15 @@ describe('Assets contracts #fast', () => { await invalidFiatCollateral.setSimplyRevert(true) await expect(invalidFiatCollateral.price()).to.be.revertedWith('errormsg') - // Check RToken unpriced - await expectUnpriced(rTokenAsset.address) + // RTokenAsset.price() should pass through the same error for its revert + await expect(rTokenAsset.price()).to.be.revertedWith('errormsg') // Runnning out of gas await invalidFiatCollateral.setSimplyRevert(false) await expect(invalidFiatCollateral.price()).to.be.reverted - // Check RToken price reverts - await expect(rTokenAsset.price()).to.be.reverted + // RTokenAsset.price() should revert with OOG + await expect(rTokenAsset.price()).to.be.revertedWithoutReason }) it('Should return latestPrice() for RTokenAsset correctly', async () => { @@ -524,6 +526,7 @@ describe('Assets contracts #fast', () => { it('Regression test -- Should handle unpriced collateral for RTokenAsset', async () => { // https://github.com/code-423n4/2023-07-reserve-findings/issues/20 + // change in behavior on 11/12/2025: now should revert instead of being unpriced // Swap one of the collaterals for an invalid one const InvalidFiatCollateralFactory = await ethers.getContractFactory('InvalidFiatCollateral') @@ -547,8 +550,8 @@ describe('Assets contracts #fast', () => { // Set unpriced collateral await invalidFiatCollateral.setUnpriced(true) - // Check RToken is unpriced - await expectUnpriced(rTokenAsset.address) + // Check RTokenAsset.price() reverts + await expect(rTokenAsset.price()).to.be.revertedWith('invalid price') // Oracle price update should revert await expect(rTokenAsset.forceUpdatePrice()).to.be.revertedWith('invalid price') diff --git a/test/plugins/individual-collateral/aave-v3/constants.ts b/test/plugins/individual-collateral/aave-v3/constants.ts index b628119b1..33ccce847 100644 --- a/test/plugins/individual-collateral/aave-v3/constants.ts +++ b/test/plugins/individual-collateral/aave-v3/constants.ts @@ -5,7 +5,7 @@ export const PYUSD_ORACLE_TIMEOUT = bn('86400') export const PYUSD_ORACLE_ERROR = fp('0.003') export const USDC_MAINNET_MAX_TRADE_VOLUME = fp('1e6') -export const USDC_MAINNET_ORACLE_TIMEOUT = bn('86400') +export const USDC_MAINNET_ORACLE_TIMEOUT = bn('82800') export const USDC_MAINNET_ORACLE_ERROR = fp('0.0025') export const USDC_BASE_MAX_TRADE_VOLUME = fp('0.5e6') diff --git a/test/plugins/individual-collateral/curve/constants.ts b/test/plugins/individual-collateral/curve/constants.ts index 898740d17..334118195 100644 --- a/test/plugins/individual-collateral/curve/constants.ts +++ b/test/plugins/individual-collateral/curve/constants.ts @@ -26,7 +26,7 @@ export const DAI_ORACLE_ERROR = fp('0.0025') // USDC export const USDC_USD_FEED = networkConfig['1'].chainlinkFeeds.USDC! -export const USDC_ORACLE_TIMEOUT = bn('86400') +export const USDC_ORACLE_TIMEOUT = bn('82800') // 23h export const USDC_ORACLE_ERROR = fp('0.0025') // USDT @@ -54,7 +54,7 @@ export const BTC_USD_ORACLE_ERROR = fp('0.005') // WETH export const WETH_USD_FEED = networkConfig['1'].chainlinkFeeds.ETH! -export const WETH_ORACLE_TIMEOUT = bn('86400') +export const WETH_ORACLE_TIMEOUT = bn('3600') export const WETH_ORACLE_ERROR = fp('0.005') // MIM diff --git a/test/plugins/individual-collateral/ethena/constants.ts b/test/plugins/individual-collateral/ethena/constants.ts index 20ac7da3e..2b12b2f93 100644 --- a/test/plugins/individual-collateral/ethena/constants.ts +++ b/test/plugins/individual-collateral/ethena/constants.ts @@ -9,7 +9,7 @@ export const USDe_HOLDER = '0x42862F48eAdE25661558AFE0A630b132038553D0' export const sUSDe_HOLDER = '0x4139cDC6345aFFbaC0692b43bed4D059Df3e6d65' export const PRICE_TIMEOUT = bn('604800') // 1 week -export const ORACLE_TIMEOUT = bn(86400) // 24h +export const ORACLE_TIMEOUT = bn(82800) // 23 hrs export const ORACLE_ERROR = fp('0.005') // 0.5% export const DEFAULT_THRESHOLD = fp('0.05') // 5% export const DELAY_UNTIL_DEFAULT = bn(259200) // 72h diff --git a/test/plugins/individual-collateral/meta-morpho/constants.ts b/test/plugins/individual-collateral/meta-morpho/constants.ts index 7e1e5caa9..f432eb485 100644 --- a/test/plugins/individual-collateral/meta-morpho/constants.ts +++ b/test/plugins/individual-collateral/meta-morpho/constants.ts @@ -30,7 +30,7 @@ export const MEUSD = networkConfig[chainId].tokens.meUSD! // USDC export const USDC_USD_FEED = networkConfig[chainId].chainlinkFeeds.USDC! -export const USDC_ORACLE_TIMEOUT = bn('86400') +export const USDC_ORACLE_TIMEOUT = bn('82800') // 23 hrs export const USDC_ORACLE_ERROR = fp('0.0025') // PYUSD diff --git a/test/plugins/individual-collateral/sky/constants.ts b/test/plugins/individual-collateral/sky/constants.ts index e453e6815..6957cda74 100644 --- a/test/plugins/individual-collateral/sky/constants.ts +++ b/test/plugins/individual-collateral/sky/constants.ts @@ -11,7 +11,7 @@ export const SUSDS = networkConfig['31337'].tokens.sUSDS as string export const SUSDS_HOLDER = '0x2d4d2A025b10C09BDbd794B4FCe4F7ea8C7d7bB4' export const PRICE_TIMEOUT = bn('604800') // 1 week -export const ORACLE_TIMEOUT = bn(86400) // 24 hours in seconds +export const ORACLE_TIMEOUT = bn(82800) // 23 hrs export const ORACLE_ERROR = fp('0.003') // 0.3% export const DEFAULT_THRESHOLD = fp('0.05') export const DELAY_UNTIL_DEFAULT = bn(86400)