Portify Token - Smart Contract Audit Report
Summary
Portify Token is a new BEP20 token on the Binance Smart Chain.
Notes on the Contract:Audit Findings Summary
- The total supply of the token is set to 100 million [100,000,000] $PFY.
- The contract features a mint locking function, that was called upon deployment to the mainnet, which prevents the owner from minting tokens until a 90 day time limit has been reached (December 20th, 2021). When minting is not locked, the owner can call this mint locking function at any time, which would subsequently lock minting for another 90 days.
- When minting is not locked, the owner has the ability to mint tokens up to a hard cap of 180,000,000 $PFY.
- No burn functions are present; though the circulating supply can be reduced by sending tokens to the 0x..dead address, if desired.
- At the time of writing this report, 100% of the total $PFY token supply is in possession of the owner as the project was recently deployed.
- No other ownership-restriction functions are present.
- Ownership has not been renounced.
- The contract complies with the BEP20 standard.
- As the project is deployed with Solidity v0.8.0, it is protected from overflows.
- No external threats were identified.
- Please ensure trust in the team as they have some control over the total token supply via minting.
- Date: August 23rd, 2021
- Updated September 22nd, 2021 to reflect mainnet deployment and added mint locking functionality.
Audit 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
+ Context
- [Int] _msgSender
- [Int] _msgData
+ [Int] IERC20
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Int] IERC20Metadata (IERC20)
- [Ext] name
- [Ext] symbol
- [Ext] decimals
+ ERC20 (Context, IERC20, IERC20Metadata)
- [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] _beforeTokenTransfer #
- [Int] _afterTokenTransfer #
+ Ownable (Context)
- [Pub] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Prv] _setOwner #
+ Portify (Ownable, ERC20)
- [Pub] #
- modifiers: ERC20
- [Pub] lockMint #
- modifiers: onlyOwner
- [Ext] mint #
- modifiers: onlyOwner
- [Pub] decimals