TT Traxx

CertiKFiles named in the report

CertiK reviewed Traxx (TT Traxx) on 26 Jul 2023: 40 findings, 1 critical; 23 marked fixed, 5 acknowledged, 12 open.

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

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings40

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

SeverityOpenAcknowledgedFixed
Critical001
High041
Medium016
Low12015
High`Minter` and `Market` Can Manage Any User's `TokeAcknowledged

In the `mintTraxx()` function, the following lines grant approval for the minter and the market to manage **all** ERC1155 tokens belonging to the first owner: ```solidity if (msg.sender != _to) _setApprovalForAll(_to, msg.sender, true); _setApprovalForAll(_to, market, true); ``` This potentially allows the minter and the market to manage and transfer all ERC1155 tokens of the first owner, leading to centralization concerns.

HighCentralization Risk In Unlock ProtocolAcknowledged

The `Lock` and `UnlockFactory` contracts are upgradeable. The owner can upgrade the contract without the community's commitment. If an attacker compromises the account, he can change the implementation of the contract and drain tokens from the contract. --- In the `TokenTraxx` contract, the following roles have authority over specific functions: - `MINTER_ROLE`: - `mint()`: Mints tokens to a specified account - `PAUSER_ROLE`: - `pause()`: Pauses all token transfers - `unpause()`: Unpauses all token transfers - `DEFAULT_ADMIN_ROLE`: - `grantRole()`: Grants a specified role to an account - `revokeRole()`: Revokes a specified role from an account - `renounceRole()`: Revokes a role from the calling account Any compromise to the `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, or `PAUSER_ROLE` may allow the attacker to take advantage of their authority, potentially leading to security risks. ***Especially for `MINTER_ROLE`, this role controls the mint operation of the TokenTraxx ERC20 token. the audit team strongly advises clients to mitigate this risk by applying decentralization and promoting transparency in future endeavors***. --- In the `UnlockFactory` contract, the following roles have authority over specific functions: - `PAUSER_ROLE`: - `pause()`: Pauses all functions in the contract. - `unpause()`: Unpauses all functions in the contract. - `UPGRADER_ROLE`: - `_authorizeUpgrade()`: Authorizes a contract upgrade. - `MAINTAINER_ROLE`: - `createLock()`: Creates a lock and deploys a proxy contract. - `updateLockImplementation()`: Updates the lock implementation address. - `DEFAULT_ADMIN_ROLE`: - Inherits all functions from `MAINTAINER_ROLE`. - Inherits all functions from `AccessControl` contract, such as `grantRole()`, `revokeRole()`, and `renounceRole()`. Any compromise to the `DEFAULT_ADMIN_ROLE`, `PAUSER_ROLE`, `UPGRADER_ROLE`, or `MAINTAINER_ROLE` may allow the attacker to take advantage of their authority, potentially leading to security risks. --- In the `Lock` contract, the following roles have authority over specific functions: - `PAUSER_ROLE`: - `_pause()`: Pauses the contract. - `_unpause()`: Unpauses the contract. - `UPGRADER_ROLE`: - `_authorizeUpgrade()`: Authorizes the contract upgrade. - `MAINTAINER_ROLE`: - `createKeys()`: Creates new keys without requiring payment. - `editMetadata()`: Edits the metadata of the contract. - `editTierDetails()`: Edits an existing tier's details. - `addNewTiers()`: Adds new tiers to the contract. - `DEFAULT_ADMIN_ROLE`: - `grantRole()`: Grants a specified role to an account. - `revokeRole()`: Revokes a specified role from an account. - `renounceRole()`: Revokes a role from the calling account. Any compromise to the `DEFAULT_ADMIN_ROLE`, `PAUSER_ROLE`, `UPGRADER_ROLE`, or `MAINTAINER_ROLE` may allow the attacker to take advantage of their authority, potentially leading to security risks.

HighCentralization Risks In Traxx ProtocolAcknowledged

