Berry Tributes Token Logo

BRY [Berry Tributes] Token

About BRY

Listings

Token 16 months
CoinGecko 16 months
CoinMarketCap 16 months
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: 13 May 2022

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

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.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)"
BerryStake.requestStakingWithdraw(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#77-95) uses a weak PRNG: "stakes.startDate = now - (now % 86400) (contracts/libraries/BerryStake.sol#87)"
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.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)"
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.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.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)
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.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)
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)
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)
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)
Avoid relying on block.timestamp.

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

BerryStake.getNewCurrentVariables(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#141-146) is never used and should be removed
BerryStake.getNewVariablesOnDeck(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#152-157) is never used and should be removed
BerryStake.getTopRequestIDs(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#163-175) is never used and should be removed
SafeMath.add(uint256,uint256) (contracts/libraries/SafeMath.sol#5-9) is never used and should be removed
SafeMath.max(int256,int256) (contracts/libraries/SafeMath.sol#25-27) is never used and should be removed
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
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
Remove unused functions.

Additional information: link

Pragma version^0.5.0 (contracts/BerryGetters.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
Pragma version^0.5.0 (contracts/libraries/BerryStorage.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

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.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)
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.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.unlockDisputeFee(BerryStorage.BerryStorageStruct,uint256) (contracts/libraries/BerryDispute.sol#251-316) compares to a boolean constant:
-last.disputeVotePassed == true (contracts/libraries/BerryDispute.sol#269)
Remove the equality to the boolean constant.

Additional information: link

Different versions of Solidity is 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

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

Additional information: link

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)
didMine(BerryStorage.BerryStorageStruct,bytes32,address) should be declared external:
- BerryGettersLibrary.didMine(BerryStorage.BerryStorageStruct,bytes32,address) (contracts/libraries/BerryGettersLibrary.sol#49-51)
depositStake(BerryStorage.BerryStorageStruct) should be declared external:
- BerryStake.depositStake(BerryStorage.BerryStorageStruct) (contracts/libraries/BerryStake.sol#113-117)
transfer(BerryStorage.BerryStorageStruct,address,uint256) should be declared external:
- BerryTransfer.transfer(BerryStorage.BerryStorageStruct,address,uint256) (contracts/libraries/BerryTransfer.sol#27-30)
allowance(BerryStorage.BerryStorageStruct,address,address) should be declared external:
- BerryTransfer.allowance(BerryStorage.BerryStorageStruct,address,address) (contracts/libraries/BerryTransfer.sol#69-71)
Use the external attribute for functions never called from the contract.

Additional information: link

Holders:


Token is deployed only at one blockchain


Unable to find Youtube account


Unable to find Discord account


Unable to find audit link on the website


Unable to find whitepaper link on the website

No disclosed threats

Price for BRY

News for BRY