Green Climate World Token - Smart Contract Audit Report
Green Climate World Token ($WGC) is a new BEP20 token on the Binance Smart Chain.
Notes of the contract:
Audit Findings Summary
- The total supply of the token is set to 1 billion [1,000,000,000] $WGC.
- No minting or burn functions are present beyond deployment; though the circulating supply can be reduced by sending tokens to the 0x..dead address, if desired.
- At the time of writing this report, 68.96% of the total $WGC token supply is stored in the Green Climate World: Deployer address.
- The next 3 holders own a cumulative 30% of the total supply.
- .093% of the total supply is in Pancakeswap liquidity.
- Of that liquidity, 97.14% of the LP tokens are in possession of this holder.
- The owner has the ability to register any address as a consumer and add consumer variables which are then stored as records on the blockchain.
- Adding/removing consumer addresses, setting consumer variables, and distributing rewards, is a manual process and would be unreasonable gas-wise to do so for all ~3000 holders.
- Given the rewards mechanism is manual and there is no automated collection of rewards, users will not be able to receive any rewards from the contract. If the owner were to send rewards by use of this function, it will reach the block gas limit and the transaction will be reverted.
- Some functions could have been declared external instead of public to save some gas, but as this is already deployed this is merely informational.
- The contract utilizes SafeMath libraries along with following the BEP20 standard.
- No external threats were identified.
- Some major flaws were identified regarding the team's rewards system logic, making it inoperative.
- Date: September 12th, 2021
|Arbitrary Storage Write||N/A||PASS|
|Delegate Call to Untrusted Contract||N/A||PASS|
|Dependence on Predictable Variables||N/A||PASS|
|Logical Issues||The rewards mechanism is not functional in its current state.||CAUTION|
|State Change External Calls||N/A||PASS|
|User Supplied Assertion||N/A||PASS|
|Critical Solidity Compiler||N/A||PASS|
|Overall Contract Safety||CAUTION|
($) = payable function # = non-constant function Int = Internal Ext = External Pub = Public + Context - [Int]
# - [Int] _msgSender - [Int] _msgData + Ownable (Context) - [Int] # - [Pub] owner - [Pub] isOwner - [Pub] renounceOwnership # - modifiers: onlyOwner - [Pub] transferOwnership # - modifiers: onlyOwner - [Int] _transferOwnership # + [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 + ERC20 (Context, IERC20) - [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] _burnFrom # + ERC20Detailed (IERC20) - [Pub] # - [Pub] name - [Pub] symbol - [Pub] decimals + GreenClimateToken (Context, ERC20, ERC20Detailed, Ownable) - [Pub] # - modifiers: ERC20Detailed - [Pub] registerConsumer # - modifiers: onlyOwner - [Pub] setConsumerReadings # - modifiers: onlyOwner - [Pub] returnConsumerReadings1 - [Pub] returnConsumerReadings2 - [Pub] sendRewards # - modifiers: onlyOwner - [Pub] sendTimelyRewards # - modifiers: onlyOwner - [Pub] consumerWallet - [Pub] consumerNumbers - modifiers: onlyOwner - [Pub] consumerRewards