Fair blockchain lottery, based on a smart contract
Contract ownership is not renounced (belongs to a wallet)
Contract name (Pltlotto.com - NFT Ticket) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
ERC1155._doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#401-420) ignores return value by IERC1155Receiver(to).onERC1155Received(operator,from,id,amount,data) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#410-418)
ERC1155._doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[],uint256[],bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#422-443) ignores return value by IERC1155Receiver(to).onERC1155BatchReceived(operator,from,ids,amounts,data) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#431-441)
Ensure that all the return values of the function calls are used.
Additional information: link
ERC1155._doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[],uint256[],bytes).response (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#432) is a local variable never initialized
ERC1155._doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes).reason (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#414) is a local variable never initialized
ERC1155._doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[],uint256[],bytes).reason (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#437) is a local variable never initialized
ERC1155._doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes).response (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#410) 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
Address.isContract(address) (@openzeppelin/contracts/utils/Address.sol#26-36) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#32-34)
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#195-215) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#207-210)
Do not use evm assembly.
Additional information: link
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/introspection/IERC165.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/introspection/ERC165.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/security/Pausable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#3) allows old versions
Pragma version=0.8.13 (contracts/PLTNft.sol#2) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol#3) allows old versions
solc-0.8.13 is not recommended for deployment
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Address.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC1155/IERC1155.sol#3) 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.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#122-133):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts/utils/Address.sol#131)
Low level call in Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#178-187):
- (success,returndata) = target.delegatecall(data) (@openzeppelin/contracts/utils/Address.sol#185)
Low level call in Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#54-59):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts/utils/Address.sol#57)
Low level call in Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#151-160):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts/utils/Address.sol#158)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Parameter PLTNft.mint(string,uint256)._amount (contracts/PLTNft.sol#28) is not in mixedCase
Parameter PLTNft.mint(string,uint256)._ipfsHash (contracts/PLTNft.sol#28) is not in mixedCase
Parameter PLTNft.uri(uint256)._id (contracts/PLTNft.sol#65) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
burn(address,uint256,uint256) should be declared external:
- ERC1155Burnable.burn(address,uint256,uint256) (@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol#14-25)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#53-55)
safeTransferFrom(address,address,uint256,uint256,bytes) should be declared external:
- ERC1155.safeTransferFrom(address,address,uint256,uint256,bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#119-131)
safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) should be declared external:
- ERC1155.safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#136-148)
unpause() should be declared external:
- PLTNft.unpause() (contracts/PLTNft.sol#24-26)
pause() should be declared external:
- PLTNft.pause() (contracts/PLTNft.sol#20-22)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#61-64)
balanceOfBatch(address[],uint256[]) should be declared external:
- ERC1155.balanceOfBatch(address[],uint256[]) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#81-97)
burnBatch(address,uint256[],uint256[]) should be declared external:
- ERC1155Burnable.burnBatch(address,uint256[],uint256[]) (@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol#27-38)
mint(string,uint256) should be declared external:
- PLTNft.mint(string,uint256) (contracts/PLTNft.sol#28-44)
setApprovalForAll(address,bool) should be declared external:
- ERC1155.setApprovalForAll(address,bool) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#102-107)
symbol() should be declared external:
- PLTNft.symbol() (contracts/PLTNft.sol#50-52)
setURI(string) should be declared external:
- PLTNft.setURI(string) (contracts/PLTNft.sol#16-18)
name() should be declared external:
- PLTNft.name() (contracts/PLTNft.sol#46-48)
Use the external attribute for functions never called from the contract.
Additional information: link
Variable 'ERC1155._doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[],uint256[],bytes).reason (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#437)' in ERC1155._doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[],uint256[],bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#422-443) potentially used before declaration: revert(string)(reason) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#438)
Variable 'ERC1155._doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes).reason (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#414)' in ERC1155._doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#401-420) potentially used before declaration: revert(string)(reason) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#415)
Variable 'ERC1155._doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes).response (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#410)' in ERC1155._doSafeTransferAcceptanceCheck(address,address,address,uint256,uint256,bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#401-420) potentially used before declaration: response != IERC1155Receiver.onERC1155Received.selector (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#411)
Variable 'ERC1155._doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[],uint256[],bytes).response (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#432)' in ERC1155._doSafeBatchTransferAcceptanceCheck(address,address,address,uint256[],uint256[],bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#422-443) potentially used before declaration: response != IERC1155Receiver.onERC1155BatchReceived.selector (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#434)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.
Additional information: link
Different versions of Solidity are used:
- Version used: ['=0.8.13', '^0.8.0']
- ^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/security/Pausable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC1155/IERC1155.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/Address.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/Context.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/introspection/ERC165.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/introspection/IERC165.sol#3)
- =0.8.13 (contracts/PLTNft.sol#2)
Use one Solidity version.
Additional information: link
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#195-215) is never used and should be removed
Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#54-59) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts/utils/Address.sol#108-114) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#178-187) is never used and should be removed
Address.functionDelegateCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#168-170) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#122-133) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-22) is never used and should be removed
Address.functionStaticCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#141-143) is never used and should be removed
Address.functionCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#89-95) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#151-160) is never used and should be removed
ERC1155._mintBatch(address,uint256[],uint256[],bytes) (@openzeppelin/contracts/token/ERC1155/ERC1155.sol#289-309) is never used and should be removed
Address.functionCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#79-81) is never used and should be removed
Remove unused functions.
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Unable to find whitepaper link on the website
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Token has a considerable age, but social accounts / website are missing or have few users
Token has a considerable age, but average PancakeSwap 30d trading volume is low
Twitter account link seems to be invalid
Unable to find Youtube account