Renamed `downtime` to `pastDowntime` in the MinersEscrow contract

pull/371/head
szotov 2018-07-20 20:33:44 +03:00
parent c75cd0e330
commit 86e5df2585
5 changed files with 38 additions and 36 deletions

View File

@ -64,7 +64,7 @@ contract MinersEscrow is Issuer {
uint16 confirmedPeriod2;
// downtime
uint16 lastActivePeriod;
Downtime[] downtime;
Downtime[] pastDowntime;
StakeInfo[] stakes;
}
@ -448,7 +448,7 @@ contract MinersEscrow is Issuer {
// miner was inactive for several periods
if (_lastActivePeriod < currentPeriod) {
info.downtime.push(Downtime(_lastActivePeriod + 1, currentPeriod));
info.pastDowntime.push(Downtime(_lastActivePeriod + 1, currentPeriod));
}
emit ActivityConfirmed(_miner, nextPeriod, _lockedValue);
}
@ -681,21 +681,21 @@ contract MinersEscrow is Issuer {
}
/**
* @notice Return the length of the downtime array
* @notice Return the length of the array of past downtime
**/
function getDowntimeLength(address _miner) public view returns (uint256) {
return minerInfo[_miner].downtime.length;
function getPastDowntimeLength(address _miner) public view returns (uint256) {
return minerInfo[_miner].pastDowntime.length;
}
/**
* @notice Return the information about downtime
* @notice Return the information about past downtime
**/
function getDowntime(address _miner, uint256 _index)
function getPastDowntime(address _miner, uint256 _index)
// TODO change to structure when ABIEncoderV2 is released
// public view returns (Downtime)
public view returns (uint16 startPeriod, uint16 endPeriod)
{
Downtime storage downtime = minerInfo[_miner].downtime[_index];
Downtime storage downtime = minerInfo[_miner].pastDowntime[_index];
startPeriod = downtime.startPeriod;
endPeriod = downtime.endPeriod;
}
@ -728,11 +728,11 @@ contract MinersEscrow is Issuer {
/**
* @dev Get Downtime structure by delegatecall
**/
function delegateGetDowntime(address _target, address _miner, uint256 _index)
function delegateGetPastDowntime(address _target, address _miner, uint256 _index)
internal returns (Downtime memory result)
{
bytes32 memoryAddress = delegateGetData(
_target, "getDowntime(address,uint256)", 2, bytes32(_miner), bytes32(_index));
_target, "getPastDowntime(address,uint256)", 2, bytes32(_miner), bytes32(_index));
assembly {
result := memoryAddress
}
@ -764,10 +764,11 @@ contract MinersEscrow is Issuer {
infoToCheck.confirmedPeriod2 == info.confirmedPeriod2 &&
infoToCheck.lastActivePeriod == info.lastActivePeriod);
require(uint256(delegateGet(_testTarget, "getDowntimeLength(address)", miner)) == info.downtime.length);
for (i = 0; i < info.downtime.length && i < MAX_CHECKED_VALUES; i++) {
Downtime storage downtime = info.downtime[i];
Downtime memory downtimeToCheck = delegateGetDowntime(_testTarget, minerAddress, i);
require(uint256(delegateGet(_testTarget, "getPastDowntimeLength(address)", miner)) ==
info.pastDowntime.length);
for (i = 0; i < info.pastDowntime.length && i < MAX_CHECKED_VALUES; i++) {
Downtime storage downtime = info.pastDowntime[i];
Downtime memory downtimeToCheck = delegateGetPastDowntime(_testTarget, minerAddress, i);
require(downtimeToCheck.startPeriod == downtime.startPeriod &&
downtimeToCheck.endPeriod == downtime.endPeriod);
}

View File

@ -176,7 +176,7 @@ contract PolicyManager is Upgradeable {
nodeInfo.rewardDelta[policy.startPeriod] = nodeInfo.rewardDelta[policy.startPeriod]
.add(startReward);
nodeInfo.rewardDelta[endPeriod] = nodeInfo.rewardDelta[endPeriod].sub(policy.rewardRate);
policy.arrangements.push(ArrangementInfo(node, escrow.getDowntimeLength(node), 0));
policy.arrangements.push(ArrangementInfo(node, escrow.getPastDowntimeLength(node), 0));
}
emit PolicyCreated(_policyId, msg.sender);
@ -231,13 +231,13 @@ contract PolicyManager is Upgradeable {
uint16 maxPeriod = AdditionalMath.min16(getCurrentPeriod(), _policy.lastPeriod);
uint16 minPeriod = AdditionalMath.max16(_policy.startPeriod, _arrangement.lastRefundedPeriod);
uint16 downtimePeriods = 0;
uint256 length = escrow.getDowntimeLength(_arrangement.node);
uint256 length = escrow.getPastDowntimeLength(_arrangement.node);
for (indexOfDowntimePeriods = _arrangement.indexOfDowntimePeriods;
indexOfDowntimePeriods < length;
indexOfDowntimePeriods++)
{
(uint16 startPeriod, uint16 endPeriod) =
escrow.getDowntime(_arrangement.node, indexOfDowntimePeriods);
escrow.getPastDowntime(_arrangement.node, indexOfDowntimePeriods);
if (startPeriod > maxPeriod) {
break;
} else if (endPeriod < minPeriod) {
@ -264,7 +264,8 @@ contract PolicyManager is Upgradeable {
if (lastActivePeriod < _policy.startPeriod - 1) {
refundValue = _policy.firstPartialReward;
} else if (_arrangement.indexOfDowntimePeriods < length) {
(startPeriod, endPeriod) = escrow.getDowntime(_arrangement.node, _arrangement.indexOfDowntimePeriods);
(startPeriod, endPeriod) = escrow.getPastDowntime(
_arrangement.node, _arrangement.indexOfDowntimePeriods);
if (_policy.startPeriod > startPeriod && _policy.startPeriod - 1 <= endPeriod) {
refundValue = _policy.firstPartialReward;
}

View File

@ -105,14 +105,14 @@ contract MinersEscrowForPolicyMock {
/**
* @notice Emulate getDowntimeLength
**/
function getDowntimeLength(address) public view returns (uint256) {
function getPastDowntimeLength(address) public view returns (uint256) {
return downtime.length;
}
/**
* @notice Emulate getDowntime
**/
function getDowntime(address, uint256 _index)
function getPastDowntime(address, uint256 _index)
public view returns (uint16 startPeriod, uint16 endPeriod)
{
Downtime storage data = downtime[_index];

View File

@ -66,12 +66,12 @@ def test_mining(testerchain, token, escrow_contract):
assert period == policy_manager.functions.getPeriod(ursula1, 0).call()
assert period == policy_manager.functions.getPeriod(ursula2, 0).call()
# Check downtime parameters
assert 1 == escrow.functions.getDowntimeLength(ursula1).call()
downtime = escrow.functions.getDowntime(ursula1, 0).call()
assert 1 == escrow.functions.getPastDowntimeLength(ursula1).call()
downtime = escrow.functions.getPastDowntime(ursula1, 0).call()
assert 1 == downtime[0]
assert period == downtime[1]
assert 1 == escrow.functions.getDowntimeLength(ursula2).call()
downtime = escrow.functions.getDowntime(ursula2, 0).call()
assert 1 == escrow.functions.getPastDowntimeLength(ursula2).call()
downtime = escrow.functions.getPastDowntime(ursula2, 0).call()
assert 1 == downtime[0]
assert period == downtime[1]
assert period + 1 == escrow.functions.getLastActivePeriod(ursula1).call()
@ -91,7 +91,7 @@ def test_mining(testerchain, token, escrow_contract):
tx = escrow.functions.confirmActivity().transact({'from': ursula1})
testerchain.wait_for_receipt(tx)
assert 1 == escrow.functions.getDowntimeLength(ursula1).call()
assert 1 == escrow.functions.getPastDowntimeLength(ursula1).call()
# Checks that no error from repeated method call
tx = escrow.functions.confirmActivity().transact({'from': ursula1})
@ -110,8 +110,8 @@ def test_mining(testerchain, token, escrow_contract):
assert 1046 == escrow.functions.minerInfo(ursula1).call()[VALUE_FIELD]
assert 525 == escrow.functions.minerInfo(ursula2).call()[VALUE_FIELD]
# Check that downtime value has not changed
assert 1 == escrow.functions.getDowntimeLength(ursula1).call()
assert 1 == escrow.functions.getDowntimeLength(ursula2).call()
assert 1 == escrow.functions.getPastDowntimeLength(ursula1).call()
assert 1 == escrow.functions.getPastDowntimeLength(ursula2).call()
assert period + 1 == escrow.functions.getLastActivePeriod(ursula1).call()
assert period - 1 == escrow.functions.getLastActivePeriod(ursula2).call()
@ -153,8 +153,8 @@ def test_mining(testerchain, token, escrow_contract):
testerchain.wait_for_receipt(tx)
assert period + 1 == escrow.functions.getLastActivePeriod(ursula2).call()
assert 2 == escrow.functions.getDowntimeLength(ursula2).call()
downtime = escrow.functions.getDowntime(ursula2, 1).call()
assert 2 == escrow.functions.getPastDowntimeLength(ursula2).call()
downtime = escrow.functions.getPastDowntime(ursula2, 1).call()
assert period - 1 == downtime[0]
assert period == downtime[1]
@ -221,8 +221,8 @@ def test_mining(testerchain, token, escrow_contract):
tx = escrow.functions.lock(500, 2).transact({'from': ursula2})
testerchain.wait_for_receipt(tx)
assert 3 == escrow.functions.getDowntimeLength(ursula2).call()
downtime = escrow.functions.getDowntime(ursula2, 2).call()
assert 3 == escrow.functions.getPastDowntimeLength(ursula2).call()
downtime = escrow.functions.getPastDowntime(ursula2, 2).call()
assert period == downtime[0]
assert period == downtime[1]
@ -236,8 +236,8 @@ def test_mining(testerchain, token, escrow_contract):
assert 1152 == escrow.functions.minerInfo(ursula1).call()[VALUE_FIELD]
assert 1025 == escrow.functions.minerInfo(ursula2).call()[VALUE_FIELD]
assert 4 == escrow.functions.getDowntimeLength(ursula2).call()
downtime = escrow.functions.getDowntime(ursula2, 3).call()
assert 4 == escrow.functions.getPastDowntimeLength(ursula2).call()
downtime = escrow.functions.getPastDowntime(ursula2, 3).call()
assert period - 3 == downtime[0]
assert period == downtime[1]
@ -255,7 +255,7 @@ def test_mining(testerchain, token, escrow_contract):
testerchain.time_travel(hours=1)
tx = escrow.functions.confirmActivity().transact({'from': ursula2})
testerchain.wait_for_receipt(tx)
assert 4 == escrow.functions.getDowntimeLength(ursula2).call()
assert 4 == escrow.functions.getPastDowntimeLength(ursula2).call()
testerchain.time_travel(hours=1)
tx = escrow.functions.confirmActivity().transact({'from': ursula2})
testerchain.wait_for_receipt(tx)

View File

@ -157,7 +157,7 @@ def test_pre_deposit(testerchain, token, escrow_contract):
period = escrow.functions.getCurrentPeriod().call()
assert 1 == policy_manager.functions.getPeriodsLength(owner).call()
assert period == policy_manager.functions.getPeriod(owner, 0).call()
assert 0 == escrow.functions.getDowntimeLength(owner).call()
assert 0 == escrow.functions.getPastDowntimeLength(owner).call()
assert 0 == escrow.functions.getLastActivePeriod(owner).call()
# Can't pre-deposit tokens again for the same miner twice
@ -195,7 +195,7 @@ def test_pre_deposit(testerchain, token, escrow_contract):
assert 0 == escrow.functions.getLockedTokens(owner, 50 * (index + 1) + 1).call()
assert 1 == policy_manager.functions.getPeriodsLength(owner).call()
assert period == policy_manager.functions.getPeriod(owner, 0).call()
assert 0 == escrow.functions.getDowntimeLength(owner).call()
assert 0 == escrow.functions.getPastDowntimeLength(owner).call()
assert 0 == escrow.functions.getLastActivePeriod(owner).call()
events = deposit_log.get_all_entries()