diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json index bddb3ee99..d4d3edb8b 100644 --- a/.openzeppelin/mainnet.json +++ b/.openzeppelin/mainnet.json @@ -17426,6 +17426,399 @@ } } } + }, + "ae62872993614795c3a6aa9ced16def7033f346b1abb54227caefa8265932dcc": { + "address": "0x258ce833CF9AD19208372763A00aA1565Dd40b3C", + "txHash": "0x425c11a4d5819a47eac4040e8cf4bd14190390656051f8226b3208b382381a98", + "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)23958", + "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": "_balances", + "offset": 0, + "slot": "201", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:40" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:42" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "203", + "type": "t_uint256", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:44" + }, + { + "label": "_name", + "offset": 0, + "slot": "204", + "type": "t_string_storage", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:46" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "205", + "type": "t_string_storage", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:47" + }, + { + "label": "__gap", + "offset": 0, + "slot": "206", + "type": "t_array(t_uint256)45_storage", + "contract": "ERC20Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:376" + }, + { + "label": "_hashedName", + "offset": 0, + "slot": "251", + "type": "t_bytes32", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:40", + "renamedFrom": "_HASHED_NAME" + }, + { + "label": "_hashedVersion", + "offset": 0, + "slot": "252", + "type": "t_bytes32", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:42", + "renamedFrom": "_HASHED_VERSION" + }, + { + "label": "_name", + "offset": 0, + "slot": "253", + "type": "t_string_storage", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44" + }, + { + "label": "_version", + "offset": 0, + "slot": "254", + "type": "t_string_storage", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:45" + }, + { + "label": "__gap", + "offset": 0, + "slot": "255", + "type": "t_array(t_uint256)48_storage", + "contract": "EIP712Upgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:204" + }, + { + "label": "_nonces", + "offset": 0, + "slot": "303", + "type": "t_mapping(t_address,t_struct(Counter)6580_storage)", + "contract": "ERC20PermitUpgradeable", + "src": "contracts/vendor/ERC20PermitUpgradeable.sol:37" + }, + { + "label": "_PERMIT_TYPEHASH_DEPRECATED_SLOT", + "offset": 0, + "slot": "304", + "type": "t_bytes32", + "contract": "ERC20PermitUpgradeable", + "src": "contracts/vendor/ERC20PermitUpgradeable.sol:51", + "renamedFrom": "_PERMIT_TYPEHASH" + }, + { + "label": "__gap", + "offset": 0, + "slot": "305", + "type": "t_array(t_uint256)48_storage", + "contract": "ERC20PermitUpgradeable", + "src": "contracts/vendor/ERC20PermitUpgradeable.sol:129" + }, + { + "label": "mandate", + "offset": 0, + "slot": "353", + "type": "t_string_storage", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:45" + }, + { + "label": "assetRegistry", + "offset": 0, + "slot": "354", + "type": "t_contract(IAssetRegistry)22381", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:48" + }, + { + "label": "basketHandler", + "offset": 0, + "slot": "355", + "type": "t_contract(IBasketHandler)22761", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:49" + }, + { + "label": "backingManager", + "offset": 0, + "slot": "356", + "type": "t_contract(IBackingManager)22489", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:50" + }, + { + "label": "furnace", + "offset": 0, + "slot": "357", + "type": "t_contract(IFurnace)23479", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:51" + }, + { + "label": "basketsNeeded", + "offset": 0, + "slot": "358", + "type": "t_uint192", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:56" + }, + { + "label": "issuanceThrottle", + "offset": 0, + "slot": "359", + "type": "t_struct(Throttle)27301_storage", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:59" + }, + { + "label": "redemptionThrottle", + "offset": 0, + "slot": "363", + "type": "t_struct(Throttle)27301_storage", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:60" + }, + { + "label": "__gap", + "offset": 0, + "slot": "367", + "type": "t_array(t_uint256)42_storage", + "contract": "RTokenP1", + "src": "contracts/p1/RToken.sol:616" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)42_storage": { + "label": "uint256[42]", + "numberOfBytes": "1344" + }, + "t_array(t_uint256)45_storage": { + "label": "uint256[45]", + "numberOfBytes": "1440" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "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(IAssetRegistry)22381": { + "label": "contract IAssetRegistry", + "numberOfBytes": "20" + }, + "t_contract(IBackingManager)22489": { + "label": "contract IBackingManager", + "numberOfBytes": "20" + }, + "t_contract(IBasketHandler)22761": { + "label": "contract IBasketHandler", + "numberOfBytes": "20" + }, + "t_contract(IFurnace)23479": { + "label": "contract IFurnace", + "numberOfBytes": "20" + }, + "t_contract(IMain)23958": { + "label": "contract IMain", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Counter)6580_storage)": { + "label": "mapping(address => struct CountersUpgradeable.Counter)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Counter)6580_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Params)27293_storage": { + "label": "struct ThrottleLib.Params", + "members": [ + { + "label": "amtRate", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "pctRate", + "type": "t_uint192", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Throttle)27301_storage": { + "label": "struct ThrottleLib.Throttle", + "members": [ + { + "label": "params", + "type": "t_struct(Params)27293_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "lastTimestamp", + "type": "t_uint48", + "offset": 0, + "slot": "2" + }, + { + "label": "lastAvailable", + "type": "t_uint256", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_uint192": { + "label": "uint192", + "numberOfBytes": "24" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint48": { + "label": "uint48", + "numberOfBytes": "6" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } } } } diff --git a/common/registries.ts b/common/registries.ts index 47575d4c6..6a67986ba 100644 --- a/common/registries.ts +++ b/common/registries.ts @@ -24,7 +24,7 @@ export const registryConfig: Record = { }, registries: { roleRegistry: '0xE1eC57C8EE970280f237863910B606059e9641C9', - versionRegistry: '0x121c34FbedcC125cc13782008e2530a5610C5676', + versionRegistry: '0x1895b15B3d0a70962be86Af0E337018aD63464e0', assetPluginRegistry: '0x4a818c41131CB9FE65BadF2Bb8671dDE4D117135', daoFeeRegistry: '0xec716deD4eABa060937D1a915F166E237039342B', trustedFillerRegistry: '0x279ccF56441fC74f1aAC39E7faC165Dec5A88B3A', @@ -37,7 +37,7 @@ export const registryConfig: Record = { }, registries: { roleRegistry: '0xE1eC57C8EE970280f237863910B606059e9641C9', - versionRegistry: '0x7CD9CA6401f743b38B3B16eA314BbaB8e9c1aC51', + versionRegistry: '0xBbC532A80DD141449330c1232C953Da6801Aed01', assetPluginRegistry: '0x7Ac954307356301A10adDb0dB4f61b4a475d3551', daoFeeRegistry: '0x3513D2c7D2F51c678889CeC083E7D7Ae27b219aD', trustedFillerRegistry: '0x72DB5f49D0599C314E2f2FEDf6Fe33E1bA6C7A18', diff --git a/contracts/interfaces/IRToken.sol b/contracts/interfaces/IRToken.sol index ce62e8db2..8948c2526 100644 --- a/contracts/interfaces/IRToken.sol +++ b/contracts/interfaces/IRToken.sol @@ -54,6 +54,9 @@ interface IRToken is IComponent, IERC20MetadataUpgradeable, IERC20PermitUpgradea /// Emitted when redemption SupplyThrottle params are set event RedemptionThrottleSet(ThrottleLib.Params oldVal, ThrottleLib.Params newVal); + /// Emitted when the mandate is set + event MandateSet(string indexed oldVal, string newVal); + // Initialization function init( IMain main_, @@ -148,6 +151,10 @@ interface TestIRToken is IRToken { ThrottleLib.Params calldata redemptionParams ) external; + function setMandate(string calldata mandate) external; + + function mandate() external view returns (string memory); + function issuanceThrottleParams() external view returns (ThrottleLib.Params memory); function redemptionThrottleParams() external view returns (ThrottleLib.Params memory); diff --git a/contracts/p0/RToken.sol b/contracts/p0/RToken.sol index 7f687d3a2..8760833c6 100644 --- a/contracts/p0/RToken.sol +++ b/contracts/p0/RToken.sol @@ -54,7 +54,7 @@ contract RTokenP0 is ComponentP0, ERC20PermitUpgradeable, IRToken { __ERC20_init(name_, symbol_); __ERC20Permit_init(name_); - mandate = mandate_; + setMandate(mandate_); setThrottleParams(issuanceThrottleParams_, redemptionThrottleParams_); issuanceThrottle.lastTimestamp = uint48(block.timestamp); @@ -368,6 +368,12 @@ contract RTokenP0 is ComponentP0, ERC20PermitUpgradeable, IRToken { ); } + function setMandate(string calldata mandate_) public governance { + require(bytes(mandate_).length != 0, "mandate empty"); + emit MandateSet(mandate, mandate_); + mandate = mandate_; + } + // === Private === function _setIssuanceThrottleParams(ThrottleLib.Params calldata params) private { diff --git a/contracts/p1/RToken.sol b/contracts/p1/RToken.sol index 7989a802c..1d2154cee 100644 --- a/contracts/p1/RToken.sol +++ b/contracts/p1/RToken.sol @@ -69,7 +69,6 @@ contract RTokenP1 is ComponentP1, ERC20PermitUpgradeable, IRToken { ) external initializer { require(bytes(name_).length != 0, "name empty"); require(bytes(symbol_).length != 0, "symbol empty"); - require(bytes(mandate_).length != 0, "mandate empty"); __Component_init(main_); __ERC20_init(name_, symbol_); __ERC20Permit_init(name_); @@ -79,7 +78,7 @@ contract RTokenP1 is ComponentP1, ERC20PermitUpgradeable, IRToken { backingManager = main_.backingManager(); furnace = main_.furnace(); - mandate = mandate_; + setMandate(mandate_); setThrottleParams(issuanceThrottleParams_, redemptionThrottleParams_); issuanceThrottle.lastTimestamp = uint48(block.timestamp); @@ -494,6 +493,12 @@ contract RTokenP1 is ComponentP1, ERC20PermitUpgradeable, IRToken { ); } + function setMandate(string calldata mandate_) public governance { + require(bytes(mandate_).length != 0, "mandate empty"); + emit MandateSet(mandate, mandate_); + mandate = mandate_; + } + // === Private Helpers === function _setIssuanceThrottleParams(ThrottleLib.Params calldata params) private { diff --git a/contracts/spells/4_2_0.sol b/contracts/spells/4_2_0.sol index 848b6785a..493f88426 100644 --- a/contracts/spells/4_2_0.sol +++ b/contracts/spells/4_2_0.sol @@ -173,11 +173,11 @@ contract Upgrade4_2_0 is Versioned { if (_mainnet) { // 4.2.0 deployer (mainnet) - deployer = IDeployer(0xd5fcf4795877Ad0084FFc554b71D61bb660255AC); + deployer = IDeployer(0x8FcbD0BaaeB442F1f3F374FcB63933e6D4Cb8710); // DAO registries (mainnet) registries = IDeployer.Registries( - VersionRegistry(0x121c34FbedcC125cc13782008e2530a5610C5676), + VersionRegistry(0x1895b15B3d0a70962be86Af0E337018aD63464e0), AssetPluginRegistry(0x4a818c41131CB9FE65BadF2Bb8671dDE4D117135), DAOFeeRegistry(0xec716deD4eABa060937D1a915F166E237039342B), ITrustedFillerRegistry(0x279ccF56441fC74f1aAC39E7faC165Dec5A88B3A) @@ -196,11 +196,11 @@ contract Upgrade4_2_0 is Versioned { } } else { // 4.2.0 deployer (base) - deployer = IDeployer(0x25a99457FBE10e21ffF9f722dd873cA882CFBA99); + deployer = IDeployer(0x5705F85A05c8b57818663C7AB6a11f88323a1A57); // DAO registries (base) registries = IDeployer.Registries( - VersionRegistry(0x7CD9CA6401f743b38B3B16eA314BbaB8e9c1aC51), + VersionRegistry(0xBbC532A80DD141449330c1232C953Da6801Aed01), AssetPluginRegistry(0x7Ac954307356301A10adDb0dB4f61b4a475d3551), DAOFeeRegistry(0x3513D2c7D2F51c678889CeC083E7D7Ae27b219aD), ITrustedFillerRegistry(0x72DB5f49D0599C314E2f2FEDf6Fe33E1bA6C7A18) diff --git a/scripts/addresses/1-tmp-deployments.json b/scripts/addresses/1-tmp-deployments.json index f8fef0528..63bb69bea 100644 --- a/scripts/addresses/1-tmp-deployments.json +++ b/scripts/addresses/1-tmp-deployments.json @@ -13,10 +13,10 @@ "revenueFacet": "0x69c21f4828c57D3BB5Eb5fEEa6C5c1432e193510", "tradeHelperFacet": "0x9c09e506e00ac87E2413b7501702fAcA690201Fb" }, - "facadeWriteLib": "0xE8F9df9Fa0a7d40F75e26105aA0f748ea17C9dfe", + "facadeWriteLib": "0x2E749f12aE9e71f41c69cBaB1623f0359Aa4F740", "basketLib": "0x2fdD94F363644FEDE5106B22b1706E45D4dD9bea", - "facadeWrite": "0xA8Ea6cF7beAB5E4395D437AE37D696E007739357", - "deployer": "0xd5fcf4795877Ad0084FFc554b71D61bb660255AC", + "facadeWrite": "0x0A9D3D35055481BB67E5E145B07F6fb6cbeF9D4B", + "deployer": "0x8FcbD0BaaeB442F1f3F374FcB63933e6D4Cb8710", "rsrAsset": "0xbCb71eE9c3372f3444cBBe3E1b263204967EdBE3", "implementations": { "main": "0xc5bf686CfB85786fcFfF557297D4afF8F4e15e44", @@ -33,7 +33,7 @@ "furnace": "0x518fcA5e31eEea484276A68Ad5F7E5838F74F03F", "rsrTrader": "0x9E240cb60627b49088c2E6152c4447F7181dC0eB", "rTokenTrader": "0x9E240cb60627b49088c2E6152c4447F7181dC0eB", - "rToken": "0xB20909FD35c548069d1Cc0Ff38337e6b362CA8a0", + "rToken": "0x258ce833CF9AD19208372763A00aA1565Dd40b3C", "stRSR": "0x8E594FFb702C48a9fF8ae56FAeC795D83A69B387" } } diff --git a/scripts/addresses/8453-tmp-deployments.json b/scripts/addresses/8453-tmp-deployments.json index 861ed9619..37c4b43db 100644 --- a/scripts/addresses/8453-tmp-deployments.json +++ b/scripts/addresses/8453-tmp-deployments.json @@ -13,10 +13,10 @@ "revenueFacet": "0x4c2FCA94163355a5B81F4D924Bce8cCbACc15406", "tradeHelperFacet": "0xC1E16AD7844Da1AEFFa6c3932AD02b823DE12d3F" }, - "facadeWriteLib": "0x1103851D1FCDD3f88096fbed812c8FF01949cF9d", + "facadeWriteLib": "0x97E1586dAF469ceD46a956516BC5D2a4Bbb34356", "basketLib": "0x3700b22C742980be9D22740933d4a041A64f7314", - "facadeWrite": "0x7F946356C26043326Aeb2597703a8aE05561D8C8", - "deployer": "0x25a99457FBE10e21ffF9f722dd873cA882CFBA99", + "facadeWrite": "0x53d8D5B20607bf04b238463F28b222B0cc47DF4F", + "deployer": "0x5705F85A05c8b57818663C7AB6a11f88323a1A57", "rsrAsset": "0x22018D85BFdA9e2673FB4101e957562a1e952Cdf", "implementations": { "main": "0x6D05CB2CB647B58189FA16f81784C05B4bcd4fe9", @@ -33,7 +33,7 @@ "furnace": "0x280Eb3B16A95a2F3CEDc2bDC4E6F91b43a3c396d", "rsrTrader": "0x55590a1Bf90fbf7352A46c4af652A231AA5CbF13", "rTokenTrader": "0x55590a1Bf90fbf7352A46c4af652A231AA5CbF13", - "rToken": "0x8b06c065b4b44B310442d4ee98777BF7a1EBC6E3", + "rToken": "0x5CE95fAdb880B6a0BA5fFB0D76eD58D97f2A0DC0", "stRSR": "0xb3dCcEf35647A8821C76f796bE8B5426Cc953412" } } 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 b65b89e31..3b1a14f13 100644 --- a/scripts/addresses/base-4.2.0/8453-tmp-deployments.json +++ b/scripts/addresses/base-4.2.0/8453-tmp-deployments.json @@ -13,10 +13,10 @@ "revenueFacet": "0x4c2FCA94163355a5B81F4D924Bce8cCbACc15406", "tradeHelperFacet": "0xC1E16AD7844Da1AEFFa6c3932AD02b823DE12d3F" }, - "facadeWriteLib": "0x1103851D1FCDD3f88096fbed812c8FF01949cF9d", + "facadeWriteLib": "0x97E1586dAF469ceD46a956516BC5D2a4Bbb34356", "basketLib": "0x3700b22C742980be9D22740933d4a041A64f7314", - "facadeWrite": "0x7F946356C26043326Aeb2597703a8aE05561D8C8", - "deployer": "0x25a99457FBE10e21ffF9f722dd873cA882CFBA99", + "facadeWrite": "0x53d8D5B20607bf04b238463F28b222B0cc47DF4F", + "deployer": "0x5705F85A05c8b57818663C7AB6a11f88323a1A57", "rsrAsset": "0x22018D85BFdA9e2673FB4101e957562a1e952Cdf", "implementations": { "main": "0x6D05CB2CB647B58189FA16f81784C05B4bcd4fe9", @@ -33,7 +33,7 @@ "furnace": "0x280Eb3B16A95a2F3CEDc2bDC4E6F91b43a3c396d", "rsrTrader": "0x55590a1Bf90fbf7352A46c4af652A231AA5CbF13", "rTokenTrader": "0x55590a1Bf90fbf7352A46c4af652A231AA5CbF13", - "rToken": "0x8b06c065b4b44B310442d4ee98777BF7a1EBC6E3", + "rToken": "0x5CE95fAdb880B6a0BA5fFB0D76eD58D97f2A0DC0", "stRSR": "0xb3dCcEf35647A8821C76f796bE8B5426Cc953412" } } 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 15e7403c1..0922e4050 100644 --- a/scripts/addresses/mainnet-4.2.0/1-tmp-deployments.json +++ b/scripts/addresses/mainnet-4.2.0/1-tmp-deployments.json @@ -13,10 +13,10 @@ "revenueFacet": "0x69c21f4828c57D3BB5Eb5fEEa6C5c1432e193510", "tradeHelperFacet": "0x9c09e506e00ac87E2413b7501702fAcA690201Fb" }, - "facadeWriteLib": "0xE8F9df9Fa0a7d40F75e26105aA0f748ea17C9dfe", + "facadeWriteLib": "0x2E749f12aE9e71f41c69cBaB1623f0359Aa4F740", "basketLib": "0x2fdD94F363644FEDE5106B22b1706E45D4dD9bea", - "facadeWrite": "0xA8Ea6cF7beAB5E4395D437AE37D696E007739357", - "deployer": "0xd5fcf4795877Ad0084FFc554b71D61bb660255AC", + "facadeWrite": "0x0A9D3D35055481BB67E5E145B07F6fb6cbeF9D4B", + "deployer": "0x8FcbD0BaaeB442F1f3F374FcB63933e6D4Cb8710", "rsrAsset": "0xbCb71eE9c3372f3444cBBe3E1b263204967EdBE3", "implementations": { "main": "0xc5bf686CfB85786fcFfF557297D4afF8F4e15e44", @@ -33,7 +33,7 @@ "furnace": "0x518fcA5e31eEea484276A68Ad5F7E5838F74F03F", "rsrTrader": "0x9E240cb60627b49088c2E6152c4447F7181dC0eB", "rTokenTrader": "0x9E240cb60627b49088c2E6152c4447F7181dC0eB", - "rToken": "0xB20909FD35c548069d1Cc0Ff38337e6b362CA8a0", + "rToken": "0x258ce833CF9AD19208372763A00aA1565Dd40b3C", "stRSR": "0x8E594FFb702C48a9fF8ae56FAeC795D83A69B387" } } diff --git a/tasks/deployment/deploy-spell.ts b/tasks/deployment/deploy-spell.ts index 4e2f54195..a26ba34ba 100644 --- a/tasks/deployment/deploy-spell.ts +++ b/tasks/deployment/deploy-spell.ts @@ -1,9 +1,13 @@ import { getChainId } from '../../common/blockchain-utils' import { task, types } from 'hardhat/config' import { Contract } from 'ethers' +import { + getDeploymentFilename, + getDeploymentFile, + IDeployments, +} from '../../scripts/deployment/common' let spell: Contract -let facadeWriteLib: Contract task('deploy-spell', 'Deploys a spell by name') // version is unusable as a param name @@ -26,13 +30,13 @@ task('deploy-spell', 'Deploys a spell by name') // Deploy Spell if (spellName === 'Upgrade4_2_0') { - const FacadeWriteLibFactory = await hre.ethers.getContractFactory('FacadeWriteLib') - facadeWriteLib = await FacadeWriteLibFactory.deploy() - await facadeWriteLib.deployed() + const deploymentFilename = getDeploymentFilename(chainId) + const deployments = getDeploymentFile(deploymentFilename) + console.log(`Using existing FacadeWriteLib address: ${deployments.facadeWriteLib}`) const SpellFactory = await hre.ethers.getContractFactory('Upgrade4_2_0', { libraries: { - FacadeWriteLib: facadeWriteLib.address, + FacadeWriteLib: deployments.facadeWriteLib, }, }) spell = await SpellFactory.deploy(isMainnet) @@ -64,16 +68,6 @@ task('deploy-spell', 'Deploys a spell by name') }) console.timeEnd('Verifying Spell Implementation') - if (spellName === 'Upgrade4_2_0') { - console.time('Verifying FacadeWriteLib') - await hre.run('verify:verify', { - address: facadeWriteLib!.address, - constructorArguments: [], - contract: `contracts/facade/lib/FacadeWriteLib.sol:FacadeWriteLib`, - }) - console.timeEnd('Verifying FacadeWriteLib') - } - if (!params.noOutput) { console.log('verified') } diff --git a/test/RToken.test.ts b/test/RToken.test.ts index 4e3a814a6..a48cb9019 100644 --- a/test/RToken.test.ts +++ b/test/RToken.test.ts @@ -128,6 +128,7 @@ describe(`RTokenP${IMPLEMENTATION} contract`, () => { it('Deployment should setup RToken correctly', async () => { expect(await rToken.name()).to.equal('RTKN RToken') expect(await rToken.symbol()).to.equal('RTKN') + expect(await rToken.mandate()).to.equal('mandate') expect(await rToken.decimals()).to.equal(18) expect(await rToken.totalSupply()).to.equal(bn(0)) expect(await rToken.basketsNeeded()).to.equal(0) @@ -191,6 +192,17 @@ describe(`RTokenP${IMPLEMENTATION} contract`, () => { }) }) + it('Should not allow to setMandate unless owner #fast', async () => { + await expect(rToken.connect(addr1).setMandate('mandate2')).to.be.revertedWith( + 'governance only' + ) + + await expect(rToken.connect(owner).setMandate('mandate2')) + .to.emit(rToken, 'MandateSet') + .withArgs('mandate', 'mandate2') + expect(await rToken.mandate()).to.equal('mandate2') + }) + it('Should allow to update issuance throttle if Owner and perform validations', async () => { const issuanceThrottleParams = { amtRate: fp('1'), pctRate: fp('0.01') } await expect( diff --git a/test/integration/fork-block-numbers.ts b/test/integration/fork-block-numbers.ts index 03f81bbc1..351e9ec50 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: 23986857, // Ethereum + default: 23992977, // Ethereum } export default forkBlockNumber