Closed MillianoConti closed 5 years ago
Auditing time 3 days
Auditing times: 5 days.
@MrCrambo assigned
@danbogd not assigned. You have to finish existing audit.
Auditing time: 4 days.
@danbogd assigned
My report is finished.
Auditing time: 2 days.
@RideSolo assigned
EtherBots smart contract security audit report performed by Callisto Security Audit Department
Сommit hash 8f1f1752cb2942184df695e0442b04a38f0807ba.
In total, 3 issues were reported including:
2 low severity issues.
1 notes.
No critical security issues were found.
In functions name
, symbol
, totalSupply
, balanceOf
, ownerOf
, tokenMetadata
there are return value name is different from return value.
Change the return value name in brackets or delete it.
Once a tokenID approved to an address the token owner cannot re-approve it to another address without resetting the approved address of the token to zero, this mechanism is used to partially solve ERC20 double withdrawal issue but in this case a token is non fungible once the token transferred from an address, the first owner do no posses it anymore and cannot reapprove it.
This implementation require two transactions to set the approved address to another address and can cause compatibility issue with Dapp that uses a non modified ERC721 standard approval function (check reference example for more information here).
https://github.com/RideSolo/NonFungibleToken/blob/master/contracts/NonFungibleToken.sol#L95
https://github.com/RideSolo/NonFungibleToken/blob/master/contracts/NonFungibleToken.sol#L102#L103
Remove the condition that block the owner from resetting approval address for a tokens id, since it does not add any security (just extra gas consumption and complication to reset the address).
Same as ERC-20, ERC-721 is vulnerable to lack of transaction handling mechanism issue. WARNING! This is a very common issue and it already caused millions of dollars losses for lots of token users! More details here.
Add the following code to the transfer(_to address, ...)
function:
require( _to != address(this) );
The audited smart contract can be deployed. Only low severity issues were found during the audit.
https://gist.github.com/yuriy77k/7a811c673d25995b8a57d14d56ab16be
https://gist.github.com/yuriy77k/c16cb068cb75489bb31303f3e9ff2ee9
https://gist.github.com/yuriy77k/d1a1f71ce701674f137d4946c415821a
Audit request
Decentralized Robot Wars on the blockchain. https://etherbots.io/
Source code
https://github.com/EtherBots/NonFungibleToken/tree/master/contracts
Disclosure policy
support@etherbots.io
Platform
ETH
Number of lines:
262