From 6c888dda28bbf5e146b68a2563afd2cc3d2cfd2e Mon Sep 17 00:00:00 2001 From: nezouse Date: Tue, 23 Apr 2024 13:52:46 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9B=8F=EF=B8=8F=20Split=20debt=20and=20redem?= =?UTF-8?q?ption=20fees?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contracts/BorrowerOperations.sol | 2 +- .../Dependencies/AddressesConfigurable.sol | 24 ++++++++++--------- contracts/Dependencies/AddressesMainnet.sol | 3 ++- test/trinity/PriceFeedTest.js | 4 ++-- test/trinity/SortedVesselsTest.js | 2 +- test/utils/deploymentHelpers.js | 1 + 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/contracts/BorrowerOperations.sol b/contracts/BorrowerOperations.sol index b847325..8d1c6f6 100644 --- a/contracts/BorrowerOperations.sol +++ b/contracts/BorrowerOperations.sol @@ -347,7 +347,7 @@ contract BorrowerOperations is TrinityBase, ReentrancyGuardUpgradeable, UUPSUpgr function _triggerBorrowingFee(address _asset, address _borrower, uint256 _debtTokenAmount) internal returns (uint256) { uint256 debtTokenFee = IVesselManager(vesselManager).getBorrowingFee(_asset, _debtTokenAmount); - IDebtToken(debtToken).mint(_asset, treasuryAddress, debtTokenFee); + IDebtToken(debtToken).mint(_asset, distributorAddress, debtTokenFee); _updateVesselEpoch(_asset, _borrower); emit BorrowingFeePaid(_asset, _borrower, debtTokenFee); return debtTokenFee; diff --git a/contracts/Dependencies/AddressesConfigurable.sol b/contracts/Dependencies/AddressesConfigurable.sol index 8ec423a..887ba67 100644 --- a/contracts/Dependencies/AddressesConfigurable.sol +++ b/contracts/Dependencies/AddressesConfigurable.sol @@ -11,6 +11,7 @@ abstract contract AddressesConfigurable is OwnableUpgradeable { address public collSurplusPool; address public debtToken; address public defaultPool; + address public distributorAddress; address public gasPoolAddress; address public priceFeed; address public sortedVessels; @@ -27,14 +28,14 @@ abstract contract AddressesConfigurable is OwnableUpgradeable { * variables without shifting down storage in the inheritance chain. * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps */ - uint256[33] private __gap; // Goerli uses 47; Arbitrum uses 33 + uint256[32] private __gap; // Goerli uses 47; Arbitrum uses 33 // Dependency setters ----------------------------------------------------------------------------------------------- function setAddresses(address[] calldata _addresses) external onlyOwner { require(!isAddressSetupInitialized, "Setup is already initialized"); - require(_addresses.length == 14, "Expected 14 addresses at setup"); - for (uint i = 0; i < 14; i++) { + require(_addresses.length == 15, "Expected 15 addresses at setup"); + for (uint i = 0; i < 15; i++) { require(_addresses[i] != address(0), "Invalid address"); } activePool = _addresses[0]; @@ -43,14 +44,15 @@ abstract contract AddressesConfigurable is OwnableUpgradeable { collSurplusPool = _addresses[3]; debtToken = _addresses[4]; defaultPool = _addresses[5]; - gasPoolAddress = _addresses[6]; - priceFeed = _addresses[7]; - sortedVessels = _addresses[8]; - stabilityPool = _addresses[9]; - timelockAddress = _addresses[10]; - treasuryAddress = _addresses[11]; - vesselManager = _addresses[12]; - vesselManagerOperations = _addresses[13]; + distributorAddress = _addresses[6]; + gasPoolAddress = _addresses[7]; + priceFeed = _addresses[8]; + sortedVessels = _addresses[9]; + stabilityPool = _addresses[10]; + timelockAddress = _addresses[11]; + treasuryAddress = _addresses[12]; + vesselManager = _addresses[13]; + vesselManagerOperations = _addresses[14]; isAddressSetupInitialized = true; } diff --git a/contracts/Dependencies/AddressesMainnet.sol b/contracts/Dependencies/AddressesMainnet.sol index 686d222..9cdec1b 100644 --- a/contracts/Dependencies/AddressesMainnet.sol +++ b/contracts/Dependencies/AddressesMainnet.sol @@ -9,6 +9,7 @@ abstract contract AddressesMainnet { address public constant collSurplusPool = 0x09dfdF392a56E4316e97A13e20b09C415fCD3d7b; address public constant debtToken = 0x15f74458aE0bFdAA1a96CA1aa779D715Cc1Eefe4; address public constant defaultPool = 0x84446698694B348EaeCE187b55df06AB4Ce72b35; + address public constant distributorAddress = 0x6F8Fe995422c5efE6487A7B07f67E84aaD9D4eC8; address public constant gasPoolAddress = 0x40E0e274A42D9b1a9D4B64dC6c46D21228d45C20; address public constant priceFeed = 0x89F1ecCF2644902344db02788A790551Bb070351; address public constant sortedVessels = 0xF31D88232F36098096d1eB69f0de48B53a1d18Ce; @@ -23,6 +24,6 @@ abstract contract AddressesMainnet { * variables without shifting down storage in the inheritance chain. * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps */ - uint256[40] private __gap; + uint256[39] private __gap; } diff --git a/test/trinity/PriceFeedTest.js b/test/trinity/PriceFeedTest.js index 937cd41..3dea367 100644 --- a/test/trinity/PriceFeedTest.js +++ b/test/trinity/PriceFeedTest.js @@ -87,8 +87,8 @@ contract("PriceFeed", async accounts => { setBalance(timelock.address, 1e18) // only addresses considered in the tests are timelock and vesselManagerOperations - const addresses = new Array(14).fill(timelock.address, 0) - addresses[13] = vesselManagerOperations.address + const addresses = new Array(15).fill(timelock.address, 0) + addresses[14] = vesselManagerOperations.address await priceFeed.setAddresses(addresses) await setOracle(ZERO_ADDRESS, mockOracle.address) }) diff --git a/test/trinity/SortedVesselsTest.js b/test/trinity/SortedVesselsTest.js index 158c25d..dc2ae10 100644 --- a/test/trinity/SortedVesselsTest.js +++ b/test/trinity/SortedVesselsTest.js @@ -411,7 +411,7 @@ contract("SortedVessels", async accounts => { sortedVesselsTester = await SortedVesselsTester.new() await sortedVessels.initialize() - const addresses = new Array(14).fill(sortedVesselsTester.address, 0) + const addresses = new Array(15).fill(sortedVesselsTester.address, 0) await sortedVessels.setAddresses(addresses) await sortedVesselsTester.setSortedVessels(sortedVessels.address) diff --git a/test/utils/deploymentHelpers.js b/test/utils/deploymentHelpers.js index a082f97..cc39630 100644 --- a/test/utils/deploymentHelpers.js +++ b/test/utils/deploymentHelpers.js @@ -110,6 +110,7 @@ class DeploymentHelper { core.collSurplusPool.address, core.debtToken.address, core.defaultPool.address, + treasuryAddress, core.gasPool.address, core.priceFeedTestnet.address, core.sortedVessels.address,