OSIS

CertiKFiles named in the report

CertiK reviewed OSIS on 5 Dec 2022: 18 findings, 1 critical; 10 marked fixed, 2 acknowledged, 6 open.

1 critical finding, fixed
Open the reportOpen OSIS’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings18

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

SeverityOpenAcknowledgedFixed
Critical001
High100
Medium022
Low507
Critical`BURNER_ROLE` Can Burn Any AssetFixed

This functionality is very dangerous not only can it destroy the protocol. It can easily one side the pool if this is on any DEX. For Example: Token A is worth 1000 of token B The pool has 1,000 (token A) and 100,0000 (token B) respectively. The token price can be instantly changed if this function is called to burn either side.

Medium`mint()` and `mintAirdrop()` Can Mint More than `Fixed

When a user sees `maxSupply()` they might think they supply cannot grow larger. However, the token can be minted past the `MAXIMUMSUPPLY` because there is no check on the mint. This is misleading and the design of the system should be rethought to ensure this is intended or not. This is also misleading because in the constructor the `MAXIMUMSUPPLY` is minted, but a team wallet can mint more than this. Moreover, even if this is fixed this can be used in conjunction with the burn function to burn another users tokens to mint more and sell.

MediumWithdraw Function Does Not WorkFixed

The `withdraw()` function does not have a fallback function to accept funds, so it cannot accept any native token balances. We understand this is to retrieve lost funds, but it is not possible to deposit native assets. For example: Bob tries to send ether to this address. It will fail because it does not have any functionality to receive it.

LowContract Name Different from FileFixed

We do not expect contract names and file names to be the same or do we want this to happen. We are pointing this out for consistency because the file name is `MGBTokenV1.sol`, and the contract is `MGBTokenV2`.

LowMissing Error MessagesFixed

The `require()` statements should provide a description of the condition not met.

LowMissing OpenZeppelin ImportFixed

This needs the `Ownable` import from OpenZeppelin to compile properly.

LowOnly Owner Functions are not all togetherFixed

If this comment is dictating that all `onlyOwner` functions are below, then the `mint()` function should be included in this section for clarity.

LowPotential Redundant Mathematical OperationFixed

The linked statement redundantly divides by 100. This could be avoided by setting rewards to single digits.

LowRedundant VariableFixed

The following variables are doing the same thing and one can be used instead. ```Solidity uint256 public maxSupply = 10000; uint256 public maxMintAmount = 10000; ```

LowRedundant Variable InitializationFixed

The variable `paused` is already set to false by default in Solidity.

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

  • MetaBadges.sol
  • MBGTokenV1.sol
  • OSISTokenV3.sol
  • MBGStakingV2.sol

Part of OSIS’s security record

OSIS
Audits1 audit by 1 firmLast audit Dec 2022, by CertiK.
Critical findingsNo open critical findingsIn that report, 1 critical finding was reported. It is marked fixed by the firm that reported it.
Open OSIS’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