Privi Trax Token - Smart Contract Audit Report
Summary
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:Audit Findings Summary:
- 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.
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 Category | Notes | Result |
---|---|---|
Arbitrary Storage Write | N/A | PASS |
Arbitrary Jump | N/A | PASS |
Delegate Call to Untrusted Contract | N/A | PASS |
Dependence on Predictable Variables | N/A | PASS |
Deprecated Opcodes | N/A | PASS |
Ether Thief | N/A | PASS |
Exceptions | N/A | PASS |
External Calls | N/A | PASS |
Integer Over/Underflow | N/A | PASS |
Multiple Sends | N/A | PASS |
Suicide | N/A | PASS |
State Change External Calls | N/A | Pass |
Unchecked Retval | N/A | PASS |
User Supplied Assertion | N/A | PASS |
Critical Solidity Compiler | N/A | PASS |
Overall Contract Safety | PASS |
($) = 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