Decentraland security record

As of 3 Nov 2026, Decentraland has 3 audit reports by 2 security firms on Trustblock; the latest is by CertiK, dated 28 Oct 2021. Those reports list no open critical findings. It also holds 1 deployed contract on 1 chain.

Critical findings
No open critical findings
Across 3 reports.
Open the latest report
Your label, live
Get the label for your site

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

Audits3

Newest first

AuditSecurity firmDateScopeCritical findingsReport
DecentralandSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com
Decentraland TokenSecurity firm: CertiKDate: Scope: 1 address on EthereumNo open critical findingsOpen · skynet.certik.com
Decentraland MANA Token AuditSecurity firm: OpenZeppelinDate: Scope: Files named in the reportNo open critical findingsOpen · blog.openzeppelin.com

Findings16

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

SeverityOpenAcknowledgedFixed
Critical000
High120
Medium010
Low921
HighCentralization RiskDecentraland Token · CertiK · 11 Sep 2021Open

In the contract `MANAToken`, the role `owner` has the authority over the following function: - `mint()` - `finishMinting()` - `transferOwnership(address newOwner)` - `pause()` - `unpause()` Any compromise to the `owner` account may allow the hacker to take advantage of this and: - transferring ownership to the malicious account address. - mint an uncapped amount of tokens to any user including the owner itself. - maliciously pausing and unpausing the contract

Open the report
LowFunction Visibility OptimizationDecentraland Token · CertiK · 11 Sep 2021Open

The following functions are not invoked in any of the contracts contained within the project's scope: - `transferOwnership()` - `pause()` - `unpause()` - `approve()` - `mint()` - `finishMinting()` - `allowance()` - `balanceOf()` The functions that are never called internally within the contract should have external visibility.

Open the report
LowIncorrect Validation ImplementationDecentraland Token · CertiK · 11 Sep 2021Open

The `require` function should be used to ensure valid conditions that cannot be detected until execution time. This includes conditions on inputs or return values from calls to external contracts.

Open the report
LowLack of Zero Address ValidationDecentraland Token · CertiK · 11 Sep 2021Open

The zero address is not verified when calling the following function. - `transfer()` - `transferFrom()` - `approve()` - `mint()`

Open the report
LowMissing Emit EventsDecentraland Token · CertiK · 11 Sep 2021Open

Functions that affect the status of sensitive variables should be able to emit events as notifications to customers. - `transferOwnership()`

Open the report
LowRedundant Variable InitializationDecentraland Token · CertiK · 11 Sep 2021Open

All variable types within Solidity are initialized to their default "empty" value, which is usually zeroed out representation. Particularly: - `uint` / `int`: All `uint` and `int` variable types are initialized at `0` - `address`: All `address` types are initialized to `address(0)` - `byte`: All `byte` types are initialized to their `byte(0)` representation - `bool`: All `bool` types are initialized to `false` - `ContractType`: All contract types (i.e. for a given `contract ERC20 {}` its contract type is `ERC20`) are initialized to their zeroed out address (i.e. for a given `contract ERC20 {}` its default value is `ERC20(address(0))`) - `struct`: All `struct` types are initialized with all their members zeroed out according to this table

Open the report
LowUnlocked Compiler VersionDecentraland Token · CertiK · 11 Sep 2021Open

The contract has an unlocked compiler version. An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers. This can lead to ambiguity when debugging as compiler-specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.

Open the report
LowUnused Return ValuesDecentraland Token · CertiK · 11 Sep 2021Open

The return values `balance` and `remaining` are not used.

Open the report
LowUse Require Instead of AssertDecentraland Token · CertiK · 11 Sep 2021Open

`assert` should only be used when the condition should never happen.

Open the report
LowVisibility Specifiers MissingDecentraland Token · CertiK · 11 Sep 2021Open

The linked variable declarations do not have a visibility specifier explicitly set.

Open the report

Contracts1

AddressChainSource code
0x0f5d2fb29fb7d3cfee444a200298f468908cc942Chain: EthereumSource code: Verified source

All 1 address and the 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="decentraland"
></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