pragma solidity ^0.4.23;
import "./Math.sol";
import "./Concept.sol";
import "./FathomToken.sol";
import "./Proxy.sol";
contract AssessmentParameters {
//for each concept, at most NofMembers * memberCeilingFactor/10 are going to be called
// (5 -> half the members, 2 -> 20% of the members, ...)
uint constant MEMBERCALL_CEILING_FACTOR = 5;
// minimal size for an assessment to be valid
uint constant MIN_ASSESSMENT_SIZE = 5;
// an assessment of size x will have to try sampling x * minAssessmentPoolFactor/10 assessors
// (so use 20 as 2, 15 as 1.5 ...)
uint constant ASSESSORPOOL_SIZEFACTOR = 20;
uint constant CHALLENGE_PERIOD = 12 hours;
// Max distance two scores can be apart to be seen as agreeing
uint constant public CONSENT_RADIUS = 13; // 13 is 5% of the total range of 256
}
contract AssessmentHeader {
event DataChanged(address user, bytes oldData, bytes newData);
}
contract AssessmentData is ProxyData, AssessmentHeader, AssessmentParameters {
address public assessee;
address[] internal assessors;
mapping (address => Stage) public assessorStage;
Stage public assessmentStage;
enum Stage {
None,
Called,
Confirmed,
Committed,
Done,
Burned,
Dissent
}
Concept public concept;
FathomToken public fathomToken;
uint public endTime;
// will keep track of timelimits for 1) latest possible time to confirm and
// 2) earliest time to reveal
uint public checkpoint;
uint public size;
uint public cost;
mapping(address => bytes32) internal commits;
uint public done; //counter how many assessors have committed/revealed their score
mapping(address => int128) internal scores;
int public finalScore;
bytes32 public salt; //used for token distribution
mapping (address => bytes) public data;
}
// same as assessmentData but with all variables internal, so as to not produce getter methods on the Assessment-Proxy
contract AssessmentDataInternal is ProxyData, AssessmentHeader, AssessmentParameters {
address internal assessee;
address[] internal assessors;
mapping (address => Stage) internal assessorStage;
Stage internal assessmentStage;
enum Stage {
None,
Called,
Confirmed,
Committed,
Done,
Burned,
Dissent
}
Concept internal concept;
FathomToken internal fathomToken;
uint internal endTime;
// will keep track of timelimits for 1) latest possible time to confirm and
// 2) earliest time to reveal
uint internal checkpoint;
uint internal size;
uint internal cost;
mapping(address => bytes32) internal commits;
uint internal done; //counter how many assessors have committed/revealed their score
mapping(address => int128) internal scores;
int internal finalScore;
bytes32 internal salt; //used for token distribution
mapping (address => bytes) internal data;
}
|