What is Orica?
Orica is the ethical funding platform for digital creatives and social impact projects. Our mission is to accelerate wealth equality through digital assets. Orica currently supports artists and social impact organisations (SIOs) to create and sell NFTs. We will shortly release Orica Projects, a new funding and co-royalty solution for artists and social entrepreneurs. With Orica Projects, artists and SIOs will be able to access funding and share creative royalties. Collectors can then invest in early-stage, impactful NFT projects and build portfolios for ethical growth.
Built in Security & Sustainability
Orica uses the Delegated Proof of Stake (DPoS) consensus protocol with the Binance Smart Chain (BSC). This enables secure, quick transactions at low network cost, generally a few cents. BSC also offers negligible energy consumption when compared to Proof of Work (PoW) blockchains like Ethereum.
Orica Offers a Native Token
Orica offers $ORI, a native token with a limited supply of 100M and a deflationary plan through buybacks and token burns. ORI is listed on CoinMarketCap, PancakeSwap, CoinGecko and OricaSwap.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
OricaToken.burnPresaleTokens(uint256) (OricaToken.sol#603-607) contains a tautology or contradiction:
- require(bool,string)(presale_group[msg.sender].frozen_tokens - amount >= 0,Frozen_tokens must be non zero) (OricaToken.sol#604)
OricaToken.burnTeamTokens(uint256) (OricaToken.sol#619-623) contains a tautology or contradiction:
- require(bool,string)(team_group[msg.sender].frozen_tokens - amount >= 0,Frozen_tokens must be non zero) (OricaToken.sol#620)
Fix the incorrect comparison by changing the value type or the comparison.
Additional information: link
OricaToken.unlockPresaleTokens().new_percent (OricaToken.sol#643) is a local variable never initialized
OricaToken.unlockTeamTokens().new_percent (OricaToken.sol#689) 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
OricaToken.externalApproveTo(address,bool,address) (OricaToken.sol#793-800) ignores return value by BEP20Token(contractAddress).approve(spender,uint256(- 1)) (OricaToken.sol#799)
Ensure that all the return values of the function calls are used.
Additional information: link
BEP20Token.allowance(address,address).owner (BEP20Token.sol#419) shadows:
- Ownable.owner() (BEP20Token.sol#297-299) (function)
BEP20Token._approve(address,address,uint256).owner (BEP20Token.sol#574) shadows:
- Ownable.owner() (BEP20Token.sol#297-299) (function)
Rename the local variables that shadow another component.
Additional information: link
OricaToken.addMoneyPresale(address,uint256) (OricaToken.sol#309-330) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now >= Aug142021,The purchase of a token for the Presale stage is not available. Too early.) (OricaToken.sol#312)
- require(bool,string)(now < Sep12021,The purchase of a token for the Presale stage is not available. Too late.) (OricaToken.sol#314)
- now < deadline_for_whitelist (OricaToken.sol#316)
OricaToken.openNextPresaleStage(uint256) (OricaToken.sol#349-366) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now >= Sep12021,Not available for spending. It's too early.) (OricaToken.sol#351)
OricaToken.addMoneyTeam(address,uint256) (OricaToken.sol#495-510) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now < Sep12022,Too late to add money for the team.) (OricaToken.sol#496)
OricaToken.openNextTeamStage(uint256) (OricaToken.sol#529-545) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now >= Sep12022,Not available for spending. It's too early.) (OricaToken.sol#531)
OricaToken.unlockPresaleTokens() (OricaToken.sol#640-670) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now >= Sep12021,Too early) (OricaToken.sol#642)
- now >= Sep12021 (OricaToken.sol#644)
- now >= Oct12021 (OricaToken.sol#647)
- now >= Nov12021 (OricaToken.sol#650)
- now >= Dec12021 (OricaToken.sol#653)
- now >= Jan12022 (OricaToken.sol#656)
- now >= Feb12022 (OricaToken.sol#659)
- now >= Mar12022 (OricaToken.sol#662)
OricaToken.unlockTeamTokens() (OricaToken.sol#686-716) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now >= Sep12022,Too early) (OricaToken.sol#688)
- now >= Sep12022 (OricaToken.sol#690)
- now >= Oct12022 (OricaToken.sol#693)
- now >= Nov12022 (OricaToken.sol#696)
- now >= Dec12022 (OricaToken.sol#699)
- now >= Jan12023 (OricaToken.sol#702)
- now >= Feb12023 (OricaToken.sol#705)
- now >= Mar12023 (OricaToken.sol#708)
Avoid relying on block.timestamp.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.5.16', '^0.5.0', '^0.5.16']
- >=0.5.16 (BEP20Token.sol#1)
- ^0.5.0 (IERC721.sol#1)
- ^0.5.16 (OricaToken.sol#4)
Use one Solidity version.
Additional information: link
BEP20Token._burnFrom(address,uint256) (BEP20Token.sol#588-591) is never used and should be removed
Context._msgData() (BEP20Token.sol#113-116) is never used and should be removed
SafeMath.div(uint256,uint256) (BEP20Token.sol#212-214) is never used and should be removed
SafeMath.div(uint256,uint256,string) (BEP20Token.sol#227-234) is never used and should be removed
SafeMath.mod(uint256,uint256) (BEP20Token.sol#247-249) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (BEP20Token.sol#262-265) is never used and should be removed
SafeMath.mul(uint256,uint256) (BEP20Token.sol#187-199) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.5.0 (IERC721.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
Struct OricaToken.frozen_tokens (OricaToken.sol#64-67) is not in CapWords
Parameter OricaToken.openNextPresaleStage(uint256).increase_percentage (OricaToken.sol#349) is not in mixedCase
Parameter OricaToken.addToWhitelist(address[]).u_addr (OricaToken.sol#408) is not in mixedCase
Parameter OricaToken.delFromWhitelist(address[]).u_addr (OricaToken.sol#424) is not in mixedCase
Parameter OricaToken.extendWhitelistDeadline(uint256).extended_seconds (OricaToken.sol#448) is not in mixedCase
Parameter OricaToken.openNextTeamStage(uint256).increase_percentage (OricaToken.sol#529) is not in mixedCase
Parameter OricaToken.setRole(address,uint256).u_addr (OricaToken.sol#731) is not in mixedCase
Variable OricaToken.is_presale_enable (OricaToken.sol#38) is not in mixedCase
Variable OricaToken.seed_group (OricaToken.sol#40) is not in mixedCase
Variable OricaToken.seed_amount (OricaToken.sol#41) is not in mixedCase
Variable OricaToken.presale_group (OricaToken.sol#43) is not in mixedCase
Variable OricaToken.team_group (OricaToken.sol#45) is not in mixedCase
Variable OricaToken.team_amount (OricaToken.sol#46) is not in mixedCase
Variable OricaToken.advisors_group (OricaToken.sol#48) is not in mixedCase
Variable OricaToken.advisors_amount (OricaToken.sol#49) is not in mixedCase
Variable OricaToken.seed_users (OricaToken.sol#55) is not in mixedCase
Variable OricaToken._is_seed_user (OricaToken.sol#56) is not in mixedCase
Variable OricaToken.presale_users (OricaToken.sol#57) is not in mixedCase
Variable OricaToken._is_presale_user (OricaToken.sol#58) is not in mixedCase
Variable OricaToken.team_users (OricaToken.sol#59) is not in mixedCase
Variable OricaToken._is_team_user (OricaToken.sol#60) is not in mixedCase
Variable OricaToken.advisor_users (OricaToken.sol#61) is not in mixedCase
Variable OricaToken._is_advisor_user (OricaToken.sol#62) is not in mixedCase
Variable OricaToken.allowed_presale (OricaToken.sol#80) is not in mixedCase
Variable OricaToken.allowed_team (OricaToken.sol#81) is not in mixedCase
Variable OricaToken.deadline_for_whitelist (OricaToken.sol#82) is not in mixedCase
Constant OricaToken.Aug142021 (OricaToken.sol#84) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Aug282021 (OricaToken.sol#85) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Sep12021 (OricaToken.sol#86) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Oct12021 (OricaToken.sol#87) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Nov12021 (OricaToken.sol#88) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Dec12021 (OricaToken.sol#89) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Jan12022 (OricaToken.sol#90) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Feb12022 (OricaToken.sol#91) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Mar12022 (OricaToken.sol#92) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Sep12022 (OricaToken.sol#93) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Oct12022 (OricaToken.sol#94) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Nov12022 (OricaToken.sol#95) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Dec12022 (OricaToken.sol#96) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Jan12023 (OricaToken.sol#97) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Feb12023 (OricaToken.sol#98) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OricaToken.Mar12023 (OricaToken.sol#99) is not in UPPER_CASE_WITH_UNDERSCORES
Variable OricaToken._timetamp_last_block (OricaToken.sol#101) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (BEP20Token.sol#114)" inContext (BEP20Token.sol#104-117)
Remove redundant statements if they congest code but offer no value.
Additional information: link
BEP20Token.constructor() (BEP20Token.sol#351-359) uses literals with too many digits:
- _totalSupply = 100000000000000000000000000 (BEP20Token.sol#355)
OricaToken.constructor() (OricaToken.sol#161-171) uses literals with too many digits:
- seed_amount = 5000000000000000000000000 (OricaToken.sol#162)
OricaToken.constructor() (OricaToken.sol#161-171) uses literals with too many digits:
- team_amount = 15000000000000000000000000 (OricaToken.sol#163)
OricaToken.constructor() (OricaToken.sol#161-171) uses literals with too many digits:
- advisors_amount = 10000000000000000000000000 (OricaToken.sol#164)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (BEP20Token.sol#316-319)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (BEP20Token.sol#325-327)
increaseAllowance(address,uint256) should be declared external:
- BEP20Token.increaseAllowance(address,uint256) (BEP20Token.sol#465-468)
decreaseAllowance(address,uint256) should be declared external:
- BEP20Token.decreaseAllowance(address,uint256) (BEP20Token.sol#484-487)
mint(uint256) should be declared external:
- BEP20Token.mint(uint256) (BEP20Token.sol#497-500)
getSeedUsers() should be declared external:
- OricaToken.getSeedUsers() (OricaToken.sol#198-200)
getPresaleUsers() should be declared external:
- OricaToken.getPresaleUsers() (OricaToken.sol#213-215)
getTeamUsers() should be declared external:
- OricaToken.getTeamUsers() (OricaToken.sol#227-229)
getAdvisorsUsers() should be declared external:
- OricaToken.getAdvisorsUsers() (OricaToken.sol#249-251)
addMoneySeed(address,uint256) should be declared external:
- OricaToken.addMoneySeed(address,uint256) (OricaToken.sol#274-287)
openNextPresaleStage(uint256) should be declared external:
- OricaToken.openNextPresaleStage(uint256) (OricaToken.sol#349-366)
startPresale() should be declared external:
- OricaToken.startPresale() (OricaToken.sol#378-381)
stopPresale() should be declared external:
- OricaToken.stopPresale() (OricaToken.sol#393-396)
addToWhitelist(address[]) should be declared external:
- OricaToken.addToWhitelist(address[]) (OricaToken.sol#408-412)
delFromWhitelist(address[]) should be declared external:
- OricaToken.delFromWhitelist(address[]) (OricaToken.sol#424-428)
extendWhitelistDeadline(uint256) should be declared external:
- OricaToken.extendWhitelistDeadline(uint256) (OricaToken.sol#448-455)
allowForAll() should be declared external:
- OricaToken.allowForAll() (OricaToken.sol#467-470)
addMoneyTeam(address,uint256) should be declared external:
- OricaToken.addMoneyTeam(address,uint256) (OricaToken.sol#495-510)
openNextTeamStage(uint256) should be declared external:
- OricaToken.openNextTeamStage(uint256) (OricaToken.sol#529-545)
awardAdvisors(address,uint256) should be declared external:
- OricaToken.awardAdvisors(address,uint256) (OricaToken.sol#567-578)
burn(uint256) should be declared external:
- OricaToken.burn(uint256) (OricaToken.sol#589-591)
burnPresaleTokens(uint256) should be declared external:
- OricaToken.burnPresaleTokens(uint256) (OricaToken.sol#603-607)
burnTeamTokens(uint256) should be declared external:
- OricaToken.burnTeamTokens(uint256) (OricaToken.sol#619-623)
unlockPresaleTokens() should be declared external:
- OricaToken.unlockPresaleTokens() (OricaToken.sol#640-670)
unlockTeamTokens() should be declared external:
- OricaToken.unlockTeamTokens() (OricaToken.sol#686-716)
setRole(address,uint256) should be declared external:
- OricaToken.setRole(address,uint256) (OricaToken.sol#731-733)
externalApprove(address,bool) should be declared external:
- OricaToken.externalApprove(address,bool) (OricaToken.sol#787-790)
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 audit link on the website
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / 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