Unikura

QuantstampFiles named in the report

Quantstamp reviewed Unikura on 27 Aug 2023: 19 findings, 0 critical; 12 marked fixed, 7 acknowledged.

No open critical findings
Open the reportOpen Unikura’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings19

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

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium023
Low059
MediumCentralized Design of `salesAddress`Acknowledged

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.

MediumPrivileged Roles and OwnershipAcknowledged

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()`.

LowGas Usage ConcernsAcknowledged

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()`

LowMissing Key Concepts in DocumentationAcknowledged

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

LowNo Function to Distinguish Between MembershipsAcknowledged

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.

LowSeveral Addresses May Have Multiple TokensAcknowledged

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.

LowUpgradabilityAcknowledged

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.

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 (2)

  • smartcontracts/*
  • smartcontracts/*

Part of Unikura’s security record

Unikura
Audits1 audit by 1 firmLast audit Aug 2023, by Quantstamp.
Critical findingsNo open critical findingsIn 1 report.
Open Unikura’s security record

Security firm

Quantstamp

236 projects reviewed · 333 reports · latest Oct 2026

See Quantstamp’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