Hesman Legend is launched to celebrate the 30th anniversary of the first publication of Vietnamese legendary superhero comic series - 'Dung si Hesman' (Hero Hesman). The project aims to evoke the memories of the comic lovers in the late 20th century as well as the pride in the spirit of Vietnam.
With the mission of becoming a pioneer of projects involving NFTs in Vietnam, introducing domestic arts to the international community, Hesman Legend aims to be the first NFT project adapted from a comic series that has been rooted into the hearts of readers at the end of the twentieth century.
To engage the community, the project will release NFTs with special benefits and a Play-to-Earn game of the same name. At the same time, the project promises to open a metaverse with the image of Hesman appearing in other products such as movies, games, animation and most likely with completely new character versions in the second part of the legendary series.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
grantRole(bytes32,address) should be declared external:
- AccessControl.grantRole(bytes32,address) (#614-616)
revokeRole(bytes32,address) should be declared external:
- AccessControl.revokeRole(bytes32,address) (#627-629)
renounceRole(bytes32,address) should be declared external:
- AccessControl.renounceRole(bytes32,address) (#645-649)
name() should be declared external:
- ERC20.name() (#886-888)
symbol() should be declared external:
- ERC20.symbol() (#894-896)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#937-941)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#960-964)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#982-991)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#1005-1009)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#1025-1034)
balanceOfAt(address,uint256) should be declared external:
- ERC20Snapshot.balanceOfAt(address,uint256) (#1315-1319)
totalSupplyAt(uint256) should be declared external:
- ERC20Snapshot.totalSupplyAt(uint256) (#1324-1328)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#1426-1428)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#1441-1444)
snapshot() should be declared external:
- HesmanShard.snapshot() (#1490-1492)
pause() should be declared external:
- HesmanShard.pause() (#1494-1496)
unpause() should be declared external:
- HesmanShard.unpause() (#1498-1500)
mint(address,uint256) should be declared external:
- HesmanShard.mint(address,uint256) (#1502-1504)
Use the external attribute for functions never called from the contract.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.8.0', '^0.8.4']
- ^0.8.0 (#7)
- ^0.8.0 (#35)
- ^0.8.0 (#66)
- ^0.8.0 (#136)
- ^0.8.0 (#227)
- ^0.8.0 (#273)
- ^0.8.0 (#319)
- ^0.8.0 (#369)
- ^0.8.0 (#396)
- ^0.8.0 (#489)
- ^0.8.0 (#714)
- ^0.8.0 (#799)
- ^0.8.0 (#829)
- ^0.8.0 (#1214)
- ^0.8.0 (#1411)
- ^0.8.4 (#1450)
Use one Solidity version.
Additional information: link
AccessControl._setRoleAdmin(bytes32,bytes32) (#678-682) is never used and should be removed
AccessControl._setupRole(bytes32,address) (#669-671) is never used and should be removed
Context._msgData() (#386-388) is never used and should be removed
Counters.decrement(Counters.Counter) (#255-261) is never used and should be removed
Counters.reset(Counters.Counter) (#263-265) is never used and should be removed
Math.ceilDiv(uint256,uint256) (#308-311) is never used and should be removed
Math.max(uint256,uint256) (#282-284) is never used and should be removed
Math.min(uint256,uint256) (#289-291) is never used and should be removed
Strings.toHexString(uint256) (#102-113) is never used and should be removed
Strings.toString(uint256) (#77-97) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (#7) allows old versions
Pragma version^0.8.0 (#35) allows old versions
Pragma version^0.8.0 (#66) allows old versions
Pragma version^0.8.0 (#136) allows old versions
Pragma version^0.8.0 (#227) allows old versions
Pragma version^0.8.0 (#273) allows old versions
Pragma version^0.8.0 (#319) allows old versions
Pragma version^0.8.0 (#369) allows old versions
Pragma version^0.8.0 (#396) allows old versions
Pragma version^0.8.0 (#489) allows old versions
Pragma version^0.8.0 (#714) allows old versions
Pragma version^0.8.0 (#799) allows old versions
Pragma version^0.8.0 (#829) allows old versions
Pragma version^0.8.0 (#1214) allows old versions
Pragma version^0.8.0 (#1411) 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 HesmanShard.addBlacklist(address[])._blacklistAddresses (#1475) is not in mixedCase
Parameter HesmanShard.removeBlacklist(address[])._blacklistAddresses (#1482) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
HesmanShard.constructor() (#1467-1473) uses literals with too many digits:
- _mint(msg.sender,168000000 * 10 ** decimals()) (#1471)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Token has relatively low CoinGecko rank
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Unable to find Blog account (Reddit or Medium)
Unable to find Discord account