[marketplace] move proofPeriod() getter to Proofs.sol
This commit is contained in:
parent
8c6891f1e2
commit
7aa162b526
|
@ -231,10 +231,6 @@ contract Marketplace is Collateral, Proofs, StateRetrieval {
|
||||||
_;
|
_;
|
||||||
}
|
}
|
||||||
|
|
||||||
function proofPeriod() public view returns (uint256) {
|
|
||||||
return secondsPerPeriod;
|
|
||||||
}
|
|
||||||
|
|
||||||
function requestEnd(RequestId requestId) public view returns (uint256) {
|
function requestEnd(RequestId requestId) public view returns (uint256) {
|
||||||
uint256 end = requestContexts[requestId].endsAt;
|
uint256 end = requestContexts[requestId].endsAt;
|
||||||
RequestState state = requestState(requestId);
|
RequestState state = requestState(requestId);
|
||||||
|
|
|
@ -26,6 +26,10 @@ abstract contract Proofs is Periods {
|
||||||
|
|
||||||
function slotState(SlotId id) internal view virtual returns (SlotState);
|
function slotState(SlotId id) internal view virtual returns (SlotState);
|
||||||
|
|
||||||
|
function proofPeriod() public view returns (uint256) {
|
||||||
|
return secondsPerPeriod;
|
||||||
|
}
|
||||||
|
|
||||||
function missingProofs(SlotId slotId) public view returns (uint256) {
|
function missingProofs(SlotId slotId) public view returns (uint256) {
|
||||||
return missed[slotId];
|
return missed[slotId];
|
||||||
}
|
}
|
||||||
|
@ -35,12 +39,9 @@ abstract contract Proofs is Periods {
|
||||||
probabilities[id] = probability;
|
probabilities[id] = probability;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPointer(
|
function getPointer(SlotId id, Period period) internal view returns (uint8) {
|
||||||
SlotId id,
|
|
||||||
Period proofPeriod
|
|
||||||
) internal view returns (uint8) {
|
|
||||||
uint256 blockNumber = block.number % 256;
|
uint256 blockNumber = block.number % 256;
|
||||||
uint256 periodNumber = Period.unwrap(proofPeriod) % 256;
|
uint256 periodNumber = Period.unwrap(period) % 256;
|
||||||
uint256 idOffset = uint256(SlotId.unwrap(id)) % 256;
|
uint256 idOffset = uint256(SlotId.unwrap(id)) % 256;
|
||||||
uint256 pointer = (blockNumber + periodNumber + idOffset) % 256;
|
uint256 pointer = (blockNumber + periodNumber + idOffset) % 256;
|
||||||
return uint8(pointer);
|
return uint8(pointer);
|
||||||
|
@ -58,9 +59,9 @@ abstract contract Proofs is Periods {
|
||||||
|
|
||||||
function getChallenge(
|
function getChallenge(
|
||||||
SlotId id,
|
SlotId id,
|
||||||
Period proofPeriod
|
Period period
|
||||||
) internal view returns (bytes32) {
|
) internal view returns (bytes32) {
|
||||||
return getChallenge(getPointer(id, proofPeriod));
|
return getChallenge(getPointer(id, period));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getChallenge(SlotId id) public view returns (bytes32) {
|
function getChallenge(SlotId id) public view returns (bytes32) {
|
||||||
|
@ -69,14 +70,14 @@ abstract contract Proofs is Periods {
|
||||||
|
|
||||||
function _getProofRequirement(
|
function _getProofRequirement(
|
||||||
SlotId id,
|
SlotId id,
|
||||||
Period proofPeriod
|
Period period
|
||||||
) internal view returns (bool isRequired, uint8 pointer) {
|
) internal view returns (bool isRequired, uint8 pointer) {
|
||||||
SlotState state = slotState(id);
|
SlotState state = slotState(id);
|
||||||
Period start = periodOf(slotStarts[id]);
|
Period start = periodOf(slotStarts[id]);
|
||||||
if (state != SlotState.Filled || !isAfter(proofPeriod, start)) {
|
if (state != SlotState.Filled || !isAfter(period, start)) {
|
||||||
return (false, 0);
|
return (false, 0);
|
||||||
}
|
}
|
||||||
pointer = getPointer(id, proofPeriod);
|
pointer = getPointer(id, period);
|
||||||
bytes32 challenge = getChallenge(pointer);
|
bytes32 challenge = getChallenge(pointer);
|
||||||
uint256 probability = (probabilities[id] * (256 - downtime)) / 256;
|
uint256 probability = (probabilities[id] * (256 - downtime)) / 256;
|
||||||
isRequired = uint256(challenge) % probability == 0;
|
isRequired = uint256(challenge) % probability == 0;
|
||||||
|
@ -84,11 +85,11 @@ abstract contract Proofs is Periods {
|
||||||
|
|
||||||
function isProofRequired(
|
function isProofRequired(
|
||||||
SlotId id,
|
SlotId id,
|
||||||
Period proofPeriod
|
Period period
|
||||||
) internal view returns (bool) {
|
) internal view returns (bool) {
|
||||||
bool isRequired;
|
bool isRequired;
|
||||||
uint8 pointer;
|
uint8 pointer;
|
||||||
(isRequired, pointer) = _getProofRequirement(id, proofPeriod);
|
(isRequired, pointer) = _getProofRequirement(id, period);
|
||||||
return isRequired && pointer >= downtime;
|
return isRequired && pointer >= downtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue