Crypto Global United, CGU began as a platform for lending NFTs to blockchain gamers, helping them increase their earnings and access better opportunities on play-to-earn titles. Whilst still providing this on their platform, CGU has evolved to offer its community the ability to take part in a decentralised economy, generate sustainable income via play, learn and metaverse work opportunities, while learning new digital skills and engaging with an energised global community.
CGU is the native currency of the CGU DAO, and takes the form of an ERC20 & BEP20 token with a total supply of 1 billion.
Token Utility • Staking CGU for token rewards related to specific activities • Staking CGU to vote and participate in the DAO • Using CGU to pay for services within the CGU network • In the future, CGU tokens will also give community members access to exclusive metaverse properties, NFT assets and involvement in a range of digital asset opportunities in new and evolving blockchain game-based initiatives.
What Makes Crypto Global United (CGU) Unique?
CGU already has a large, active, and dispersed community of play-to-earn gamers, with almost 3000 active accounts since its launch in October 2021. Additionally, the project focuses on developing players through education and training, rewarding them with CGU tokens for completing certain milestones. All CGU holders own a proportional share of the DAO’s assets, and will be able to vote to shape the future direction and priorities of the organisation.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract ownership is not renounced (belongs to a wallet)
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
CGUToken.isContract(address) (contracts/CGUToken.sol#96-101) uses assembly
- INLINE ASM (contracts/CGUToken.sol#99)
Do not use evm assembly.
Additional information: link
Ownable.transferOwnership(address).newOwner (contracts/access/Ownable.sol#63) lacks a zero-check on :
- _pendingOwner = newOwner (contracts/access/Ownable.sol#64)
Check that the address is not zero.
Additional information: link
CGUToken.getLockedAmount(address) (contracts/CGUToken.sol#54-56) uses timestamp for comparisons
Dangerous comparisons:
- locks[account].timestamp > block.timestamp (contracts/CGUToken.sol#55)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (contracts/utils/Context.sol#20-23) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (contracts/interfaces/IERC20Metadata.sol#3) allows old versions
Pragma version^0.8.0 (contracts/ERC20.sol#3) allows old versions
Pragma version^0.8.0 (contracts/interfaces/IERC677Receiver.sol#2) allows old versions
Pragma version^0.8.0 (contracts/CGUToken.sol#2) allows old versions
solc-0.8.0 is not recommended for deployment
Pragma version^0.8.0 (contracts/interfaces/IERC20.sol#3) allows old versions
Pragma version^0.8.0 (contracts/access/Ownable.sol#3) allows old versions
Pragma version^0.8.0 (contracts/interfaces/IERC677.sol#3) allows old versions
Pragma version^0.8.0 (contracts/utils/Context.sol#3) allows old versions
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Parameter CGUToken.contractFallback(address,uint256,bytes)._to (contracts/CGUToken.sol#90) is not in mixedCase
Parameter CGUToken.contractFallback(address,uint256,bytes)._value (contracts/CGUToken.sol#90) is not in mixedCase
Parameter CGUToken.contractFallback(address,uint256,bytes)._data (contracts/CGUToken.sol#90) is not in mixedCase
Parameter CGUToken.init(address)._initialHolder (contracts/CGUToken.sol#27) is not in mixedCase
Variable ERC20._totalSupply (contracts/ERC20.sol#38) is not in mixedCase
Variable ERC20._symbol (contracts/ERC20.sol#41) is not in mixedCase
Parameter CGUToken.transferAndCall(address,uint256,bytes)._to (contracts/CGUToken.sol#79) is not in mixedCase
Variable ERC20._allowances (contracts/ERC20.sol#36) is not in mixedCase
Variable ERC20._name (contracts/ERC20.sol#40) is not in mixedCase
Variable ERC20._balances (contracts/ERC20.sol#34) is not in mixedCase
Parameter CGUToken.transferAndCall(address,uint256,bytes)._value (contracts/CGUToken.sol#79) is not in mixedCase
Parameter CGUToken.transferAndCall(address,uint256,bytes)._data (contracts/CGUToken.sol#79) is not in mixedCase
Parameter CGUToken.isContract(address)._addr (contracts/CGUToken.sol#96) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (contracts/utils/Context.sol#21)" inContext (contracts/utils/Context.sol#15-24)
Remove redundant statements if they congest code but offer no value.
Additional information: link
CGUToken.init(address) (contracts/CGUToken.sol#27-31) uses literals with too many digits:
- _mint(_initialHolder,1000000000 * 10 ** 8) (contracts/CGUToken.sol#29)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
transferAndCall(address,uint256,bytes) should be declared external:
- CGUToken.transferAndCall(address,uint256,bytes) (contracts/CGUToken.sol#79-88)
transferFrom(address,address,uint256) should be declared external:
- CGUToken.transferFrom(address,address,uint256) (contracts/CGUToken.sol#64-77)
- ERC20.transferFrom(address,address,uint256) (contracts/ERC20.sol#148-162)
decimals() should be declared external:
- ERC20.decimals() (contracts/ERC20.sol#85-87)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (contracts/ERC20.sol#195-203)
symbol() should be declared external:
- ERC20.symbol() (contracts/ERC20.sol#68-70)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (contracts/ERC20.sol#99-101)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (contracts/ERC20.sol#176-179)
name() should be declared external:
- ERC20.name() (contracts/ERC20.sol#60-62)
totalSupply() should be declared external:
- ERC20.totalSupply() (contracts/ERC20.sol#92-94)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (contracts/ERC20.sol#130-133)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (contracts/ERC20.sol#119-121)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find token contract audit
Unable to find Telegram link on the website
Unable to find audit link on the website
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Token has a considerable age, but social accounts / website are missing or have few users
Token has relatively low CoinGecko rank
Telegram account link seems to be invalid
Twitter account link seems to be invalid
Unable to find Youtube account