Unikura security record

As of 14 Oct 2026, Unikura has 1 audit report on Trustblock, by Quantstamp, dated 27 Aug 2023. That report lists no open critical findings.

Critical findings
No open critical findings
In 1 report.
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 Oct 2026. Statuses are the security firms’ own. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
UnikuraSecurity firm: QuantstampDate: Scope: Files named in the reportNo open critical findingsOpen · certificate.quantstamp.com

Findings19

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

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium023
Low059
MediumCentralized Design of `salesAddress`Unikura · Quantstamp · 27 Aug 2023Acknowledged

Upon the initialization of the `UnikuraPhygitalCollection` contract, all tokens are minted to the `salesAddress`. Such design is not documented and it is unclear why the `salesAddress` receives max token supply. In case of compromise of this address, a malicious user can have access to a vast majority of the token supply.

Open the report
MediumPrivileged Roles and OwnershipUnikura · Quantstamp · 27 Aug 2023Acknowledged

Multiple contracts under audit feature privileged roles with special permission. It is also important for project users to be aware of the privileged roles and their permissions so that they are aware of all potential risks. All of the below contracts feature some privileged roles: 1. `UnikuraMembership` 1. `owner` 1. Mint a gold or silver membership NFT to any address: `mint()`. 2. Set the URI for the token metadata: `setURI()`. 3. Set the sales address for the token: `setSalesAddress()`. 4. Set the address which can burn tokens `setBurnAddress()`. 2. `burnAddress`: Can burn any tokens from any address: `burn()`. 3. `salesAddress`: May hold more than one membership token at a time. 2. `UnikuraMothership`: `owner`: 1. Set the fee percentage: `setFeePercentage()`. 2. Set the fee recipient address: `setVelvettFeeRecipient()`. 3. Set the address of the membership contract: `setUnikuraMembershipContract()`. 3. `UnikuraPhygitalCollection`: `owner`: 1. Set the URI for the token metadata: `setBaseURI()`. 2. Set the address of the mothership contract: `setUnikuraMothershipContract()`. 3. Set the sales address: `setSalesAddress()`. 4. Set the mint price per token `setMintPrice()`.

Open the report
LowGas Usage ConcernsUnikura · Quantstamp · 27 Aug 2023Acknowledged

Gas usage is a significant concern for smart contract developers and users, since high gas costs may deter users using the smart contract. Even worse, some gas usage issues may prevent the contract from providing services entirely. For example, if a loop requires too much gas to finish processing, then it may entirely prevent the contract from functioning correctly. We’ve identified the following instance in which unbounded looping may be a cause for concern: * `mint()`

Open the report
LowMissing Key Concepts in DocumentationUnikura · Quantstamp · 27 Aug 2023Acknowledged

The following key concepts are not mentioned in the documentation: - Membership, particularly the difference between gold and silver membership. - Sales account - Fee percentage - System owner address and related key managements

Open the report
LowNo Function to Distinguish Between MembershipsUnikura · Quantstamp · 27 Aug 2023Acknowledged

There is currently no explicit function or modifier implemented to distinguish an address's membership token, beside `balanceOf()`. It is currently unclear whether such functionality may be useful in further development.

Open the report
LowSeveral Addresses May Have Multiple TokensUnikura · Quantstamp · 27 Aug 2023Acknowledged

By design, the sales address defined by `UnikuraMembership` is supposed to be the only address besides the owner that can hold multiple tokens (as documented in `UnikuraMothership.sol`, *The contract owner or sales address is allowed to own multiple*). However, the `setSalesAddress()` function can change the sales address. If the previous sales address already had multiple tokens, this would allow multiple addresses to hold several tokens.

Open the report
LowUpgradabilityUnikura · Quantstamp · 27 Aug 2023Acknowledged

While upgradability is not a vulnerability in itself, token holders should be aware that the token contract can be upgraded at any given time. This audit does not guarantee the behavior of future contracts that the token may be upgraded to.

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="unikura"
></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