MetaReserve is a Decentralized Reserve Currency Protocol that aims to take the lead in setting a new benchmark in the wild west world of Decentralized Finance (DeFi).
You might have heard from many DeFi projects emphasizing; “Our codes define who we are”. To put it bluntly, being a “DeFi” platform became the perfect excuse to remain anonymous. More importantly, it is a mystery whether these financial instruments or platforms are designed and managed by qualified individuals, which is of direct implication to how sustainable are its economics.
MetaReserve finds an answer to that by being one of the first in the Decentralized Reserve Currency Protocol project to have a visible team of experts from the financial and technological industry, supported by a publicly listed company. Together with veteran financial advisors from Lion Group and the profound team of Raiona, the strategic planning, management and execution of the Treasury will be proposed to the community. This is an important key function for the growth of the Treasury which we do see lacking in most of the current DAOs available in the market.
Through the Treasury of MetaReserve, the Decentralised Autonomous Organisation (DAO) infrastructure empowers and envision a multi-chain enabled Metaverse built for innovations, where its community decides in its investments; partnering or incubating promising blockchain-enabled games and DeFi platforms. A virtual world where its community can witness the birth of new games, explore new DeFi protocols, understand them and be part of each project’s growth. Revenue generated from all partnerships will further grow the Treasury and at the same time, allow cross-collaboration across various blockchain networks can garner a faster and larger community growth.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
EnumerableSet.getValues(EnumerableSet.Bytes4Set).bytes4Array_ (#216) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
TWAPOracleUpdater.updateTWAPOracle(address,uint256) (#1345-1349) ignores return value by twapOracle.updateTWAP(dexPoolToUpdateFrom_,twapEpochPeriodToUpdate_) (#1347)
Ensure that all the return values of the function calls are used.
Additional information: link
VaultOwned.setVault(address) (#1282-1286) should emit an event for:
- _vault = vault_ (#1283)
Emit an event for critical parameter changes.
Additional information: link
VaultOwned.setVault(address).vault_ (#1282) lacks a zero-check on :
- _vault = vault_ (#1283)
Check that the address is not zero.
Additional information: link
ERC20Permit.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (#1188-1210) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= deadline,Permit: expired deadline) (#1197)
Avoid relying on block.timestamp.
Additional information: link
ERC20Permit.constructor() (#1167-1182) uses assembly
- INLINE ASM (#1169-1171)
Do not use evm assembly.
Additional information: link
Counters.decrement(Counters.Counter) (#1109-1111) is never used and should be removed
ERC20._beforeTokenTransfer(address,address,uint256) (#1083-1087) is never used and should be removed
EnumerableSet._at(EnumerableSet.Set,uint256) (#137-140) is never used and should be removed
EnumerableSet._getValues(EnumerableSet.Set) (#142-144) is never used and should be removed
EnumerableSet._insert(EnumerableSet.Set,uint256,bytes32) (#151-161) is never used and should be removed
EnumerableSet._length(EnumerableSet.Set) (#123-125) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (#241-243) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes4Set,bytes4) (#173-175) is never used and should be removed
EnumerableSet.add(EnumerableSet.UInt256Set,uint256) (#440-442) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (#388-390) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (#350-352) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (#279-281) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes4Set,uint256) (#211-213) is never used and should be removed
EnumerableSet.at(EnumerableSet.UInt256Set,uint256) (#478-480) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (#426-428) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (#258-260) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes4Set,bytes4) (#190-192) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UInt256Set,uint256) (#457-459) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (#405-407) is never used and should be removed
EnumerableSet.getValues(EnumerableSet.AddressSet) (#358-366) is never used and should be removed
EnumerableSet.getValues(EnumerableSet.Bytes32Set) (#283-291) is never used and should be removed
EnumerableSet.getValues(EnumerableSet.Bytes4Set) (#215-221) is never used and should be removed
EnumerableSet.insert(EnumerableSet.AddressSet,uint256,address) (#368-374) is never used and should be removed
EnumerableSet.insert(EnumerableSet.Bytes32Set,uint256,bytes32) (#293-299) is never used and should be removed
EnumerableSet.insert(EnumerableSet.Bytes4Set,uint256,bytes4) (#223-229) is never used and should be removed
EnumerableSet.length(EnumerableSet.AddressSet) (#336-338) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (#265-267) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes4Set) (#197-199) is never used and should be removed
EnumerableSet.length(EnumerableSet.UInt256Set) (#464-466) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (#412-414) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (#251-253) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes4Set,bytes4) (#183-185) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UInt256Set,uint256) (#450-452) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (#398-400) is never used and should be removed
SafeMath.average(uint256,uint256) (#749-752) is never used and should be removed
SafeMath.bondingCurve(uint256,uint256) (#758-760) is never used and should be removed
SafeMath.div(uint256,uint256) (#647-649) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#663-673) is never used and should be removed
SafeMath.mod(uint256,uint256) (#687-689) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#703-710) is never used and should be removed
SafeMath.mul(uint256,uint256) (#621-633) is never used and should be removed
SafeMath.percentageAmount(uint256,uint8) (#729-731) is never used and should be removed
SafeMath.percentageOfTotal(uint256,uint256) (#740-742) is never used and should be removed
SafeMath.quadraticPricing(uint256,uint256) (#754-756) is never used and should be removed
SafeMath.sqrrt(uint256) (#713-724) is never used and should be removed
SafeMath.substractPercentage(uint256,uint8) (#736-738) is never used and should be removed
Remove unused functions.
Additional information: link
Variable ERC20._balances (#770) is not in mixedCase
Variable ERC20._allowances (#773) is not in mixedCase
Variable ERC20._totalSupply (#776) is not in mixedCase
Variable ERC20._name (#779) is not in mixedCase
Variable ERC20._symbol (#782) is not in mixedCase
Variable ERC20._decimals (#785) is not in mixedCase
Variable ERC20Permit.DOMAIN_SEPARATOR (#1165) is not in mixedCase
Variable Ownable._owner (#1229) is not in mixedCase
Variable VaultOwned._vault (#1280) is not in mixedCase
Function PowerToken._burnFrom(address,uint256) (#1408-1416) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
ERC20.ERC20TOKEN_ERC1820_INTERFACE_ID (#767) is never used in PowerToken (#1374-1418)
Remove unused state variables.
Additional information: link
symbol() should be declared external:
- ERC20.symbol() (#819-821)
decimals() should be declared external:
- ERC20.decimals() (#837-839)
totalSupply() should be declared external:
- ERC20.totalSupply() (#845-847)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (#853-855)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#867-870)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#888-891)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#907-919)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#933-936)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#952-959)
permit(address,address,uint256,uint256,uint8,bytes32,bytes32) should be declared external:
- ERC20Permit.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (#1188-1210)
nonces(address) should be declared external:
- ERC20Permit.nonces(address) (#1215-1217)
owner() should be declared external:
- Ownable.owner() (#1244-1246)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#1263-1266)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#1272-1276)
vault() should be declared external:
- VaultOwned.vault() (#1291-1293)
burn(uint256) should be declared external:
- PowerToken.burn(uint256) (#1388-1390)
burnFrom(address,uint256) should be declared external:
- PowerToken.burnFrom(address,uint256) (#1404-1406)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find token contract audit
Unable to verify token contract address on the website
Unable to find audit link on the website
Unable to find whitepaper link on the website
Token is marked as scam (rug pull, honeypot, phishing, etc.)
Additional information: link
Young tokens have high risks of price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Token has relatively low CoinGecko rank
Token has relatively low CoinMarketCap rank
Twitter account link seems to be invalid