The Sandbox security record

Ethereum, Polygon (POS)sandbox.gameXGitHub

As of 3 Nov 2026, The Sandbox has 8 audit reports by 2 security firms on Trustblock; the latest is by OpenZeppelin, dated 9 Aug 2023. Those reports list no open critical findings.

Critical findings
No open critical findings
Across the 8 reports, 1 critical finding was reported. It is marked fixed by the firm that reported it. See the findings
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits and findings, contracts and incidents up to Nov 2026. Trustblock does not review code.

Audits8

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Land and Tunnel AuditSecurity firm: OpenZeppelinDate: Scope: Files named in the reportNo open critical findingsOpen · blog.openzeppelin.com
Sandbox L2Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Sandbox L1Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Sandbox Sand Reward PoolSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Sandbox PRSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Sandbox V1Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
SandBox V4Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Sandbox V3Security firm: CertiKDate: Scope: Files named in the report1 critical finding, fixedOpen · skynet.certik.com

Findings100

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

SeverityOpenAcknowledgedFixed
Critical001
High124
Medium104
Low36150
HighCentralization Related RisksSandbox L1 · CertiK · 5 Jul 2022Acknowledged

In the contract `LandBaseToken`, the role `_admin` has authority over the following functions: - `setMinter()`: Decide if an address is a minter or not; In addition, the `minter` role has authority over the following function: - `mintQuad()`: mints quads to an address. Also, the roles `superOperator` and `_metaTransactionContracts` have authority over the following functions: - `transferQuad()`: Transfer any user's quads to an address; - `batchTransferQuad()`: Transfer any user's quads to an address. The contract `LandBaseToken` inherits the contract `ERC721BaseToken`, where `_admin` has authority over the following functions: - `setMetaTransactionProcessor()`: Give or remove the `_metaTransactionContracts` role to or from an address; - `setSuperOperator()`: Give or remove the `superOperator` role to or from an address; - `changeAdmin()`: Change the address of the role `_admin`. In addition, the `superOperator` role has authority over the following functions: - `approveFor()`: Decide the allowance of any token; - `approve()`: Decide the allowance of any token; - `transferFrom()`: Transfer any user's tokens to an address; - `safeTransferFrom()`: Transfer any user's tokens to an address; - `batchTransferFrom()`: Transfer several of a user's tokens to an address; - `safeBatchTransferFrom()`: Transfer several of a user's tokens to an address; - `setApprovalForAllFor()`: Set the approval for an address to manage all of a user's tokens; - `burnFrom()`: Burn any user's tokens. Furthermore, the `_metaTransactionContracts` role has authority over the following functions: - `approveFor()`: Decide the allowance of any token; - `transferFrom()`: Transfer any user's tokens to an address; - `safeTransferFrom()`: Transfer any user's tokens to an address; - `batchTransferFrom()`: Transfer several of a user's tokens to an address; - `safeBatchTransferFrom()`: Transfer several of a user's tokens to an address; - `setApprovalForAllFor()`: Set the approval for an address to manage all of a user's tokens; - `burnFrom()`: Burn any user's tokens. Any compromise to the aforementioned privileged accounts may allow a hacker to take advantage of this authority and manipulate the reward system.

Open the report
HighCentralization Related RisksSandbox Sand Reward Pool · CertiK · 4 Feb 2022Acknowledged

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.

Open the report
LowLack of storage gap in upgradeable contractsLand and Tunnel Audit · OpenZeppelin · 9 Aug 2023Acknowledged

The report gives no description here.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="the-sandbox"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

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