Skip to content

Commit a6a0d5b

Browse files
authored
Active/Inactive bonds (#2)
* updated maturity condition * code review comments
1 parent 3a000af commit a6a0d5b

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

contracts/ACash.sol

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ contract ACash is ERC20, Initializable, Ownable {
4141
AddressQueue.Queue public bondQueue;
4242

4343
// the minimum maturity time in seconds for a bond below which it gets removed from the bond queue
44-
uint256 private _minQueueMaturiySec;
44+
uint256 public minMaturiySec;
4545

4646
// the maximum maturity time in seconds for a bond above which it can't get added into the bond queue
47-
uint256 private _maxQueueMaturiySec;
47+
uint256 public maxMaturiySec;
4848

4949
//---- ERC-20 parameters
5050
uint8 private immutable _decimals;
@@ -98,7 +98,7 @@ contract ACash is ERC20, Initializable, Ownable {
9898
uint256 mintAmt = 0;
9999
for (uint256 i = 0; i < trancheCount; i++) {
100100
uint256 trancheYield = _trancheYields[configHash][i];
101-
if(trancheYield == 0){
101+
if (trancheYield == 0) {
102102
continue;
103103
}
104104

@@ -121,8 +121,7 @@ contract ACash is ERC20, Initializable, Ownable {
121121
function advanceMintBond(IBondController newBond) public {
122122
require(address(newBond) != bondQueue.head(), "New bond already in queue");
123123
require(bondIssuer.isInstance(newBond), "Expect new bond to be minted by the minter");
124-
require(newBond.maturityDate() > minQueueMaturityDate(), "New bond matures too soon");
125-
require(newBond.maturityDate() <= maxQueueMaturityDate(), "New bond matures too late");
124+
require(isActiveBond(newBond), "New bond not active");
126125

127126
bondQueue.enqueue(address(newBond));
128127
}
@@ -133,7 +132,7 @@ contract ACash is ERC20, Initializable, Ownable {
133132
while (true) {
134133
IBondController latestBond = IBondController(bondQueue.tail());
135134

136-
if (address(latestBond) == address(0) || latestBond.maturityDate() > minQueueMaturityDate()) {
135+
if (address(latestBond) == address(0) || isActiveBond(latestBond)) {
137136
break;
138137
}
139138

@@ -187,21 +186,20 @@ contract ACash is ERC20, Initializable, Ownable {
187186
feeStrategy = feeStrategy_;
188187
}
189188

190-
function setTolarableBondMaturiy(uint256 minQueueMaturiySec, uint256 maxQueueMaturiySec) external onlyOwner {
191-
_minQueueMaturiySec = minQueueMaturiySec;
192-
_maxQueueMaturiySec = maxQueueMaturiySec;
189+
function setTolerableBondMaturiy(uint256 minMaturiySec_, uint256 maxMaturiySec_) external onlyOwner {
190+
minMaturiySec = minMaturiySec_;
191+
maxMaturiySec = maxMaturiySec_;
193192
}
194193

195194
function setTrancheYields(bytes32 configHash, uint256[] memory yields) external onlyOwner {
196195
_trancheYields[configHash] = yields;
197196
}
198197

199-
function minQueueMaturityDate() public view returns (uint256) {
200-
return block.timestamp + _minQueueMaturiySec;
201-
}
202-
203-
function maxQueueMaturityDate() public view returns (uint256) {
204-
return block.timestamp + _maxQueueMaturiySec;
198+
// bond's maturity is within bounds
199+
// only active bonds can be added to the queue. If a bond is inactive it gets kicked from the queue ..
200+
function isActiveBond(IBondController bond) public view returns (bool) {
201+
return (bond.maturityDate() >= block.timestamp + minMaturiySec &&
202+
bond.maturityDate() < block.timestamp + maxMaturiySec);
205203
}
206204

207205
/*

0 commit comments

Comments
 (0)