Skip to content

Commit

Permalink
Add more variables on token stats
Browse files Browse the repository at this point in the history
  • Loading branch information
sydneyitguy committed Nov 6, 2020
1 parent 130f378 commit 72c31a1
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 34 deletions.
52 changes: 25 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,60 +32,58 @@ A governance token distribution contract on top of LockUpPool. A maximum of 1.2M
## Gas consumption
```
·------------------------------------------|----------------------------|-------------|----------------------------·
| Solc version: 0.6.12+commit.27d51765 · Optimizer enabled: false · Runs: 200 · Block limit: 6718946 gas │
| Solc version: 0.7.1+commit.f4a555be · Optimizer enabled: false · Runs: 200 · Block limit: 6718946 gas │
···········································|····························|·············|·····························
| Methods · 15 gwei/gas · 394.76 usd/eth │
| Methods · 38 gwei/gas · 433.90 usd/eth │
··················|························|··············|·············|·············|··············|··············
| Contract · Method · Min · Max · Avg · # calls · usd (avg) │
··················|························|··············|·············|·············|··············|··············
| ERC20Token · addMinter · - · - · 73028 · 23 · 0.43
| ERC20Token · addMinter · 73038 · 73050 · 73048 · 23 · 1.20
··················|························|··············|·············|·············|··············|··············
| ERC20Token · approve · 29166 · 44274 · 43984 · 122 · 0.26
| ERC20Token · approve · 29166 · 44274 · 43976 · 120 · 0.73
··················|························|··············|·············|·············|··············|··············
| ERC20Token · initialize · 332847 · 371415 · 361514 · 90 · 2.14
| ERC20Token · initialize · 328285 · 373313 · 361760 · 90 · 5.96
··················|························|··············|·············|·············|··············|··············
| ERC20Token · mint · - · - · 53163 · 49 · 0.31
| ERC20Token · mint · - · - · 53096 · 49 · 0.88
··················|························|··············|·············|·············|··············|··············
| ERC20Token · transfer · 52261 · 52321 · 52318 · 22 · 0.31
| ERC20Token · transfer · 37283 · 52343 · 51623 · 21 · 0.85
··················|························|··············|·············|·············|··············|··············
| LockUpPool · addLockUpPool · 71511 · 86559 · 84934 · 37 · 0.50
| LockUpPool · addLockUpPool · 71475 · 86559 · 84932 · 37 · 1.40
··················|························|··············|·············|·············|··············|··············
| LockUpPool · claimBonus · 26871 · 126643 · 73390 · 3 · 0.43
| LockUpPool · claimBonus · 26883 · 126955 · 73598 · 3 · 1.21
··················|························|··············|·············|·············|··············|··············
| LockUpPool · doLockUp · 173460 · 293401 · 259079 · 46 · 1.53
| LockUpPool · doLockUp · 193432 · 358373 · 301556 · 46 · 4.97
··················|························|··············|·············|·············|··············|··············
| LockUpPool · exit · 60474 · 205524 · 136703 · 31 · 0.81
| LockUpPool · exit · 75503 · 273991 · 188522 · 31 · 3.11
··················|························|··············|·············|·············|··············|··············
| LockUpPool · initialize · - · - · 117219 · 31 · 0.69
| LockUpPool · initialize · - · - · 137233 · 31 · 2.26
··················|························|··············|·············|·············|··············|··············
| LockUpPool · setEmergencyMode · - · - · 43232 · 4 · 0.26
| LockUpPool · setEmergencyMode · - · - · 43232 · 4 · 0.71
··················|························|··············|·············|·············|··············|··············
| LockUpPool · updateMaxLimit · 28907 · 28979 · 28943 · 2 · 0.17
| LockUpPool · updateMaxLimit · 28907 · 28967 · 28937 · 2 · 0.48
··················|························|··············|·············|·············|··············|··············
| Migrations · setCompleted · - · - · 27335 · 3 · 0.16
| Migrations · setCompleted · - · - · 27335 · 3 · 0.45
··················|························|··············|·············|·············|··············|··············
| WRNRewardPool · addLockUpRewardPool · 100447 · 222790 · 133815 · 30 · 0.79
| WRNRewardPool · addLockUpRewardPool · 100725 · 224037 · 133956 · 30 · 2.21
··················|························|··············|·············|·············|··············|··············
| WRNRewardPool · claimWRN · 146308 · 202108 · 183508 · 6 · 1.09
| WRNRewardPool · claimWRN · 147577 · 203377 · 184777 · 6 · 3.05
··················|························|··············|·············|·············|··············|··············
| WRNRewardPool · doLockUp · 291836 · 395198 · 342116 · 24 · 2.03
| WRNRewardPool · doLockUp · 327636 · 416140 · 393060 · 24 · 6.48
··················|························|··············|·············|·············|··············|··············
| WRNRewardPool · exit · 157230 · 288567 · 243177 · 7 · 1.44
| WRNRewardPool · exit · 196963 · 358300 · 297910 · 7 · 4.91
··················|························|··············|·············|·············|··············|··············
| WRNRewardPool · initialize · - · - · 263264 · 23 · 1.56
| WRNRewardPool · initialize · 283266 · 283278 · 283277 · 23 · 4.67
··················|························|··············|·············|·············|··············|··············
| WRNRewardPool · setEmergencyMode · - · - · 43277 · 1 · 0.26
| WRNRewardPool · setEmergencyMode · - · - · 43277 · 1 · 0.71
··················|························|··············|·············|·············|··············|··············
| WRNRewardPool · updatePoolMultiplier · - · - · 221400 · 1 · 1.31
| WRNRewardPool · updatePoolMultiplier · - · - · 223338 · 1 · 3.68
··················|························|··············|·············|·············|··············|··············
| Deployments · · % of limit · │
···········································|··············|·············|·············|··············|··············
| ERC20Token · - · - · 3008792 · 44.8 % · 17.82
| ERC20Token · - · - · 3022475 · 45 % · 49.84
···········································|··············|·············|·············|··············|··············
| LockUpPool · - · - · 2983744 · 44.4 % · 17.67
| LockUpPool · - · - · 3052026 · 45.4 % · 50.32
···········································|··············|·············|·············|··············|··············
| Migrations · - · - · 186963 · 2.8 % · 1.11 │
···········································|··············|·············|·············|··············|··············
| WRNRewardPool · - · - · 4394387 · 65.4 % · 26.02 │
| WRNRewardPool · - · - · 4470476 · 66.5 % · 73.71 │
·------------------------------------------|--------------|-------------|-------------|--------------|-------------·
```
29 changes: 22 additions & 7 deletions contracts/LockUpPool.sol
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,23 @@ contract LockUpPool is Initializable, OwnableUpgradeSafe {
uint256 effectiveTotal;
uint256 bonusClaimed; // only used for tracking
uint256 bonusDebt;
uint256 lockedUpCount;
uint256 lockedUpCount; // accumulative lock-up count
LockUp[] lockUps;
}

