For the audit, we reviewed Elevate's upcoming staking platform. Please note we have not reviewed the Elevate token contract in detail. The Elevate DeFi team directly provided us the contracts for this review. The code is intended to remain closed-source at least until the launch of the platform.
Function Graph

Inheritence Chart

Functions Overview
($) = payable function
# = non-constant function
Int = Internal
Ext = External
Pub = Public
+ [Lib] SafeMath
- [Int] tryAdd
- [Int] trySub
- [Int] tryMul
- [Int] tryDiv
- [Int] tryMod
- [Int] add
- [Int] sub
- [Int] mul
- [Int] div
- [Int] mod
- [Int] sub
- [Int] div
- [Int] mod
+ ReentrancyGuard
- [Int] #
+ [Int] IERC20
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Int] ITREASURY
- [Ext] token
- [Ext] fundsAvailable
- [Ext] release #
+ Context
- [Int] _msgSender
- [Int] _msgData
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
+ TokenPool (Ownable)
- [Pub] #
- [Pub] balance
- [Ext] transfer #
- modifiers: onlyOwner
+ ReflectiveStake (ReentrancyGuard)
- [Pub] #
- [Pub] getStakingToken
- [Ext] getDistributionToken
- [Ext] stake #
- modifiers: nonReentrant
- [Int] _applyFee
- [Ext] unstake #
- modifiers: nonReentrant
- [Ext] unstakeMax #
- modifiers: nonReentrant
- [Prv] _unstake #
- [Prv] computeNewReward
- [Ext] getUserStakes
- [Ext] getUserTotals
- [Pub] totalStakedFor
- [Pub] totalStaked
- [Ext] token
- [Ext] treasuryTarget
- [Prv] updateAccounting #
- [Ext] isUnlocked
- [Pub] totalPending
- [Pub] totalUnlocked
- [Ext] totalAvailable
- [Pub] unlockTokens #
Function Graph

Inheritence Chart

Functions Overview
($) = payable function
# = non-constant function
Int = Internal
Ext = External
Pub = Public
+ [Int] IERC20
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Lib] SafeMath
- [Int] tryAdd
- [Int] trySub
- [Int] tryMul
- [Int] tryDiv
- [Int] tryMod
- [Int] add
- [Int] sub
- [Int] mul
- [Int] div
- [Int] mod
- [Int] sub
- [Int] div
- [Int] mod
+ [Lib] Address
- [Int] isContract
- [Int] sendValue #
- [Int] functionCall #
- [Int] functionCall #
- [Int] functionCallWithValue #
- [Int] functionCallWithValue #
- [Int] functionStaticCall
- [Int] functionStaticCall
- [Int] functionDelegateCall #
- [Int] functionDelegateCall #
- [Prv] _verifyCallResult
+ [Lib] SafeERC20
- [Int] safeTransfer #
- [Int] safeTransferFrom #
- [Int] safeApprove #
- [Int] safeIncreaseAllowance #
- [Int] safeDecreaseAllowance #
- [Prv] _callOptionalReturn #
+ Context
- [Int] _msgSender
- [Int] _msgData
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
+ ReentrancyGuard
- [Int] #
+ ReflectiveTreasury (Ownable, ReentrancyGuard)
- [Pub] #
- [Ext] token
- [Ext] beneficiary
- [Ext] principle
- [Pub] fundsAvailable
- [Ext] deposit #
- modifiers: nonReentrant
- [Int] _applyFee
- [Ext] withdraw #
- modifiers: onlyOwner,nonReentrant
- [Ext] setBeneficiary #
- modifiers: onlyOwner
- [Ext] release #