**The `TraxxFactory`, `TokenTraxxMarketplace`, `TokenTraxxNFT1155`, `TokenTraxxNFT`, and `TraxxSupportUpgraeable` contracts are upgradeable. The owner can upgrade the contract without the community's commitment. If an attacker compromises the account, he can change the implementation of the contract and drain tokens from the contract**. --- In the `TokenTraxxMarketplace` contract, the following roles have authority over specific functions: - `MAINTAINER_ROLE`: - `createListing()`: create a listing to sell NFT. - `removingListing()`: Remove the existing listing of NFT. - `modifyListing()`: modify the existing listing of NFT. - `DEFAULT_ADMIN_ROLE`: - `grantRole()`: Grants a specified role to an account. - `revokeRole()`: Revokes a specified role from an account. - `renounceRole()`: Revokes a role from the calling account. - `removingListing()`: Removes the existing listing of NFT. - `setCollectionContract()`: Set sthe collection contract. - `setRoyaltyTreasury()`: Sets the address of the treasury account to collect royalties. - `withdrawTreasury()`: Withdraws the tokens in treasury. - `setAuthenticatorContract()`: Sets the authenticator contract address, which is used to verify if the user has a discount. - `WHITE_LISTER` - `whiteListAsset()`: Whitelist asset contract for NFT and currency. Any compromise to the `DEFAULT_ADMIN_ROLE`, `MAINTAINER_ROLE`, `WHITE_LISTER`, may allow the attacker to take advantage of their authority, potentially leading to security risks. ***The `DEFAULT_ADMIN_ROLE` has the ability to theoretically withdraw any currency in the treasury. For example, a malicious admin could potentially call `setRoyaltyTreasury()` and then `withdrawTreasury()` to withdraw any user royalties stored in the treasury. More seriously, the `MAINTAINER_ROLE` can create and modify listing for anyone who approves the `TokenTraxxMarketplace` contract using their tokens. The audit team strongly advises clients to mitigate this risk by applying decentralization and promoting transparency in future endeavors***. --- In the `TokenTraxxNFT1155` contract, the following roles have authority over specific functions: - `MINTER_ROLE`: - `mintTraxx()`: Mints tokens to a specified account. - `batchMintTraxx()`: Mints multiple tokens to a single address. - `PAUSER_ROLE`: - `pause()`: Pauses all token transfers. - `unpause()`: Unpauses all token transfers. - `DEFAULT_ADMIN_ROLE`: - `initialize()`: Initializes the contract. - `setupRoles()`: Sets up roles for the contract. - `setRoyaltyBps()`: Sets royalty fees for token sales. - `setSplitAddress()`: Sets artist and secondary split addresses - `MAINTAINER_ROLE`: - `setURI()`: Sets the URI for a specific token. - `setContractURI()`: Sets the contract URI. - `setBaseURI()`: Sets the base URI for all tokens. Any compromise to the `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, or `PAUSER_ROLE` may allow the attacker to take advantage of their authority, potentially leading to security risks. ***Especially for `MINTER_ROLE`, this role controls the mint operation of the TokenTraxxNFT1155 ERC1155 token. The audit team strongly advises clients to mitigate this risk by applying decentralization and promoting transparency in future endeavors***. --- In the `TokenTraxxNFT` contract, the following roles have authority over specific functions: - `MINTER_ROLE`: - `mintTraxx()`: Mints an NFT to a specified account with a specified URI. - `batchMintTraxx()`: Mints multiple NFTs to specified accounts with specified URIs in a batch. - `PAUSER_ROLE`: - `pause()`: Pauses all token transfers. - `unpause()`: Unpauses all token transfers. - `MAINTAINER_ROLE`: - `setContractURI()`: Sets the contract URI. - `setTokenURI()`: Sets the token URI for a specific token. - `DEFAULT_ADMIN_ROLE`: - `grantRole()`: Grants a specified role to an account. - `revokeRole()`: Revokes a specified role from an account. - `renounceRole()`: Revokes a role from the calling account. - `setupRoles()`: Gives various roles to accounts. - `setRoyaltyBps()`: Updates the royalties paid on pack sales. - `setMarket()`: Sets the market address. - `setSplitAddress()`: Sets the split address. Any compromise to the `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, `PAUSER_ROLE`, or `MAINTAINER_ROLE` may allow the attacker to take advantage of their authority, potentially leading to security risks. ***Especially for `MINTER_ROLE`, this role controls the mint operation of the TokenTraxxNFT ERC721 token. The audit team strongly advises clients to mitigate this risk by applying decentralization and promoting transparency in future endeavors***. --- In the `TokenTraxx` contract, the following roles have authority over specific functions: - `MINTER_ROLE`: - `mint()`: Mints tokens to a specified account. - `PAUSER_ROLE`: - `pause()`: Pauses all token transfers. - `unpause()`: Unpauses all token transfers. - `DEFAULT_ADMIN_ROLE`: - `grantRole()`: Grants a specified rol

HighInitial Token DistributionAcknowledged

When deploying the contract, certain amounts of `Traxx` tokens are sent to the `initialAccount` address. However, this poses a potential centralization risk as the deployer can distribute Traxx tokens without the consensus of the community.

MediumUnable to remove assets from the whitelistAcknowledged

The `whiteListAsset` function allows privileged accounts to whitelist asset contracts. However, the contract does not have a mechanism for blacklisting assets once they have been whitelisted. If an asset contract is whitelisted that is later found to be malicious or vulnerable to attack, it will remain on the whitelist and can continue to be used in the system, potentially compromising the security of the entire platform. This can result in loss of funds or other critical security incidents.

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

  • smart-contracts/contracts/TokenTraxxNFT.sol
  • smart-contracts/contracts/Lock.sol
  • smart-contracts/contracts/Errors.sol
  • smart-contracts/contracts/TraxxSupport.sol
  • smart-contracts/contracts/TraxxSupportUpgradeable.sol
  • smart-contracts/contracts/utils/Errors.sol
  • smart-contracts/contracts/TokenTraxx1155.sol
  • smart-contracts/contracts/Factory.sol
  • smart-contracts/contracts/UUPSProxy.sol
  • smart-contracts/contracts/UnlockFactory.sol
  • smart-contracts/contracts/TokenTraxx.sol
  • smart-contracts/contracts/TokenTraxxMarketplace.sol

Part of Traxx’s security record

Traxx
Audits1 audit by 1 firmLast audit Jul 2023, 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 Traxx’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