hi is leveraging blockchain technology to build services that are community powered. Members of hi are the key stakeholders of this ecosystem and the business is committed to maximize membership value - not profits. Our first product is a digital wallet that provides members with the most seamless payment experience via social messengers (initially Telegram and WhatsApp, next LINE, Facebook Messenger and others). For more information, visit hi.com.
Different versions of Solidity are used:
- Version used: ['^0.8.0', '^0.8.2']
- ^0.8.0 (#7)
- ^0.8.0 (#33)
- ^0.8.0 (#125)
- ^0.8.0 (#209)
- ^0.8.0 (#238)
- ^0.8.0 (#595)
- ^0.8.2 (#638)
- ABIEncoderV2 (#643)
Use one Solidity version.
Additional information: link
Context._msgData() (#24-26) 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 (#125) allows old versions
Pragma version^0.8.0 (#209) allows old versions
Pragma version^0.8.0 (#595) allows old versions
Pragma version^0.8.2 (#638) allows old versions
Pragma version^0.8.0 (#238) allows old versions
Pragma version^0.8.0 (#33) allows old versions
solc-0.8.9 is not recommended for deployment
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
Contract hiDollar (#1049-1197) is not in CapWords
Variable Governable.Proposers (#733) is not in mixedCase
Variable Governable.Approvers (#730) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable Governable._isProposalApproved(uint256).approvedCount (#776) is too similar to Governable.approverCount (#731)
Prevent variables from having similar names.
Additional information: link
takeOwnership() should be declared external:
- Ownable.takeOwnership() (#700-703)
setUserFeeRatio(address,uint256,bool) should be declared external:
- hiDollar.setUserFeeRatio(address,uint256,bool) (#1104-1116)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#383-397)
unpause() should be declared external:
- hiDollar.unpause() (#1126-1128)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#625-632)
setDefaultFeeRatio(uint256) should be declared external:
- hiDollar.setDefaultFeeRatio(uint256) (#1097-1102)
proposeOwner(address) should be declared external:
- Ownable.proposeOwner(address) (#691-695)
proposeAdmin(address) should be declared external:
- Administrable.proposeAdmin(address) (#846-858)
decimals() should be declared external:
- ERC20.decimals() (#320-322)
pause() should be declared external:
- hiDollar.pause() (#1122-1124)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#430-438)
symbol() should be declared external:
- ERC20.symbol() (#303-305)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#346-349)
emitMint(address) should be declared external:
- Mintable.emitMint(address) (#1018-1030)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#411-414)
approveMint(address,uint256,bool) should be declared external:
- Mintable.approveMint(address,uint256,bool) (#999-1016)
name() should be declared external:
- ERC20.name() (#295-297)
getProposalAdmin(bool) should be declared external:
- Administrable.getProposalAdmin(bool) (#826-840)
takeAdmin() should be declared external:
- Administrable.takeAdmin() (#879-894)
setProposer(address,bool) should be declared external:
- Governable.setProposer(address,bool) (#764-774)
proposeMint(uint256) should be declared external:
- Mintable.proposeMint(uint256) (#985-997)
approveAdmin(address,address,bool) should be declared external:
- Administrable.approveAdmin(address,address,bool) (#860-877)
totalSupply() should be declared external:
- ERC20.totalSupply() (#327-329)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#365-368)
setHolder(address) should be declared external:
- Mintable.setHolder(address) (#975-978)
getProposalMint(address) should be declared external:
- Mintable.getProposalMint(address) (#959-973)
setApprover(address,bool) should be declared external:
- Governable.setApprover(address,bool) (#751-762)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#610-612)
collectFee(uint256) should be declared external:
- hiDollar.collectFee(uint256) (#1187-1194)
setFeeCollector(address) should be declared external:
- hiDollar.setFeeCollector(address) (#1090-1095)
Use the external attribute for functions never called from the contract.
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find audit link on the website