Privi Trax Token - Smart Contract Audit Report

Summary

Privi Trax Token Audit Report Privi Trax.fi is building a decentralized app ecosystem on the Binance Smart Chain.

For this audit, we analyzed Privi Trax's token smart contract, deployed at 0xd09d8d172dbb6b9209b1a9f8f7a67a6f1f99244a.

Features of the token contract:
  • The total supply of the token is 100,000
  • No mint functions or burn funcitons are present. After deployment, the total supply can only decrease.
  • 72% of the supply is held by the team in a multisig wallet.
  • 18.9% is held in a 'TRAXlaunchpadVesting' contract.
  • 5% of the token's supply is hend in a different multisig wallet.
  • 1.7% of the token's supply is held in the Pancakeswap liquidity pool.
  • 98.9% of liquidity is held in a 'UniswapV2Locker' contract which will be released to the team on Februar 10th, 2022.
  • The next largest holder has 0.64%

  • On each transfer of the token, both an LGE whitelist and a 'Liquidity Protection Service' will be called.
  • The LGEWhitelist logic applies a check that only allows whitelisted users to sent a certain amount of tokens.
  • The team can modify the users on the list and the respective amounts at any time.
  • The Liquidity Protection logic will call an external contract which our team has not reviewed to check if an address has been blacklisted.
  • The team can update the address of the liquidity protection service and disable/enable its usage.
  • Liquidity protection will be disabled on August 30th.
  • There are no fees on transfers of the token.
  • The contract uses SafeMath to prevent overflow issues.
Audit Findings Summary:
  • No security issues were identified.
  • Ensure trust in the team as they have some control in the ecosystem and control a large portion of the supply.
  • Date: August 19th, 2021

  • External Threat Results

    Vulnerability CategoryNotesResult
    Arbitrary Storage WriteN/APASS
    Arbitrary JumpN/APASS
    Delegate Call to Untrusted ContractN/APASS
    Dependence on Predictable VariablesN/APASS
    Deprecated OpcodesN/APASS
    Ether ThiefN/APASS
    ExceptionsN/APASS
    External CallsN/APASS
    Integer Over/UnderflowN/APASS
    Multiple SendsN/APASS
    SuicideN/APASS
    State Change External CallsN/APass
    Unchecked RetvalN/APASS
    User Supplied AssertionN/APASS
    Critical Solidity CompilerN/APASS
    Overall Contract Safety PASS

    ERC20 Token Graph

    Multi-file Token

    
     ($) = payable function
     # = non-constant function
     
     Int = Internal
     Ext = External
     Pub = Public
     
     + [Int] IBEP20 
        - [Ext] totalSupply
        - [Ext] decimals
        - [Ext] symbol
        - [Ext] name
        - [Ext] getOwner
        - [Ext] balanceOf
        - [Ext] transfer #
        - [Ext] allowance
        - [Ext] approve #
        - [Ext] transferFrom #
    
     +  Context 
        - [Int] _msgSender
        - [Int] _msgData
    
     +  Ownable (Context)
        - [Pub]  #
        - [Pub] owner
        - [Pub] renounceOwnership #
           - modifiers: onlyOwner
        - [Pub] transferOwnership #
           - modifiers: onlyOwner
    
     + [Lib] SafeMath 
        - [Int] add
        - [Int] sub
        - [Int] sub
        - [Int] mul
        - [Int] div
        - [Int] div
        - [Int] mod
        - [Int] mod
    
     +  LGEWhitelisted (Context)
        - [Pub]  #
        - [Ext] renounceWhitelister #
           - modifiers: onlyWhitelister
        - [Ext] transferWhitelister #
           - modifiers: onlyWhitelister
        - [Int] _transferWhitelister #
        - [Ext] createLGEWhitelist #
           - modifiers: onlyWhitelister
        - [Ext] modifyLGEWhitelist #
           - modifiers: onlyWhitelister
        - [Pub] getLGEWhitelistRound
        - [Int] _applyLGEWhitelist #
    
     + [Lib] UniswapV2Library 
        - [Int] sortTokens
        - [Int] pairFor
    
     + [Lib] UniswapV3Library 
        - [Int] getPoolKey
        - [Int] computeAddress
    
     + [Int] IPLPS 
        - [Ext] LiquidityProtection_beforeTokenTransfer #
        - [Ext] isBlocked
        - [Ext] unblock #
    
     +  UsingLiquidityProtectionService 
        - [Pub]  #
        - [Ext] LiquidityProtection_setLiquidityProtectionService #
           - modifiers: onlyProtectionAdmin
        - [Int] token_transfer #
        - [Int] token_balanceOf
        - [Int] protectionAdminCheck
        - [Int] uniswapVariety
        - [Int] uniswapVersion
        - [Int] uniswapFactory
        - [Int] counterToken
        - [Int] uniswapV3Fee
        - [Int] protectionChecker
        - [Prv] lps
        - [Int] LiquidityProtection_beforeTokenTransfer #
        - [Ext] revokeBlocked #
           - modifiers: onlyProtectionAdmin
        - [Ext] LiquidityProtection_unblock #
           - modifiers: onlyProtectionAdmin
        - [Ext] disableProtection #
           - modifiers: onlyProtectionAdmin
        - [Pub] isProtected
        - [Int] ProtectionSwitch_manual
        - [Int] ProtectionSwitch_timestamp
        - [Int] ProtectionSwitch_block
        - [Int] blockPassed
        - [Int] passed
        - [Int] not
        - [Int] feeToUint24
        - [Pub] getLiquidityPool
    
     +  PriviTraxToken (Context, IBEP20, Ownable, LGEWhitelisted, UsingLiquidityProtectionService)
        - [Pub]  #
        - [Ext] getOwner
        - [Ext] decimals
        - [Ext] symbol
        - [Ext] name
        - [Ext] totalSupply
        - [Ext] balanceOf
        - [Ext] transfer #
        - [Ext] allowance
        - [Ext] approve #
        - [Ext] transferFrom #
        - [Ext] increaseAllowance #
        - [Ext] decreaseAllowance #
        - [Int] _transfer #
        - [Int] _approve #
        - [Int] token_transfer #
        - [Int] token_balanceOf
        - [Int] protectionAdminCheck
           - modifiers: onlyOwner
        - [Int] uniswapVariety
        - [Int] uniswapVersion
        - [Int] uniswapFactory
        - [Int] _beforeTokenTransfer #
        - [Int] protectionChecker
        - [Int] counterToken