Sandbox Sand Reward Pool

CertiKFiles named in the report

CertiK reviewed The Sandbox (Sandbox Sand Reward Pool) on 4 Feb 2022: 6 findings, 0 critical; 5 marked fixed, 1 acknowledged.

No open critical findings
Open the reportOpen The Sandbox’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings6

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High010
Medium001
Low004
HighCentralization Related RisksAcknowledged

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.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (8)

  • contracts/src/solc_0.8/defi/SandRewardPool.sol
  • contracts/src/solc_0.8/defi/contributionCalculation/LandContributionCalculator.sol
  • contracts/src/solc_0.8/defi/interfaces/IContributionCalculator.sol
  • contracts/src/solc_0.8/defi/rewardCalculation/PeriodicRewardCalculator.sol
  • contracts/src/solc_0.8/defi/rewardCalculation/TwoPeriodsRewardCalculator.sol
  • contracts/src/solc_0.8/defi/StakeTokenWrapper.sol
  • contracts/src/solc_0.8/defi/interfaces/IRewardCalculator.sol
  • contracts/src/solc_0.8/defi/contributionCalculation/LandOwnerContributionCalculator.sol

Part of The Sandbox’s security record

The Sandbox
Audits8 audits by 2 firmsLast audit Aug 2023, by OpenZeppelin.
Critical findingsNo open critical findingsAcross the 8 reports, 1 critical finding was reported. It is marked fixed by the firm that reported it.
Open The Sandbox’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something 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