|Arbitrary Storage Write||N/A||PASS|
|Delegate Call to Untrusted Contract||N/A||PASS|
|Dependence on Predictable Variables||N/A||PASS|
|State Change External Calls||N/A||Pass|
|User Supplied Assertion||N/A||PASS|
|Critical Solidity Compiler||N/A||PASS|
|Overall Contract Safety||PASS|
Farium Token - Smart Contract Audit Report
Farium intends to build a community around a new token project.
For this audit, we analyzed Farium's token smart contract, deployed at 0xcda2f16c6aa895d533506b426aff827b709c87f5 on the Ethereum Mainnet.
Notes on the Contract:
Audit Findings Summary
- The total supply of the token is 5 million tokens.
- No mint functions are accessible. After deployment, the total supply can only decrease.
- The team holds 9.75% of the token's supply unlocked. We advise the team lock a sizable portion of these tokens.
- 20% of the total supply is locked and will be released to the team. 10% will release in 4 months, and another 10% will release in 10 months.
- 7.4% of the token's supply is held in the Uniswap pool. Liquidity is locked and will be claimable by the team in two roughly equal increments in 10 months and 1 year.
- Only the tokenRecover function is protected and can only be called by the contract owner. This function allows the owner to retrieve tokens mistakenly sent to the token contract.
- The owner can transfer ownership to any address.
- The contract includes the ServicePayer and ServiceReceiver libraries - These were used in deployment and have no impact on user functionality, however.
- Utilization of SafeMath to prevent overflows.
- No security issues from external attackers were identified.
- Ensure trust in the team as they control a large number of tokens relative to the liquidity pool, and will be vested more tokens over time.
- Date: April 10th, 2021
($) = payable function # = non-constant function Int = Internal Ext = External Pub = Public + Context - [Int] _msgSender - [Int] _msgData + [Int] IERC20 - [Ext] totalSupply - [Ext] balanceOf - [Ext] transfer # - [Ext] allowance - [Ext] approve # - [Ext] transferFrom # + [Lib] SafeMath - [Int] add - [Int] sub - [Int] sub - [Int] mul - [Int] div - [Int] div - [Int] mod - [Int] mod + [Lib] Address - [Int] isContract - [Int] sendValue # - [Int] functionCall # - [Int] functionCall # - [Int] functionCallWithValue # - [Int] functionCallWithValue # - [Prv] _functionCallWithValue # + ERC20 (Context, IERC20) - [Pub]
# - [Pub] name - [Pub] symbol - [Pub] decimals - [Pub] totalSupply - [Pub] balanceOf - [Pub] transfer # - [Pub] allowance - [Pub] approve # - [Pub] transferFrom # - [Pub] increaseAllowance # - [Pub] decreaseAllowance # - [Int] _transfer # - [Int] _mint # - [Int] _burn # - [Int] _approve # - [Int] _setupDecimals # - [Int] _beforeTokenTransfer # + Ownable (Context) - [Pub] # - [Pub] owner - [Pub] renounceOwnership # - modifiers: onlyOwner - [Pub] transferOwnership # - modifiers: onlyOwner + TokenRecover (Ownable) - [Pub] recoverERC20 # - modifiers: onlyOwner + ServiceReceiver (TokenRecover) - [Pub] pay ($) - [Pub] getPrice - [Pub] setPrice # - modifiers: onlyOwner - [Pub] withdraw # - modifiers: onlyOwner - [Prv] _toBytes32 + ServicePayer - [Pub] ($) + StandardERC20 (ERC20, ServicePayer) - [Pub] ($) - modifiers: ERC20,ServicePayer