CertiK reviewed The Sandbox (Sandbox Sand Reward Pool) on 4 Feb 2022: 6 findings, 0 critical; 5 marked fixed, 1 acknowledged.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 1 | 0 |
| Medium | 0 | 0 | 1 |
| Low | 0 | 0 | 4 |
In the contract `LandContributionCalculator` and `LandOwnersAloneContributionCalculator`, the role `_owner` has authority over the following function: - `setNFTMultiplierToken()`: Set the `multiplierNFToken` that specifies the amount of users' land. In the contract `PeriodicRewardCalculator`, the role `DEFAULT_ADMIN_ROLE` has authority over the following functions: - `setDuration()`: Modify the duration of the upcoming campaign; - `grantRole()`/`revokeRole()`: Grant/Revoke a role to/from an account. The role `REWARD_DISTRIBUTION` has authority over the following functions: - `setSavedRewards()`: Modify the variable `savedRewards` and update `lastUpdateTime`; - `notifyRewardAmount()`: Update the `rewardRate` after a specific amount of reward tokens are sent to the contract. The `rewardPool` contract has authority over the following functions: - `restartRewards()`: Reinitiate the values of `lastUpdateTime` and `savedRewards`. According to the project logic, the `rewardPool` should be initialized as `SandRewardPool` contract, which is a contract. In this case, if correctly initialized, it will not cause any actual issue to the project. In the contract `TwoPeriodsRewardCalculator`, the role `DEFAULT_ADMIN_ROLE` has authority over the following functions: - `grantRole()`/`revokeRole()`: Grant/Revoke a role to/from an account. The role `REWARD_DISTRIBUTION` has authority over the following functions: - `setSavedRewards()`: Set the value of `savedRewards` that are used to calculate rewards; - `runCampaign()`: Start a staking campaign; - `setInitialCampaign()`: Start a staking campaign; - `updateNextCampaign()`: Update parameters of the second period of the current campaign; - `updateCurrentCampaign()`: Update parameters of the current period of the current campaign; Additionally, the `rewardPool` contract has authority over the following functions: - `restartRewards()`: Restart reward (setting `savedRewards = 0`) According to the project logic, the `rewardPool` should be initialized as `SandRewardPool` contract, which is a contract. In this case, if correctly initialized, it will not cause any actual issue to the project. In the contract `SandRewardPool`, the role `DEFAULT_ADMIN_ROLE` has authority over the following functions: - `grantRole()`/`revokeRole()`: Grant/Revoke a role to/from an account. - `setAntiCompoundLockPeriod()`: Modify the delay between 2 reward withdrawals; - `setTrustedForwarder()`: Modify the Trusted Forwarder for the Meta Transactions; - `recoverFunds()`: Send all rewards tokens of contract to an arbitrary destination. - `setContributionCalculator()`: - `setRewardToken()`: Modify the reward token; - `setStakeToken()`: Modify the staked token; - `setRewardCalculator()`: Modify the contract in charge of calculating rewards. Any compromise to the aforementioned privileged accounts may allow a hacker to take advantage of this authority and manipulate the reward system.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (8)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.
Tell us