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.
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
Unable to find audit link on the website
Twitter account link seems to be invalid
Unable to find Youtube account
Unable to find Discord account