struct TokenStats {
uint256 maxLockUpLimit;
uint256 totalLockUp;
uint256 totalLockUp; // info
uint256 effectiveTotalLockUp; // sum(amount * durationBoost)
uint256 totalPenalty;
uint256 totalPlatformFee;
uint256 totalClaimed;
uint256 totalPenalty; // info
uint256 totalPlatformFee; // info
uint256 totalClaimed; // info
uint256 accBonusPerShare; // Others' Penalty = My Bonus
uint256 accTotalLockUp; // info
uint256 accLockUpCount; // info
uint256 activeLockUpCount; // info
uint256 unlockedCount; // info
uint256 brokenCount; // info
}

// Token => TokenStats
Expand All @@ -58,7 +63,7 @@ contract LockUpPool is Initializable, OwnableUpgradeSafe {
mapping (address => mapping (address => UserLockUp)) public userLockUps;

event LockedUp(address indexed token, address indexed account, uint256 amount, uint256 totalLockUp, uint256 durationInMonths, uint256 timestamp);
event Exited(address indexed token, address indexed account, uint256 amount, uint256 refundAmount, uint256 penalty, uint256 fee, uint256 remainingTotal, uint256 timestamp);
event Exited(address indexed token, address indexed account, uint256 amount, uint256 refundAmount, uint256 penalty, uint256 fee, uint256 remainingTotal, uint256 durationInMonths, uint256 timestamp);
event BonusClaimed(address indexed token, address indexed account, uint256 amount, uint256 timestamp);

// Fancy math here:
Expand Down Expand Up @@ -168,6 +173,9 @@ contract LockUpPool is Initializable, OwnableUpgradeSafe {

// Update TokenStats
tokenStat.totalLockUp = tokenStat.totalLockUp.add(amount);
tokenStat.accTotalLockUp = tokenStat.accTotalLockUp.add(amount);
tokenStat.accLockUpCount = tokenStat.accLockUpCount.add(1);
tokenStat.activeLockUpCount = tokenStat.activeLockUpCount.add(1);
tokenStat.effectiveTotalLockUp = tokenStat.effectiveTotalLockUp.add(effectiveAmount);

_updateBonusDebt(tokenAddress, msg.sender);
Expand Down Expand Up @@ -217,6 +225,13 @@ contract LockUpPool is Initializable, OwnableUpgradeSafe {
tokenStat.totalPenalty = tokenStat.totalPenalty.add(penalty);
tokenStat.totalPlatformFee = tokenStat.totalPlatformFee.add(fee);

tokenStat.activeLockUpCount = tokenStat.activeLockUpCount.sub(1);
if (penalty > 0) {
tokenStat.brokenCount = tokenStat.brokenCount.add(1);
} else {
tokenStat.unlockedCount = tokenStat.unlockedCount.add(1);
}

// Update user lockUp stats
userLockUp.total = userLockUp.total.sub(lockUp.amount);
userLockUp.effectiveTotal = userLockUp.effectiveTotal.sub(lockUp.effectiveAmount);
Expand All @@ -234,7 +249,7 @@ contract LockUpPool is Initializable, OwnableUpgradeSafe {
token.safeTransfer(msg.sender, refundAmount);
token.safeTransfer(owner(), fee); // Platform fee

emit Exited(tokenAddress, msg.sender, lockUp.amount, refundAmount, penalty, fee, userLockUp.total, block.timestamp);
emit Exited(tokenAddress, msg.sender, lockUp.amount, refundAmount, penalty, fee, userLockUp.total, lockUp.durationInMonths, block.timestamp);
}

function earnedBonus(address tokenAddress) public view returns (uint256) {
Expand Down

0 comments on commit 72c31a1

Please sign in to comment.