Infinity Angel

CertiKFiles named in the report

CertiK reviewed Infinity Games (Infinity Angel) on 8 Feb 2023: 14 findings, 0 critical; 5 marked fixed, 9 acknowledged.

No open critical findings
Open the reportOpen Infinity Games’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings14

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

SeverityOpenAcknowledgedFixed
Critical000
High020
Medium001
Low074
HighCentralization Related RisksAcknowledged

To bridge the gap in trust between the administrators need to express a sincere attitude regarding the considerations of the administrator teamʼs anonymity. In the contract `BoxPurchase`, the role `owner` has authority over the following functions: - set `foundationAddress` through `setFoundationAddress()` - set `verifier` through `setVerifier()` - pause the contract through `pause()` - unpause the contract through `unpause()` In the contract `BoxPurchase`, the role `verifier` has authority over the following functions: - purchase box through `purchaseBox()` In the contract `GameNFT`, the role `owner` has authority over the following functions: - pause the contract through `pause()` - unpause the contract through `unpause()` - mint nft to anyone through `safeMint()` - set tokenʼs `tokenUri` through `setTokenURI()` - set `marketAddress` through `setMarketAddress()` - burn token through `burn()` In the contract `MarketLogic`, the role `verifier` has authority over the following functions: - purchase ERC721 through `purchaseERC721()` In the contract `MarketLogic`, the role `owner` has authority over the following functions: - set `verifier` through `setVerifier()` - transfer anyone's NFT to anyone `transferHelperERC721()` - set `foundationAddress` through `setFoundationAddress()` - pause the contract through `pause()` - unpause the contract through `unpause()` In the contract `TransparentUpgradeableProxy`, the role `admin` has authority over the following functions: - view admin through `admin()` - view `implementation_` through `implementation()` - change admin through `changeAdmin()` - upgrade contract through `upgradeTo()` - upgrade contract and call function through `upgradeToAndCall()` In the contract `TokenPurchase`, the role `owner` has authority over the following functions: - set token list through `setListedToken()` - withdraw contract's ETH/BNB through `withdraw()` - pause the contract through `pause()` - unpause the contract through `unpause()` Any compromise to the key role account may allow a hacker to take advantage of this authority.

HighCentralized Control of Contract UpgradeAcknowledged

The Openzeppelin-upgrades are libraries that can deploy upgradeable contracts, upgrade deployed contracts, and manage proxy admin rights. The `BoxPurchase`, `GameNFT`, `MarketLogic`, and `TokenPurchase` are implemented based on the upgradeable contract, which can be updated by artificial control. Any updates should be taken seriously, uncertain updates may lead to losses.

LowDiscussion For Function `purchaseBox()`Acknowledged

The function `purchaseBox` accepts BNB/ETH or ERC20 tokens to purchase NFT, in this function only the user's tokens are transferred to `foundationAddress`, but NFT is not transferred to the user, there is only one event `BoxPaid`. And the parameter `orderData` is used without any reasonableness and security checks.

LowDiscussion For Function `purchaseERC721()`Acknowledged

The parameter `orderData` of the function `purchaseERC721` is used without any reasonableness and security checks.

LowDiscussion For Function `transferHelperERC721()`Acknowledged

In the function `transferHelperERC721`, the owner can transfer anyone's NFT to anyone.

LowFunction Visibility OptimizationAcknowledged

`public` functions that are never called by the contract could be declared `external`. When the inputs are arrays, `external` functions are more efficient than `public` functions.

LowLack of Input ValidationAcknowledged

The given input is missing the check for the non-zero address.

LowMissing Emit EventsAcknowledged

Functions that affect the status of sensitive variables should be able to emit events as notifications to customers. - `setFoundationAddress()` - `setVerifier()` - `changeProxyAdmin()` - `upgrade()` - `upgradeAndCall()` - `setVerifier()` - `transferHelperERC721()` - `setFoundationAddress()` - `withdraw()` - `setListedToken()` - `setMarketAddress()` - `setTokenURI()`

LowPotential Front-Running RiskAcknowledged

Malicious hackers may observe the pending transaction which will execute the `initialize` function and launch a similar transaction with the hacker's address.

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

  • contracts/Exchange/MarketLogic.sol
  • contracts/Exchange/ExecuteOrder.sol
  • contracts/ProxyOperator/TransparentUpgradeableProxy.sol
  • contracts/ProxyAdmin/ProxyAdmin.sol
  • contracts/BoxPurchase/BoxPurchase.sol
  • contracts/ERC721/GameNFT.sol
  • contracts/TokenPurchase/TokenPurchase.sol
  • contracts/Exchange/ValidateOrder.sol

Part of Infinity Games’s security record

Infinity Games
Audits1 audit by 1 firmLast audit Feb 2023, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open Infinity Games’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