Last active
June 5, 2018 07:56
-
-
Save Ramarti/4507a662dd829902d59e1d77a9d26e52 to your computer and use it in GitHub Desktop.
EthicHubReputation snippet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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