Skip to content

Instantly share code, notes, and snippets.

@Ramarti
Last active June 5, 2018 07:56
Show Gist options
  • Save Ramarti/4507a662dd829902d59e1d77a9d26e52 to your computer and use it in GitHub Desktop.
Save Ramarti/4507a662dd829902d59e1d77a9d26e52 to your computer and use it in GitHub Desktop.
EthicHubReputation snippet
pragma solidity ^0.4.23;
import '../EthicHubBase.sol';
import '../math/SafeMath.sol';
import './EthicHubReputationInterface.sol';
contract EthicHubReputation is EthicHubBase, EthicHubReputationInterface {
//10 with 2 decilmals
uint maxReputation = 1000;
uint reputationStep = 100;
//Tier 1 x 20 people
uint minProyect = 20;
uint constant public initReputation = 500;
//0.05
uint incrLocalNodeMultiplier = 5;
//
//.....
//
function incrementCommunityReputation(uint previousReputation, uint completedProjectsByTier) view returns(uint) {
require(completedProjectsByTier > 0);
uint nextRep = previousReputation.add(reputationStep / completedProjectsByTier);
if (nextRep >= maxReputation) {
return maxReputation;
} else {
return nextRep;
}
}
function incrementLocalNodeReputation(uint previousReputation, uint tier, uint borrowers) view returns(uint) {
uint increment = (tier.mul(borrowers).div(minProyect)).mul(incrLocalNodeMultiplier);
uint nextRep = previousReputation.add(increment);
if (nextRep >= maxReputation) {
return maxReputation;
} else {
return nextRep;
}
}
function burnLocalNodeReputation(uint delayDays, uint maxDelayDays, uint prevReputation) view returns(uint) {
if (delayDays >= maxDelayDays){
return 0;
}
uint decrement = prevReputation.mul(delayDays).div(maxDelayDays);
if (delayDays < maxDelayDays && decrement < reputationStep) {
return prevReputation.sub(decrement);
} else {
return prevReputation.sub(reputationStep);
}
}
function burnCommunityReputation(uint delayDays, uint maxDelayDays, uint prevReputation) pure returns(uint) {
if (delayDays < maxDelayDays) {
return prevReputation.sub(prevReputation.mul(delayDays).div(maxDelayDays));
} else {
return 0;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment