Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions contracts/DLCManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,15 @@ contract DLCManager is
error UnderCollateralized(uint256 newValueLocked, uint256 valueMinted);
error NotEnoughReserves(uint256 reserves, uint256 amount);

error InvalidMinimumDepositRange(
uint256 newMinimum,
uint256 currentMaximum
);
error InvalidMaximumDepositRange(
uint256 newMaximum,
uint256 currentMinimum
);

////////////////////////////////////////////////////////////////
// MODIFIERS //
////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -701,11 +710,23 @@ contract DLCManager is
}

function setMinimumDeposit(uint256 newMinimumDeposit) external onlyAdmin {
if (newMinimumDeposit > maximumDeposit) {
revert InvalidMinimumDepositRange(
newMinimumDeposit,
maximumDeposit
);
}
minimumDeposit = newMinimumDeposit;
emit SetMinimumDeposit(newMinimumDeposit);
}

function setMaximumDeposit(uint256 newMaximumDeposit) external onlyAdmin {
if (newMaximumDeposit < minimumDeposit) {
revert InvalidMaximumDepositRange(
newMaximumDeposit,
minimumDeposit
);
}
maximumDeposit = newMaximumDeposit;
emit SetMaximumDeposit(newMaximumDeposit);
}
Expand Down
30 changes: 28 additions & 2 deletions test/DLCManager.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,19 @@ describe('DLCManager', () => {
await dlcManager.connect(deployer).setMinimumDeposit(1000);
expect(await dlcManager.minimumDeposit()).to.equal(1000);
});

it('reverts if new minimum deposit is greater than current maximum deposit', async () => {
const currentMaximum = await dlcManager.maximumDeposit();
const newMinimum = currentMaximum.add(1);
await expect(
dlcManager.connect(deployer).setMinimumDeposit(newMinimum)
)
.to.be.revertedWithCustomError(
dlcManager,
'InvalidMinimumDepositRange'
)
.withArgs(newMinimum, currentMaximum);
});
});

describe('setMaximumDeposit', async () => {
Expand All @@ -114,8 +127,21 @@ describe('DLCManager', () => {
).to.be.revertedWithCustomError(dlcManager, 'NotDLCAdmin');
});
it('should set maximum deposit', async () => {
await dlcManager.connect(deployer).setMaximumDeposit(1000);
expect(await dlcManager.maximumDeposit()).to.equal(1000);
await dlcManager.connect(deployer).setMaximumDeposit(1000000000); // 10 BTC, greater than default min
expect(await dlcManager.maximumDeposit()).to.equal(1000000000);
});

it('reverts if new maximum deposit is less than current minimum deposit', async () => {
const currentMinimum = await dlcManager.minimumDeposit();
const newMaximum = currentMinimum.sub(1);
await expect(
dlcManager.connect(deployer).setMaximumDeposit(newMaximum)
)
.to.be.revertedWithCustomError(
dlcManager,
'InvalidMaximumDepositRange'
)
.withArgs(newMaximum, currentMinimum);
});
});

Expand Down