Microverse is a decentralised VR metaverse that allows users to build, play and engage in a vast world with endless opportunities to create captivating experiences.
MVPToken.constructor(uint256,address[]).defaultOperators (MVPToken.sol#6) shadows:
- ERC777.defaultOperators() (ERC777.sol#211-213) (function)
- IERC777.defaultOperators() (IERC777.sol#125) (function)
Rename the local variables that shadow another component.
Additional information: link
Reentrancy in ERC777._burn(address,uint256,bytes,bytes) (ERC777.sol#403-427):
External calls:
- _callTokensToSend(operator,from,address(0),amount,data,operatorData) (ERC777.sol#413)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
State variables written after the call(s):
- _balances[from] = fromBalance - amount (ERC777.sol#421)
- _totalSupply -= amount (ERC777.sol#423)
Reentrancy in ERC777._send(address,address,uint256,bytes,bytes,bool) (ERC777.sol#376-394):
External calls:
- _callTokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#389)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
State variables written after the call(s):
- _move(operator,from,to,amount,userData,operatorData) (ERC777.sol#391)
- _balances[from] = fromBalance - amount (ERC777.sol#442)
- _balances[to] += amount (ERC777.sol#444)
Reentrancy in ERC777.transfer(address,uint256) (ERC777.sol#145-157):
External calls:
- _callTokensToSend(from,from,recipient,amount,,) (ERC777.sol#150)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
State variables written after the call(s):
- _move(from,from,recipient,amount,,) (ERC777.sol#152)
- _balances[from] = fromBalance - amount (ERC777.sol#442)
- _balances[to] += amount (ERC777.sol#444)
Reentrancy in ERC777.transferFrom(address,address,uint256) (ERC777.sol#277-298):
External calls:
- _callTokensToSend(spender,holder,recipient,amount,,) (ERC777.sol#287)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
State variables written after the call(s):
- _approve(holder,spender,currentAllowance - amount) (ERC777.sol#293)
- _allowances[holder][spender] = value (ERC777.sol#463)
- _move(spender,holder,recipient,amount,,) (ERC777.sol#289)
- _balances[from] = fromBalance - amount (ERC777.sol#442)
- _balances[to] += amount (ERC777.sol#444)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ERC777._burn(address,uint256,bytes,bytes) (ERC777.sol#403-427):
External calls:
- _callTokensToSend(operator,from,address(0),amount,data,operatorData) (ERC777.sol#413)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
Event emitted after the call(s):
- Burned(operator,from,amount,data,operatorData) (ERC777.sol#425)
- Transfer(from,address(0),amount) (ERC777.sol#426)
Reentrancy in ERC777._mint(address,uint256,bytes,bytes,bool) (ERC777.sol#344-365):
External calls:
- _callTokensReceived(operator,address(0),account,amount,userData,operatorData,requireReceptionAck) (ERC777.sol#361)
- IERC777Recipient(implementer).tokensReceived(operator,from,to,amount,userData,operatorData) (ERC777.sol#512)
Event emitted after the call(s):
- Minted(operator,account,amount,userData,operatorData) (ERC777.sol#363)
- Transfer(address(0),account,amount) (ERC777.sol#364)
Reentrancy in ERC777._send(address,address,uint256,bytes,bytes,bool) (ERC777.sol#376-394):
External calls:
- _callTokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#389)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
Event emitted after the call(s):
- Sent(operator,from,to,amount,userData,operatorData) (ERC777.sol#446)
- _move(operator,from,to,amount,userData,operatorData) (ERC777.sol#391)
- Transfer(from,to,amount) (ERC777.sol#447)
- _move(operator,from,to,amount,userData,operatorData) (ERC777.sol#391)
Reentrancy in MVPToken.constructor(uint256,address[]) (MVPToken.sol#6-10):
External calls:
- _mint(msg.sender,initialSupply,,) (MVPToken.sol#9)
- IERC777Recipient(implementer).tokensReceived(operator,from,to,amount,userData,operatorData) (ERC777.sol#512)
- ERC777(Microverse,MVP,defaultOperators) (MVPToken.sol#7)
- _ERC1820_REGISTRY.setInterfaceImplementer(address(this),keccak256(bytes)(ERC777Token),address(this)) (ERC777.sol#73)
- _ERC1820_REGISTRY.setInterfaceImplementer(address(this),keccak256(bytes)(ERC20Token),address(this)) (ERC777.sol#74)
Event emitted after the call(s):
- Minted(operator,account,amount,userData,operatorData) (ERC777.sol#363)
- _mint(msg.sender,initialSupply,,) (MVPToken.sol#9)
- Transfer(address(0),account,amount) (ERC777.sol#364)
- _mint(msg.sender,initialSupply,,) (MVPToken.sol#9)
Reentrancy in ERC777.transfer(address,uint256) (ERC777.sol#145-157):
External calls:
- _callTokensToSend(from,from,recipient,amount,,) (ERC777.sol#150)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
Event emitted after the call(s):
- Sent(operator,from,to,amount,userData,operatorData) (ERC777.sol#446)
- _move(from,from,recipient,amount,,) (ERC777.sol#152)
- Transfer(from,to,amount) (ERC777.sol#447)
- _move(from,from,recipient,amount,,) (ERC777.sol#152)
Reentrancy in ERC777.transferFrom(address,address,uint256) (ERC777.sol#277-298):
External calls:
- _callTokensToSend(spender,holder,recipient,amount,,) (ERC777.sol#287)
- IERC777Sender(implementer).tokensToSend(operator,from,to,amount,userData,operatorData) (ERC777.sol#486)
Event emitted after the call(s):
- Approval(holder,spender,value) (ERC777.sol#464)
- _approve(holder,spender,currentAllowance - amount) (ERC777.sol#293)
- Sent(operator,from,to,amount,userData,operatorData) (ERC777.sol#446)
- _move(spender,holder,recipient,amount,,) (ERC777.sol#289)
- Transfer(from,to,amount) (ERC777.sol#447)
- _move(spender,holder,recipient,amount,,) (ERC777.sol#289)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (Address.sol#26-36) uses assembly
- INLINE ASM (Address.sol#32-34)
Address.verifyCallResult(bool,bytes,string) (Address.sol#195-215) uses assembly
- INLINE ASM (Address.sol#207-210)
Do not use evm assembly.
Additional information: link
Address.functionCall(address,bytes) (Address.sol#79-81) is never used and should be removed
Address.functionCall(address,bytes,string) (Address.sol#89-95) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (Address.sol#108-114) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (Address.sol#122-133) is never used and should be removed
Address.functionDelegateCall(address,bytes) (Address.sol#168-170) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (Address.sol#178-187) is never used and should be removed
Address.functionStaticCall(address,bytes) (Address.sol#141-143) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (Address.sol#151-160) is never used and should be removed
Address.sendValue(address,uint256) (Address.sol#54-59) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (Address.sol#195-215) is never used and should be removed
Context._msgData() (Context.sol#20-22) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (Address.sol#3) allows old versions
Pragma version^0.8.0 (Context.sol#3) allows old versions
Pragma version^0.8.0 (ERC777.sol#3) allows old versions
Pragma version^0.8.0 (IERC1820Registry.sol#3) allows old versions
Pragma version^0.8.0 (IERC20.sol#3) allows old versions
Pragma version^0.8.0 (IERC777.sol#3) allows old versions
Pragma version^0.8.0 (IERC777Recipient.sol#3) allows old versions
Pragma version^0.8.0 (IERC777Sender.sol#3) allows old versions
Pragma version^0.8.0 (MVPToken.sol#1) 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
Low level call in Address.sendValue(address,uint256) (Address.sol#54-59):
- (success) = recipient.call{value: amount}() (Address.sol#57)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (Address.sol#122-133):
- (success,returndata) = target.call{value: value}(data) (Address.sol#131)
Low level call in Address.functionStaticCall(address,bytes,string) (Address.sol#151-160):
- (success,returndata) = target.staticcall(data) (Address.sol#158)
Low level call in Address.functionDelegateCall(address,bytes,string) (Address.sol#178-187):
- (success,returndata) = target.delegatecall(data) (Address.sol#185)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable ERC777._defaultOperators (ERC777.sol#47) is too similar to ERC777.constructor(string,string,address[]).defaultOperators_ (ERC777.sol#62)
Prevent variables from having similar names.
Additional information: link
name() should be declared external:
- ERC777.name() (ERC777.sol#80-82)
symbol() should be declared external:
- ERC777.symbol() (ERC777.sol#87-89)
decimals() should be declared external:
- ERC777.decimals() (ERC777.sol#97-99)
granularity() should be declared external:
- ERC777.granularity() (ERC777.sol#106-108)
totalSupply() should be declared external:
- ERC777.totalSupply() (ERC777.sol#113-115)
balanceOf(address) should be declared external:
- ERC777.balanceOf(address) (ERC777.sol#120-122)
send(address,uint256,bytes) should be declared external:
- ERC777.send(address,uint256,bytes) (ERC777.sol#129-135)
transfer(address,uint256) should be declared external:
- ERC777.transfer(address,uint256) (ERC777.sol#145-157)
burn(uint256,bytes) should be declared external:
- ERC777.burn(uint256,bytes) (ERC777.sol#164-166)
authorizeOperator(address) should be declared external:
- ERC777.authorizeOperator(address) (ERC777.sol#181-191)
revokeOperator(address) should be declared external:
- ERC777.revokeOperator(address) (ERC777.sol#196-206)
defaultOperators() should be declared external:
- ERC777.defaultOperators() (ERC777.sol#211-213)
operatorSend(address,address,uint256,bytes,bytes) should be declared external:
- ERC777.operatorSend(address,address,uint256,bytes,bytes) (ERC777.sol#220-229)
operatorBurn(address,uint256,bytes,bytes) should be declared external:
- ERC777.operatorBurn(address,uint256,bytes,bytes) (ERC777.sol#236-244)
allowance(address,address) should be declared external:
- ERC777.allowance(address,address) (ERC777.sol#253-255)
approve(address,uint256) should be declared external:
- ERC777.approve(address,uint256) (ERC777.sol#262-266)
transferFrom(address,address,uint256) should be declared external:
- ERC777.transferFrom(address,address,uint256) (ERC777.sol#277-298)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Token is not listed at Mobula.Finance
Additional information: link
Token has no active CoinGecko listing / rank
Young tokens have high risks of price dump / death
Token has relatively low CoinMarketCap 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)