Berry Tributes Token Logo

BRY [Berry Tributes] Token

About BRY

Listings

Token 3 years
CoinGecko 3 years
CoinMarketCap 3 years
white paper

Berry Data is a transparent community-verified price oracles on BSC. It provides a trustless and decentralized alternative for off-chain data and the infrastructure for DAPPs(decentralized applications) to query off-chain data by properly incentivizing miners to provide data.

Social

Laser Scorebeta Last Audit: 6 June 2023

report
Token seems to be legit.

BerryTransfer (contracts/libraries/BerryTransfer.sol#11-162) contract sets array length with a user-controlled value:
- checkpoints.push(BerryStorage.Checkpoint(uint128(block.number),uint128(_value))) (contracts/libraries/BerryTransfer.sol#153-156)
Do not allow array lengths to be set directly set; instead, opt to add values as needed. Otherwise, thoroughly review the contract to ensure a user-controlled variable cannot reach an array length assignment.

Additional information: link

BerryStake.newStake(BerryStorage.BerryStorageStruct,address) (contracts/libraries/BerryStake.sol#124-135) uses a weak PRNG: "self.stakerDetails[staker] = BerryStorage.StakeInfo(1,now - (now % 86400)) (contracts/libraries/BerryStake.sol#130-133)"
BerryStake.withdrawStake(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#100-108) uses a weak PRNG: "require(bool,string)(now - (now % 86400) - stakes.startDate >= 604800,7 days didn't pass) (contracts/libraries/BerryStake.sol#104)"
BerryStake.init(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#25-70) uses a weak PRNG: "self.uintVars[keccak256(bytes)(timeOfLastNewValue)] = now - (now % self.uintVars[keccak256(bytes)(timeTarget)]) (contracts/libraries/BerryStake.sol#67)"
BerryDispute.unlockDisputeFee(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#251-316) uses a weak PRNG: "stakes.startDate = now - (now % 86400) (contracts/libraries/BerryDispute.sol#271)"
BerryStake.requestStakingWithdraw(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#77-95) uses a weak PRNG: "stakes.startDate = now - (now % 86400) (contracts/libraries/BerryStake.sol#87)"
Do not use block.timestamp, now or blockhash as a source of randomness

Additional information: link

Contract locking ether found:
Contract BerryMaster (contracts/BerryMaster.sol#11-67) has payable functions:
- BerryMaster.fallback() (contracts/BerryMaster.sol#48-66)
But does not have a function to withdraw the ether
Remove the payable attribute or add a withdraw function.

Additional information: link

BerryTransfer.balanceOfAt(BerryStorage.BerryStorageStruct,address,uint256) (contracts/libraries/BerryTransfer.sol#106-127) uses a dangerous strict equality:
- checkpoints[mid].fromBlock == _blockNumber (contracts/libraries/BerryTransfer.sol#117)
BerryDispute.unlockDisputeFee(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#251-316) uses a dangerous strict equality:
- stakes.currentStatus == 4 (contracts/libraries/BerryDispute.sol#279)
Don't use strict equality to determine if an account has enough Ether or tokens.

Additional information: link

BerryDispute.proposeFork(BerryStorage.BerryStorageStruct,address) (contracts/libraries/BerryDispute.sol#195-230) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(self.disputesById[lastID].disputeUintVars[keccak256(bytes)(minExecutionDate)] <= now,Dispute is already open) (contracts/libraries/BerryDispute.sol#213)
- require(bool,string)(now - self.disputesById[lastID].disputeUintVars[keccak256(bytes)(tallyDate)] <= 86400,Time for voting haven't elapsed) (contracts/libraries/BerryDispute.sol#215)
BerryDispute.tallyVotes(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#162-189) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now >= disp.disputeUintVars[keccak256(bytes)(minExecutionDate)],Time for voting haven't elapsed) (contracts/libraries/BerryDispute.sol#167)
BerryStake.withdrawStake(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#100-108) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now - (now % 86400) - stakes.startDate >= 604800,7 days didn't pass) (contracts/libraries/BerryStake.sol#104)
BerryDispute.updateBerry(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#237-245) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now - disp.disputeUintVars[keccak256(bytes)(tallyDate)] > 86400,Time for voting for further disputes has not passed) (contracts/libraries/BerryDispute.sol#243)
BerryStake.requestStakingWithdraw(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#77-95) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(stakes.currentStatus == 1,Miner is not staked) (contracts/libraries/BerryStake.sol#80)
BerryDispute.beginDispute(BerryStorage.BerryStorageStruct,uint256,uint256,uint256) (contracts/libraries/BerryDispute.sol#34-118) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(self.disputesById[lastID].disputeUintVars[keccak256(bytes)(minExecutionDate)] <= now,Dispute is already open) (contracts/libraries/BerryDispute.sol#68)
- require(bool,string)(now - self.disputesById[lastID].disputeUintVars[keccak256(bytes)(tallyDate)] <= 86400,Time for voting haven't elapsed) (contracts/libraries/BerryDispute.sol#70)
BerryDispute.unlockDisputeFee(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#251-316) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now - last.disputeUintVars[keccak256(bytes)(tallyDate)] > 86400,Time for voting haven't elapsed) (contracts/libraries/BerryDispute.sol#266)
- stakes.currentStatus == 4 (contracts/libraries/BerryDispute.sol#279)
Avoid relying on block.timestamp.

Additional information: link

SafeMath.mul(uint256,uint256) (contracts/libraries/SafeMath.sol#33-37) is never used and should be removed
SafeMath.sub(uint256,uint256) (contracts/libraries/SafeMath.sol#39-42) is never used and should be removed
SafeMath.add(uint256,uint256) (contracts/libraries/SafeMath.sol#5-9) is never used and should be removed
BerryStake.getTopRequestIDs(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#163-175) is never used and should be removed
BerryStake.getNewCurrentVariables(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#141-146) is never used and should be removed
Utilities.getMax5(uint256[51]) (contracts/libraries/Utilities.sol#52-76) is never used and should be removed
Utilities.getMin(uint256[51]) (contracts/libraries/Utilities.sol#36-45) is never used and should be removed
SafeMath.max(int256,int256) (contracts/libraries/SafeMath.sol#25-27) is never used and should be removed
BerryStake.getNewVariablesOnDeck(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#152-157) is never used and should be removed
Remove unused functions.

Additional information: link

Pragma version^0.5.0 (contracts/BerryGetters.sol#1) allows old versions
Pragma version^0.5.0 (contracts/libraries/BerryStorage.sol#1) allows old versions
Pragma version^0.5.0 (contracts/BerryMaster.sol#1) allows old versions
Pragma version^0.5.0 (contracts/libraries/BerryGettersLibrary.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

BerryStake.init(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#25-70) uses literals with too many digits:
- BerryTransfer.updateBalanceAtNow(self.balances[address(this)],5000000e18) (contracts/libraries/BerryStake.sol#28)
BerryStake.init(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#25-70) uses literals with too many digits:
- self.uintVars[keccak256(bytes)(total_supply)] += 7500000e18 (contracts/libraries/BerryStake.sol#60)
Use: Ether suffix, Time suffix, or The scientific notation

Additional information: link

Different versions of Solidity are used:
- Version used: ['^0.5.0', '^0.5.16']
- ^0.5.0 (contracts/BerryGetters.sol#1)
- ^0.5.0 (contracts/BerryMaster.sol#1)
- ^0.5.16 (contracts/libraries/BerryDispute.sol#1)
- ^0.5.0 (contracts/libraries/BerryGettersLibrary.sol#1)
- ^0.5.16 (contracts/libraries/BerryStake.sol#1)
- ^0.5.0 (contracts/libraries/BerryStorage.sol#1)
- ^0.5.16 (contracts/libraries/BerryTransfer.sol#1)
- ^0.5.16 (contracts/libraries/SafeMath.sol#1)
- ^0.5.16 (contracts/libraries/Utilities.sol#1)
Use one Solidity version.

Additional information: link

BerryMaster.fallback() (contracts/BerryMaster.sol#48-66) uses assembly
- INLINE ASM (contracts/BerryMaster.sol#51-65)
Do not use evm assembly.

Additional information: link

BerryDispute.vote(BerryStorage.BerryStorageStruct,uint256,bool) (contracts/libraries/BerryDispute.sol#125-156) compares to a boolean constant:
-require(bool,string)(disp.voted[msg.sender] != true,Sender has already voted) (contracts/libraries/BerryDispute.sol#132)
BerryDispute.unlockDisputeFee(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#251-316) compares to a boolean constant:
-last.disputeVotePassed == true (contracts/libraries/BerryDispute.sol#269)
BerryDispute.updateBerry(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#237-245) compares to a boolean constant:
-require(bool,string)(disp.disputeVotePassed == true,vote needs to pass) (contracts/libraries/BerryDispute.sol#242)
BerryDispute.unlockDisputeFee(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#251-316) compares to a boolean constant:
-_request.inDispute[disp.disputeUintVars[keccak256(bytes)(timestamp)]] == true (contracts/libraries/BerryDispute.sol#301)
BerryDispute.tallyVotes(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#162-189) compares to a boolean constant:
-disp.isPropFork == false (contracts/libraries/BerryDispute.sol#175)
BerryDispute.tallyVotes(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#162-189) compares to a boolean constant:
-require(bool,string)(disp.executed == false,Dispute has been already executed) (contracts/libraries/BerryDispute.sol#166)
Remove the equality to the boolean constant.

Additional information: link

Parameter BerryGettersLibrary.isInDispute(BerryStorage.BerryStorageStruct,uint256,uint256)._timestamp (contracts/libraries/BerryGettersLibrary.sol#398) is not in mixedCase
Parameter BerryGettersLibrary.didVote(BerryStorage.BerryStorageStruct,uint256,address)._disputeId (contracts/libraries/BerryGettersLibrary.sol#59) is not in mixedCase
Parameter BerryGettersLibrary.getRequestIdByRequestQIndex(BerryStorage.BerryStorageStruct,uint256)._index (contracts/libraries/BerryGettersLibrary.sol#243) is not in mixedCase
Parameter BerryGettersLibrary.getSubmissionsByTimestamp(BerryStorage.BerryStorageStruct,uint256,uint256)._timestamp (contracts/libraries/BerryGettersLibrary.sol#333) is not in mixedCase
Parameter BerryGetters.getNewValueCountbyRequestId(uint256)._requestId (contracts/BerryGetters.sol#196) is not in mixedCase
Parameter BerryGettersLibrary.getRequestIdByQueryHash(BerryStorage.BerryStorageStruct,bytes32)._queryHash (contracts/libraries/BerryGettersLibrary.sol#262) is not in mixedCase
Parameter BerryDispute.beginDispute(BerryStorage.BerryStorageStruct,uint256,uint256,uint256)._requestId (contracts/libraries/BerryDispute.sol#34) is not in mixedCase
Parameter BerryGetters.allowedToTrade(address,uint256)._amount (contracts/BerryGetters.sol#38) is not in mixedCase
Parameter BerryGetters.balanceOfAt(address,uint256)._blockNumber (contracts/BerryGetters.sol#57) is not in mixedCase
Parameter BerryTransfer.doTransfer(BerryStorage.BerryStorageStruct,address,address,uint256)._to (contracts/libraries/BerryTransfer.sol#79) is not in mixedCase
Parameter BerryDispute.tallyVotes(BerryStorage.BerryStorageStruct,uint256)._disputeId (contracts/libraries/BerryDispute.sol#162) is not in mixedCase
Parameter BerryTransfer.allowedToTrade(BerryStorage.BerryStorageStruct,address,uint256)._user (contracts/libraries/BerryTransfer.sol#135) is not in mixedCase
Parameter BerryGettersLibrary.getRequestUintVars(BerryStorage.BerryStorageStruct,uint256,bytes32)._data (contracts/libraries/BerryGettersLibrary.sol#283) is not in mixedCase
Parameter BerryGetters.getMinedBlockNum(uint256,uint256)._requestId (contracts/BerryGetters.sol#175) is not in mixedCase
Parameter BerryGettersLibrary.retrieveData(BerryStorage.BerryStorageStruct,uint256,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#408) is not in mixedCase
Parameter BerryGetters.didVote(uint256,address)._address (contracts/BerryGetters.sol#77) is not in mixedCase
Parameter BerryGettersLibrary.getDisputeIdByDisputeHash(BerryStorage.BerryStorageStruct,bytes32)._hash (contracts/libraries/BerryGettersLibrary.sol#149) is not in mixedCase
Parameter BerryGetters.balanceOf(address)._user (contracts/BerryGetters.sol#47) is not in mixedCase
Parameter BerryGettersLibrary.getLastNewValueById(BerryStorage.BerryStorageStruct,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#190) is not in mixedCase
Parameter BerryGettersLibrary.getTimestampbyRequestIDandIndex(BerryStorage.BerryStorageStruct,uint256,uint256)._requestID (contracts/libraries/BerryGettersLibrary.sol#347) is not in mixedCase
Parameter BerryTransfer.updateBalanceAtNow(BerryStorage.Checkpoint[],uint256)._value (contracts/libraries/BerryTransfer.sol#151) is not in mixedCase
Parameter BerryGetters.allowance(address,address)._user (contracts/BerryGetters.sol#28) is not in mixedCase
Parameter BerryGettersLibrary.getRequestVars(BerryStorage.BerryStorageStruct,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#301) is not in mixedCase
Parameter BerryGetters.getSubmissionsByTimestamp(uint256,uint256)._requestId (contracts/BerryGetters.sol#278) is not in mixedCase
Parameter BerryGettersLibrary.getUintVar(BerryStorage.BerryStorageStruct,bytes32)._data (contracts/libraries/BerryGettersLibrary.sol#364) is not in mixedCase
Parameter BerryGettersLibrary.getStakerInfo(BerryStorage.BerryStorageStruct,address)._staker (contracts/libraries/BerryGettersLibrary.sol#323) is not in mixedCase
Parameter BerryGettersLibrary.getNewValueCountbyRequestId(BerryStorage.BerryStorageStruct,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#234) is not in mixedCase
Parameter BerryGetters.isInDispute(uint256,uint256)._requestId (contracts/BerryGetters.sol#320) is not in mixedCase
Parameter BerryTransfer.transferFrom(BerryStorage.BerryStorageStruct,address,address,uint256)._from (contracts/libraries/BerryTransfer.sol#40) is not in mixedCase
Parameter BerryDispute.beginDispute(BerryStorage.BerryStorageStruct,uint256,uint256,uint256)._timestamp (contracts/libraries/BerryDispute.sol#34) is not in mixedCase
Parameter BerryDispute.unlockDisputeFee(BerryStorage.BerryStorageStruct,uint256)._disputeId (contracts/libraries/BerryDispute.sol#251) is not in mixedCase
Parameter BerryGetters.getMinersByRequestIdAndTimestamp(uint256,uint256)._timestamp (contracts/BerryGetters.sol#185) is not in mixedCase
Parameter BerryGettersLibrary.didMine(BerryStorage.BerryStorageStruct,bytes32,address)._miner (contracts/libraries/BerryGettersLibrary.sol#49) is not in mixedCase
Parameter BerryTransfer.allowedToTrade(BerryStorage.BerryStorageStruct,address,uint256)._amount (contracts/libraries/BerryTransfer.sol#135) is not in mixedCase
Constant BerryTransfer.stakeAmount (contracts/libraries/BerryTransfer.sol#17) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter BerryTransfer.transfer(BerryStorage.BerryStorageStruct,address,uint256)._amount (contracts/libraries/BerryTransfer.sol#27) is not in mixedCase
Parameter BerryGetters.getTimestampbyRequestIDandIndex(uint256,uint256)._requestID (contracts/BerryGetters.sol#289) is not in mixedCase
Parameter BerryGetters.balanceOfAt(address,uint256)._user (contracts/BerryGetters.sol#57) is not in mixedCase
Parameter BerryDispute.proposeFork(BerryStorage.BerryStorageStruct,address)._propNewBerryAddress (contracts/libraries/BerryDispute.sol#195) is not in mixedCase
Parameter BerryTransfer.transfer(BerryStorage.BerryStorageStruct,address,uint256)._to (contracts/libraries/BerryTransfer.sol#27) is not in mixedCase
Parameter BerryDispute.vote(BerryStorage.BerryStorageStruct,uint256,bool)._supportsDispute (contracts/libraries/BerryDispute.sol#125) is not in mixedCase
Parameter BerryGetters.isInDispute(uint256,uint256)._timestamp (contracts/BerryGetters.sol#320) is not in mixedCase
Parameter BerryGetters.getMinedBlockNum(uint256,uint256)._timestamp (contracts/BerryGetters.sol#175) is not in mixedCase
Parameter BerryGettersLibrary.retrieveData(BerryStorage.BerryStorageStruct,uint256,uint256)._timestamp (contracts/libraries/BerryGettersLibrary.sol#408) is not in mixedCase
Parameter BerryMaster.changeBerryContract(address)._berryContract (contracts/BerryMaster.sol#41) is not in mixedCase
Parameter BerryDispute.vote(BerryStorage.BerryStorageStruct,uint256,bool)._disputeId (contracts/libraries/BerryDispute.sol#125) is not in mixedCase
Parameter BerryGetters.getRequestVars(uint256)._requestId (contracts/BerryGetters.sol#258) is not in mixedCase
Parameter BerryGetters.getAllDisputeVars(uint256)._disputeId (contracts/BerryGetters.sol#114) is not in mixedCase
Parameter BerryTransfer.doTransfer(BerryStorage.BerryStorageStruct,address,address,uint256)._from (contracts/libraries/BerryTransfer.sol#79) is not in mixedCase
Parameter BerryGetters.getDisputeUintVars(uint256,bytes32)._disputeId (contracts/BerryGetters.sol#147) is not in mixedCase
Parameter BerryGetters.didVote(uint256,address)._disputeId (contracts/BerryGetters.sol#77) is not in mixedCase
Parameter BerryGettersLibrary.getMinersByRequestIdAndTimestamp(BerryStorage.BerryStorageStruct,uint256,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#219) is not in mixedCase
Parameter BerryTransfer.approve(BerryStorage.BerryStorageStruct,address,uint256)._spender (contracts/libraries/BerryTransfer.sol#56) is not in mixedCase
Parameter BerryGetters.didMine(bytes32,address)._miner (contracts/BerryGetters.sol#67) is not in mixedCase
Parameter BerryTransfer.approve(BerryStorage.BerryStorageStruct,address,uint256)._amount (contracts/libraries/BerryTransfer.sol#56) is not in mixedCase
Parameter BerryGettersLibrary.getAllDisputeVars(BerryStorage.BerryStorageStruct,uint256)._disputeId (contracts/libraries/BerryGettersLibrary.sol#96) is not in mixedCase
Parameter BerryGetters.getRequestUintVars(uint256,bytes32)._data (contracts/BerryGetters.sol#244) is not in mixedCase
Parameter BerryGetters.getDisputeIdByDisputeHash(bytes32)._hash (contracts/BerryGetters.sol#135) is not in mixedCase
Parameter BerryTransfer.allowance(BerryStorage.BerryStorageStruct,address,address)._spender (contracts/libraries/BerryTransfer.sol#69) is not in mixedCase
Parameter BerryGettersLibrary.getRequestIdByTimestamp(BerryStorage.BerryStorageStruct,uint256)._timestamp (contracts/libraries/BerryGettersLibrary.sol#253) is not in mixedCase
Parameter BerryTransfer.doTransfer(BerryStorage.BerryStorageStruct,address,address,uint256)._amount (contracts/libraries/BerryTransfer.sol#79) is not in mixedCase
Parameter BerryTransfer.balanceOf(BerryStorage.BerryStorageStruct,address)._user (contracts/libraries/BerryTransfer.sol#96) is not in mixedCase
Parameter BerryDispute.beginDispute(BerryStorage.BerryStorageStruct,uint256,uint256,uint256)._minerIndex (contracts/libraries/BerryDispute.sol#34) is not in mixedCase
Parameter BerryTransfer.balanceOfAt(BerryStorage.BerryStorageStruct,address,uint256)._user (contracts/libraries/BerryTransfer.sol#106) is not in mixedCase
Parameter BerryTransfer.balanceOfAt(BerryStorage.BerryStorageStruct,address,uint256)._blockNumber (contracts/libraries/BerryTransfer.sol#106) is not in mixedCase
Parameter BerryGettersLibrary.getRequestUintVars(BerryStorage.BerryStorageStruct,uint256,bytes32)._requestId (contracts/libraries/BerryGettersLibrary.sol#283) is not in mixedCase
Parameter BerryGettersLibrary.getMinedBlockNum(BerryStorage.BerryStorageStruct,uint256,uint256)._timestamp (contracts/libraries/BerryGettersLibrary.sol#205) is not in mixedCase
Parameter BerryGetters.getMinersByRequestIdAndTimestamp(uint256,uint256)._requestId (contracts/BerryGetters.sol#185) is not in mixedCase
Parameter BerryGetters.getUintVar(bytes32)._data (contracts/BerryGetters.sol#302) is not in mixedCase
Parameter BerryGetters.getRequestIdByQueryHash(bytes32)._request (contracts/BerryGetters.sol#223) is not in mixedCase
Parameter BerryGettersLibrary.getMinersByRequestIdAndTimestamp(BerryStorage.BerryStorageStruct,uint256,uint256)._timestamp (contracts/libraries/BerryGettersLibrary.sol#219) is not in mixedCase
Parameter BerryGettersLibrary.changeBerryContract(BerryStorage.BerryStorageStruct,address)._berryContract (contracts/libraries/BerryGettersLibrary.sol#35) is not in mixedCase
Parameter BerryTransfer.allowance(BerryStorage.BerryStorageStruct,address,address)._user (contracts/libraries/BerryTransfer.sol#69) is not in mixedCase
Parameter BerryTransfer.transferFrom(BerryStorage.BerryStorageStruct,address,address,uint256)._to (contracts/libraries/BerryTransfer.sol#40) is not in mixedCase
Parameter BerryMaster.changeDeity(address)._newDeity (contracts/BerryMaster.sol#33) is not in mixedCase
Parameter BerryGetters.getRequestUintVars(uint256,bytes32)._requestId (contracts/BerryGetters.sol#244) is not in mixedCase
Parameter BerryGettersLibrary.changeDeity(BerryStorage.BerryStorageStruct,address)._newDeity (contracts/libraries/BerryGettersLibrary.sol#25) is not in mixedCase
Parameter BerryGetters.didMine(bytes32,address)._challenge (contracts/BerryGetters.sol#67) is not in mixedCase
Parameter BerryGettersLibrary.getDisputeUintVars(BerryStorage.BerryStorageStruct,uint256,bytes32)._disputeId (contracts/libraries/BerryGettersLibrary.sol#161) is not in mixedCase
Parameter BerryGetters.getLastNewValueById(uint256)._requestId (contracts/BerryGetters.sol#165) is not in mixedCase
Parameter BerryGetters.getRequestIdByTimestamp(uint256)._timestamp (contracts/BerryGetters.sol#214) is not in mixedCase
Parameter BerryGettersLibrary.getAddressVars(BerryStorage.BerryStorageStruct,bytes32)._data (contracts/libraries/BerryGettersLibrary.sol#71) is not in mixedCase
Parameter BerryGettersLibrary.getSubmissionsByTimestamp(BerryStorage.BerryStorageStruct,uint256,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#333) is not in mixedCase
Parameter BerryGetters.getSubmissionsByTimestamp(uint256,uint256)._timestamp (contracts/BerryGetters.sol#278) is not in mixedCase
Parameter BerryGetters.allowance(address,address)._spender (contracts/BerryGetters.sol#28) is not in mixedCase
Parameter BerryTransfer.transferFrom(BerryStorage.BerryStorageStruct,address,address,uint256)._amount (contracts/libraries/BerryTransfer.sol#40) is not in mixedCase
Parameter BerryGetters.retrieveData(uint256,uint256)._timestamp (contracts/BerryGetters.sol#330) is not in mixedCase
Parameter BerryGetters.getAddressVars(bytes32)._data (contracts/BerryGetters.sol#89) is not in mixedCase
Parameter BerryGettersLibrary.getTimestampbyRequestIDandIndex(BerryStorage.BerryStorageStruct,uint256,uint256)._index (contracts/libraries/BerryGettersLibrary.sol#347) is not in mixedCase
Parameter BerryGetters.allowedToTrade(address,uint256)._user (contracts/BerryGetters.sol#38) is not in mixedCase
Parameter BerryGetters.getTimestampbyRequestIDandIndex(uint256,uint256)._index (contracts/BerryGetters.sol#289) is not in mixedCase
Parameter BerryDispute.updateBerry(BerryStorage.BerryStorageStruct,uint256)._disputeId (contracts/libraries/BerryDispute.sol#237) is not in mixedCase
Parameter BerryGetters.getDisputeUintVars(uint256,bytes32)._data (contracts/BerryGetters.sol#147) is not in mixedCase
Parameter BerryGettersLibrary.getMinedBlockNum(BerryStorage.BerryStorageStruct,uint256,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#205) is not in mixedCase
Parameter BerryGetters.getRequestIdByRequestQIndex(uint256)._index (contracts/BerryGetters.sol#205) is not in mixedCase
Parameter BerryGettersLibrary.didVote(BerryStorage.BerryStorageStruct,uint256,address)._address (contracts/libraries/BerryGettersLibrary.sol#59) is not in mixedCase
Parameter BerryGettersLibrary.getDisputeUintVars(BerryStorage.BerryStorageStruct,uint256,bytes32)._data (contracts/libraries/BerryGettersLibrary.sol#161) is not in mixedCase
Parameter BerryGettersLibrary.isInDispute(BerryStorage.BerryStorageStruct,uint256,uint256)._requestId (contracts/libraries/BerryGettersLibrary.sol#398) is not in mixedCase
Parameter BerryGetters.retrieveData(uint256,uint256)._requestId (contracts/BerryGetters.sol#330) is not in mixedCase
Parameter BerryGettersLibrary.didMine(BerryStorage.BerryStorageStruct,bytes32,address)._challenge (contracts/libraries/BerryGettersLibrary.sol#49) is not in mixedCase
Parameter BerryGetters.getStakerInfo(address)._staker (contracts/BerryGetters.sol#268) is not in mixedCase
Follow the Solidity naming convention.

Additional information: link

didMine(BerryStorage.BerryStorageStruct,bytes32,address) should be declared external:
- BerryGettersLibrary.didMine(BerryStorage.BerryStorageStruct,bytes32,address) (contracts/libraries/BerryGettersLibrary.sol#49-51)
getAllDisputeVars(uint256) should be declared external:
- BerryGetters.getAllDisputeVars(uint256) (contracts/BerryGetters.sol#114-120)
getRequestQ() should be declared external:
- BerryGetters.getRequestQ() (contracts/BerryGetters.sol#231-233)
getUintVar(bytes32) should be declared external:
- BerryGetters.getUintVar(bytes32) (contracts/BerryGetters.sol#302-304)
depositStake(BerryStorage.BerryStorageStruct) should be declared external:
- BerryStake.depositStake(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#113-117)
allowance(BerryStorage.BerryStorageStruct,address,address) should be declared external:
- BerryTransfer.allowance(BerryStorage.BerryStorageStruct,address,address) (contracts/libraries/BerryTransfer.sol#69-71)
transfer(BerryStorage.BerryStorageStruct,address,uint256) should be declared external:
- BerryTransfer.transfer(BerryStorage.BerryStorageStruct,address,uint256) (contracts/libraries/BerryTransfer.sol#27-30)
Use the external attribute for functions never called from the contract.

Additional information: link

Holders:


Average 30d PancakeSwap liquidity is less than $100. Token is either dead or inactive.


Average 30d number of PancakeSwap swaps is less than 1. Token is either dead or inactive.


Token is deployed only at one blockchain


Twitter account link seems to be invalid


Unable to find Youtube account


Unable to find Discord account


Unable to find audit link on the website

No disclosed threats

Price for BRY